CSS的更新速度很快,每年都会有新的规范发布,其中一些新特性可能并不为常用,但了解这些新特性有助于你在开发过程中选择最合适的解决方案。以下是一些在CSS中比较常见的新特性:
- CSS Variables: 使用自定义属性可以在CSS中创建可以在整个文档中重复使用的变量。
 
:root {
  --main-bg-color: coral;
}
 
body {
  background-color: var(--main-bg-color);
}
- CSS Calc(): 使用calc()可以在值中执行基本数学运算。
 
.box {
  width: calc(100% - 20px);
}
- CSS Shapes: 利用shape属性,可以定义矩形或图片形状的CSS样式。
 
.box {
  shape-outside: circle();
}
- CSS Mix-Blend-Mode: 混合不同图层的时候,可以使用混合模式。
 
.layer1 {
  mix-blend-mode: multiply;
}
- CSS Custom Properties and Values Formats: 自定义属性和值格式允许创建自定义的CSS属性和值类型。
 
@property --main-text-color {
  syntax: '#rrggbb';
  inherits: true;
  initial-value: #ff00ff;
}
 
.my-element {
  background-color: var(--main-text-color);
}
- CSS Regions: 使用CSS Regions可以控制文本的流动和布局。
 
article {
  flow-from: region-1;
  flow-into: region-2;
}
 
#region-1 {
  region-fragment: region-after;
}
- CSS Filters: 提供各种图像效果,如模糊,对比度调整等。
 
img {
  filter: blur(5px);
}
- CSS Images: 使用CSS Image Values,可以在CSS中直接使用图像。
 
.icon {
  background-image: image('icon.png');
}
- CSS Overflow: 使用新的overflow属性,可以创建自定义的滚动条。
 
.scrollable {
  overflow-y: overlay;
}
- CSS Writing-Mode: 改变文本的书写方向。
 
.vertical-text {
  writing-mode: vertical-rl;
}
- CSS Initial Letter: 初始字母特性允许你设置文本的第一个字母的样式。
 
p:first-letter {
  font-size: 200%;
}
- CSS Initial Value: 初始值特性允许你为属性设置初始值。
 
.my-element {
  padding: initial(padding);
}
- CSS Containment: 控制元素内的渲染,性能优化。
 
section {
  contain: style layout;
}
- CSS Painting: 使用CSS Custom Paint API,可以在Canvas上绘制自定义图形。
 
ctx.fillStyle = {
  paint: 'myPaint'
};
 
ctx.fillRect(0, 0, 100, 100);
- CSS Type Layout: 使用新的CSS Layout API可以控制文本布局。
 
.text {
  layout-flow: horizontal;
}
- CSS Logical Properties: 使用逻辑属性可以创建对称的布局,无论方向如何改变都可