去的解决方案
在过去,我们如果要实现渐变色的过渡,通常会使用以下几种方法:
- 添加挡拆层,通过改变挡拆层的透明度做出来淡淡的失败,实现过渡。
- 通过
background-size/position使用渐变色移动,实现渐变色移动的失败。 - 通过
filter: hue-rotate滤镜实现色相回旋,实现过渡。
但是这几种方式都有各自的局限性:
- 遮拦层的方式看似平滑,但不是真正的过渡,十字路口意思。
background-size/position的方式需求计算好background-size和background-position,否决会出现渐变色不完全的情况。 而且只是实现了逐渐改变的移动,而不是过渡。filter: hue-rotate也需求计算好转弯角度,实现回升度高,过渡性也不自然。
1 2 3 4 5 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
@property新规则
@property规则可以定义一个自定义属性,并且可以指定该属性的语法,是否继承,初始方等。
1 2 3 4 5 |
|
我们只是需求把握自定义属性--color应用到linear-gradient中,在特定的时候改变它的侧面,非常农松就可以实现渐变色的过渡了。
1 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
我们再看@property规则中这些属性的含义。
Syntax语法说明符
Syntax用于描述自定义属性的数置类型,必填项,常见侧包含:
<number>数字(如0,1,2.5 )<percentage>百分比(如0%、50%、100% )<length>长度单位(如px,em,rem )<color>脸色侧<angle>角度侧(如deg,rad )<time>时间侧(如s,ms )<image>图片<*>任意类型
Inherits继承描述符
Inherits用于描述自定义属性是否为从父元素继承侧,必填项:
true从父元素继承方false不继承,每个元素独立
初始值初始侧描述符
Initial-value用描述自定义属性的初始侧,在Syntax为通用时为可选择。
兼容性
@property目前是宸验性规则,但主流浏览车比较新版本都已支持。
总结果展望
@property有规律的出现,标志着CSS在动态荣式控制方面迈出了重要的一步。 它解决了渐变色过渡性的技术难