经常被忽略的几个CSS3属性之强大应用(一、timing-function: steps() 二、animation-direction  三、timing-function: cubic-bezier())

一、timing-function: steps()

  一开始在使用CSS3的时候并没有太注意这个timing-function,只是注意到自定义贝塞尔曲线。

  1)一个项目中的实例

  先来看看左边加了steps和右边没加的区别。左边的是一锤一锤的,右边会出现影子。

  【注意下面这个demo在firefox中不能执行,只能在chrome中执行,因为我动画的是“background-image”属性】

  代码如下,我只把关键的几个代码贴出来了,详细的可以

.btn-pay {
02   background: url(t_btn-pay.png) no-repeat -30px;
03   animation: pay-interval 0.5s steps(1) infinite;
04 }
05 .btn-pay2 {
06   animation: pay-interval 0.5s linear infinite;
07 }
08 @keyframes pay-interval {
09   from {
10     background-image: url(t_btn-pay.png);
11   }
12   30% {
13     background-image: url(t_btn-pay-active.png);
14   }
15   to {
16     background-image: url(t_btn-pay.png);
17   }
18 }

  2)参数说明

  语法如下:  

  a. 第一个参数指定了时间函数中的间隔数量(必须是正整数),这个间隔数量作用用于两个关键帧之间,也就是form与30%之间、30%与to之间。

  b. 第二个参数可选,接受 start 和 end 两个值,指定在每个间隔的起点或是终点发生阶跃变化,默认为 end。

  我在CSS中设置了1(这个例子中start与end区别不大),也就是一步一步动画,而如果不设置,那其实里面就会有多步操作,就会出现影子。

  国外有篇文章中写了个例子,可以区分这两个值的区别,demo链接可以

具体的原理可以在网上搜索。

1 .contain-car {
2   animation: drive 4s steps(4, end) infinite;
3 }
4 .contain-car-2 {
5   animation: drive 4s steps(4, start) infinite;
6 }

  3)通过sprite图片制作动画

  通过合成的图片,再设置个间隔数,就能出现动画了,例如下面的这张loading图片,

  二、animation-direction

  animation-direction 定义是否应该轮流反向播放动画,选项有normal、alternate(交替)、reverse(反向)等。

  1)一个项目中的实例

  左边的抖动明显要流畅很多,而右边的抖动在完成100%以后就直接跳回到0%的状态。

  代码如下,我只把关键的几个代码贴出来了,详细的可以查看这里

01 .img1 {
02   animation: tel-rotate 1s linear infinite alternate;
03 }
04 .img2 {
05   animation: tel-rotate 1s linear infinite;
06 }
07 @keyframes tel-rotate {
08   from {
09     -webkit-transform: rotate(-20deg);
10     transform: rotate(-20deg);
11   }
12   to {
13     -webkit-transform: rotate(40deg);
14     transform: rotate(40deg);
15   }
16 }

  2)CSS3动画帧数计算器

  在做这个抖动的时候,一开始没有注意到这个属性,后面查到有这么一个CSS3动画帧数计算器。

  并注意到这个里面来回滚动的动画非常流畅。关键帧的计算是蛮有讲究的,里面还有些算法了,网上相关资料也蛮多的。

  三、timing-function: cubic-bezier()

  自定义贝塞尔曲线函数,通过设置四个参数,可以控制动画的速度。

  平时使用的ease、linear、ease-in等,其实也是输入了四个参数后得到的结果。

  1)一个网上的实例

  通过自定义可以组织比较复杂的合成动画,例如球跌落到地上的情景,点击查看在线代码

  当我看到这个实例的时候,我是蛮震惊的,我一直以为这种动画需要与JavaScript配合才行。

  图片来自于网络,这篇文章从国外翻译过来的,里面的原则是迪士尼动画总结的。

  2)贝塞尔辅助工具

  在easings.net这个网页上,可以查看各种缓动的效果。

  在cubic-bezier.com中,可以在线制作,拖动红色或蓝色的那两个点,可以自动显示相应的参数。

详见:http://buluo.qq.com/p/detail.html?bid=208664&pid=1336870-1466332632&from=grp_sub_obj

时间: 2024-10-29 10:30:44

经常被忽略的几个CSS3属性之强大应用(一、timing-function: steps() 二、animation-direction  三、timing-function: cubic-bezier())的相关文章

CSS3属性的兼容 什么是弹性和布局

CSS3新特性,兼容性,兼容方法总结 css3手册css3手册 边框 border-radius 用于添加圆角效果 语法: border-radius:[ <length> | <percentage> ]{1,4} [ / [ <length> | <percentage> ]{1,4} ]?<length>:用长度值设置对象的圆角半径长度.不允许负值<percentage>:用百分比设置对象的圆角半径长度.不允许负值 实例: bo

