即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

CSS自定义属性制作动画

微信 W3cplus 12℃ 0评论
本文目录
[隐藏]

CSS自定义属性又称为CSS的变量或者原生变量。其和CSS处理器里的变量还是略有不同,但这篇文章我们要聊的并不是这个东东,咱们想聊聊CSS自定义属性怎么制作动画。

在继续之前,咱们都知道现在制作Web动画一般是通过CSS的Animation或者Web Animation API来完成(也就是JavaScript制作动画)。但有了CSS自定义属性之后,配合简单的几行JavaScript代码,也可以实现一些动画效果。那么CSS自定义属性是如何制作动画呢?

如果你感兴趣的,请继续…

1.CSS自定义属性

CSS自定义属性最早称之为CSS变量,更官方一点的称谓是CSS自定义属性级联变量

官方对CSS变量是这样描述的:

变量,是标识符和可以用任何常规值替代值之间的关联,使用var()函数表示法:var(- example-variable)返回--example-variable的值 。

对CSS自定义属性是这样描述的:

自定义属性,这是表单的特殊属性 --* 这里*表示变量名称。这些用于定义给定变量的值:--example-variable:20px; 是一个CSS声明,使用自定义 --*属性将CSS变量--example-variable的值设置为20px

2.CSS自定义属性的使用方法

为了能更好的理解后面的内容,先简单的回忆一下CSS自定义属性的使用方法。

可以像下面那样先声明一个变量:

然后在需要使用的地方通过var()函数来调用:

这个时候body的背景颜色是green。如果你想让body背景颜色变成gray时,你只需要修改--primary-color。看上去是不是像CSS处理器中变量的使用方法。

是不是很简单,如果你觉得就这点内容不够深入,可以阅读早前译的一篇文章《深入学习CSS自定义属性》。这里就不再深入,把篇幅留给后面的内容。

3.CSS制作动画

CSS制作动画已经不是什么新课题了,大家在平常的业务中或许已经使用过了。主要是通过CSS的@keyframesanimation来完成。

比如@wentin去年在第三次CSS开发才大会上分享的胡子抖动的动画

上面这个小胡子是纯CSS代码绘制的哟,而且@wentin有一个特别有意思的项目,就是使用CSS绘制很多小Icon,这里特别推荐一下,感兴趣的猛击这里查看

回到我们今天的话题上来,动画通过@keyframes声明了shakeRightshakeLeft两个动画,然后在伪元素::before::after调用这两个动画。也就是你上面看到的效果。

4.CSS自定义属性制作动画

这里开始才是我们今天的关键。假设在上面的示例基础上,我把@keyframesanimation干掉。然后声明三个变量:

在调用的时候,可能通过var()来调用。比如说定位胡子的位置left

这样其实我们的left值是0.1并不是我们想要的,那么很简单,可以借助calc()函数来做一下处理:

这个时候left的值就是100px

那问题来了,我们怎么让小胡子动起来呢?这个时候需要借助JavaScript来完成。我们可以通过setProperty()方法重置在:root{}中声明的变量,比如:

通过mousemove事件,改变了--mouse-x的值。这里需要特别注意了,我们给--mouse-x传了一个默认值(xPos - ww) / 25+"deg"。那么回到我们的示例中来:

使用类似的方法,添加JavaScript代码:

这个时候你在屏幕中移动鼠标,能看到小胡子左右能移动,而且胡子也在上下抖动:

你也可以点击这里浏览全屏的动画效果

是不是很简单,配合一定的事件,通过setProperty()方法改变对应的变量值。那么在实际中运用类似原理的地方有很多,比如说下面的两个示例:

移动鼠标改变图片的边框大小和模糊度:

移动鼠标改变图片的旋转角度值:

基于这样的思路,你也能很轻松的实现不同的动画效果,如果在移动端上,你也可以配合重力感应或者陀螺仪等功能,实现一些更有创意的动效。

5.总结

CSS新增的自定义属性是个很有意思的特性,除了能让我更好的管理我们的代码,实现类似CSS处理器的一些特性之外。还可以通过setProperty()配合JavaScript的一些事件实现一些动画效果。正如上文中提到的动效示例。当然CSS自定义属性的其它功能还没有被我们挖掘出来,如果你发现了其更有意思的特性,欢迎与我们一起分享。

文章涉及到图片和代码,如果展示不全给您带来不好的阅读体验,欢迎点击文章底部的 阅读全文。如果您觉得小站的内容对您的工作或学习有所帮助,欢迎关注此公众号。





W3cplus.com

————————————

记述前端那些事,引领web前沿


长按二维码,关注W3cplus



长按二维码,关注”大漠扯CSS”小密圈

转载请注明:CodingBlog » CSS自定义属性制作动画

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情
(2)个小伙伴在吐槽
  1. 优秀
    风继续吹2017-02-24 00:51 回复
  2. 兼容性差吧
    Object2017-02-27 16:19 回复