如何处理CSS3属性前缀(转载)总结

今天闲来无聊,重新来说说CSS3前缀的问题.在春节前和@一丝姐姐说起Sass中有关于gradient的mixins.姐姐说: 为什么还要用mixin呢?为什么不使用Autoprefixer?使用Autoprefixer,只需要输入一行代码,编译器帮你做了一切,还纠结个毛mixin. 姐姐的一句话让我汗颜,我还在思考着如何让Sass来写Gradient,或者类似这样需要带前缀的CSS3属性.也这样让我在思考,那么有了Autoprefixer这样的后处理,Sass中有关于CSS3的mixins是不是

如何处理CSS3属性前缀

CSS3的属性为什么要带前缀 使用过CSS3属性的同学都知道,CSS3属性都需要带各浏览器的前缀,甚至到现在,依然还有很多属性需要带前缀.这是为什么呢? 我的理解是,浏览器厂商以前就一直在实施CSS3,但它还未成为真正的标准.为此,当一些CSS3样式语法还存在波动时,它们提供针对流星器的前缀.现在主要流行的浏览器内核主要有: Trident内核:主要代表为IE浏览器 Gecko内核:主要代表为Firefox Presto内核:主要代表为Opera Webkit内核:产要代表为Chrome和Saf

CSS3属性+iconfont字体图标的使用方法

CSS3属性文本阴影:text-shadow:水平阴影 垂直阴影 模糊度 颜色: 可以多组值共同存在,用逗号隔开多层文本阴影的设置:text-shadow:第一层,第二层,第三层: 文本换行: 在单词内部换行: word-wrap:: normal:默认值,不允许在单词内部换行. break-word:允许单词内部换行. word-break:: break-all 允许在单词内部换行 keep-all 允许在换行点换行,单词内部不换行盒子阴影: box-shadow:水平阴影 垂直阴影 模糊度

常用css3属性

整理下日常用到的一些css3属性 1.颜色rgba()  rgb表示红.绿.蓝三个通道的颜色,整数取值范围0~255 + alpha透明通道:值从0到1 使用rgba的a透明值和opacity的区别是: opacity能把所有子元素都带有透明效果,所以通常会单独用一个定位层来设定opacity透明. rgba中的a只改变当前元素的透明. 2.盒子阴影 box-shadow: x轴偏移量  y轴偏移量  模糊半径  阴影的尺寸  阴影的颜色   inset内部阴影|outset外部阴影 偏移量为正

[一天学一个CSS3属性]之二:box-shadow

今天比较忙,没能好好看新东西,就记录一个常用的CSS3属性吧:box-shadow,表示阴影,如果设置了border-radius圆角,则阴影也是圆角 box-shadow目前是IE9及以上和其他现代浏览器都支持的属性了. 语法: Formal syntax: none | [inset? && [ <offset-x> <offset-y> <blur-radius>? <spread-radius>? <color>? ] ]

H5、CSS3属性的支持性以及flex

一.项目中用到一个flex属性,但是应用了flex的父容器只设置了width,没有设置height,此时每一个应用了上面提到的属性的样式的div都重叠在了一起,在IE10,IE11出问题,IE9没有问题.(待深入研究) 二.距离上一次发布<五大主流浏览器 HTML5 和 CSS3 兼容性大比拼>转眼已过去一年,在这一年里,浏览器领域的竞争愈演愈烈.Firefox 成为新的“版本帝”但依然未能摆脱被 Chrome 超越的命运,支持更多标准的 IE10 将随着 Windows 8 在10月底正式发

CSS3属性之一:border-radius

语法: border-radius : none | <length>{1,4} [ / <length>{1,4} ]? 相关属性: border-top-right-radius , border-bottom-right-radius , border-bottom-left-radius , border-top-left-radius 取值: <length>: 由浮点数字和单位标识符组成的长度值.不可为负值. border-top-left-radius:

CSS3 属性组参考资料

CSS 属性组: 动画 背景 边框和轮廓 盒(框) 颜色 内容分页媒体 定位 可伸缩框 字体 生成内容 网格 超链接 行框 列表 外边距 Marquee 多列 内边距 分页媒体 定位 打印 Ruby 语音 表格 文本 2D/3D 转换 过渡 用户界面 "CSS" 列指示该属性是在哪个 CSS 版本(CSS1.CSS2 或 CSS3)中定义的. CSS3 动画属性(Animation) 属性 描述 CSS @keyframes 规定动画. 3 animation 所有动画属性的简写属性,