CSS3新特性+less实验——animation

自从CSS3推出animation以来,一大批H5应用纷纷利用animation来制作以往需要JS或FLASH才能制作出的特效。今天就来看看animation的庐山真面目吧。

实验对象:animation

animation可以被用来定义一组动画效果,此效果可以被应用在任何元素之上,并且可以通过它提供的各项参数精确控制动画的细节。

语法

animation:[[ animation-name ] || [ animation-duration ] || [ animation-timing-function ] || [ animation-delay ] || [ animation-iteration-count ] || [ animation-direction ]]

说明

animation-name:动画名称,必须与@keyframes配合使用,所有动画由@keyframes单独定义,在元素样式中通过animation-name来调用

animation-duration:指定动画的持续时间,单位s或ms

animation-timing-function :指定过渡类型,即速度虽时间的变化幅度,取值范围与transform的timing-function一样。

animation-delay:定义动画开始前的延迟时间,单位s或ms

animation-iteration-count :指定动画循环次数。值可以为数字,也可以为infinite代表无限循环

animation-direction:动画进行的方向,取值为normal[正常方向]和alternate[正常与反向交替]

@keyframes:此属性单独使用,不在元素样式中,以下是一个示例:

@-webkit-keyframes animations{
    0%{-webkit-transform:translate(0,0);}
    50%{-webkit-transform:translate(100px,100px);}
    100%{-webkit-transform:translate(100px,0);}
}

我们看到,它的基本格式为:

@-浏览器前缀-keyframes 动画名称{

0% {这里定义一些transform效果}

50% {这里定义一些transform效果}

100% {这里定义一些transform效果}

……

}

这里的百分比表示的是时间的长度,总长度为animation-duration里定义的时间。

实例

由于@keyframes定义起来太过繁琐,还包括要兼容不同的浏览器,所以这里我们直接推荐一些成熟的animation组件——animate.css,免去了大家编写@keyframes效果的麻烦,当然,如果要做出更精致的动画来,在大家熟悉该属性的用法后就可以自己定义吊炸天的动画效果了。

animate.css官网下载

HTML

……
 <title>CSS3新特性实验——animation</title>
    <link rel="stylesheet" href="animate.css" type="text/css"/>
    <link rel="stylesheet" href="style.css" type="text/css"/>
</head>
<body>
    <div class="content">

        <div class="box1"></div>
    </div>
</body>
</html>

这里要注意,animate.css要在style.css之前引入,这也是所有前端制作中应该遵循的规则:插件在自定义样式与脚本之前引入,防止插件样式和脚本覆盖自定义样式和脚本,并且自定义样式要调用插件中的样式,所以要确保插件在自定义样式之前加载,才能保证调用时可以找到相关对象。

less


.animation(@n:fly,@t:2s,@fn:ease-in-out,@i:infinite,@dur:alternate){
  animation: @n @t @fn @i @dur;
  -webkit-animation: @n @t @fn @i @dur;
  -o-animation: @n @t @fn @i @dur;
  -moz-animation: @n @t @fn @i @dur;
}

.content {
  width: 1400px;
  height: 600px;
  border: 2px solid #ccc;
  margin-top: 100px;
  margin-left: 100px;
}

.box {
  width: 100px;
  height: 100px;
  background: blue;
  float: left;
  margin-right: 100px;
}

.box1{
  .box;
  .animation(slideOutUp);
}

CSS

.content {
  width: 1400px;
  height: 600px;
  border: 2px solid #ccc;
  margin-top: 100px;
  margin-left: 100px;
}
.box {
  width: 100px;
  height: 100px;
  background: blue;
  float: left;
  margin-right: 100px;
}
.box1 {
  width: 100px;
  height: 100px;
  background: blue;
  float: left;
  margin-right: 100px;
  animation: slideOutUp 2s ease-in-out infinite alternate;
  -webkit-animation: slideOutUp 2s ease-in-out infinite alternate;
  -o-animation: slideOutUp 2s ease-in-out infinite alternate;
  -moz-animation: slideOutUp 2s ease-in-out infinite alternate;
}

animate.css中的slideOutUp动画定义部分:


@-webkit-keyframes slideOutUp {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  100% {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

@keyframes slideOutUp {
  0% {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
  }

  100% {
    visibility: hidden;
    -webkit-transform: translate3d(0, -100%, 0);
    transform: translate3d(0, -100%, 0);
  }
}

效果

动画开始0.5s时的状态

动画开始后0.8s时的状态

动画开始后1.2s时的状态

动画开始后1.6s时的状态

动画开始后2.1s时的状态

为了方便大家看清楚动画的变化过程与时间的关系,我特意在页面加入了秒表计时器。从最终效果我们可以看出:

1、我们设置的动画时间为2s,而动画slideOutUp里定义时间100%时元素运动到自身高度的100%的反方向处( transform: translate3d(0, -100%, 0);),这里元素高度为100px,所以它在2秒时运动到相对自己-100px的地方,然后开始恢复到原始状态。

2、从图中效果我们可以看出,从0-0.8s,元素运动的幅度占到整个运动幅度的40%,从0.8s-1.2s的运动占了整个运动幅度的40%,而从1.2s到2.0s,只运动了整个运动幅度的20%,这个就是因为我们设置了timing-function为ease-in-out。(由慢到快再到慢),大家可以自己改为其他过渡方式看看又会是怎样的效果。

3、我们这里动画方向设置为交替进行,所以元素恢复到初始状态时也是平滑过渡的,但是如果将动画方向设置为normal,在元素运动到-100px后,就会很生硬的瞬间跳回到初始位置,这个大家可以自己做实验验证啦,大家还可以把动画进行的次数改为1试试看有什么效果。

好啦,animation就讲到这里啦,其他各种效果其实就是不同参数组合的结果,千变万化,不离其宗,通过本文掌握了基本原理和写法,其他的就 so easy啦。

时间: 2024-08-07 20:05:48

CSS3新特性+less实验——animation的相关文章

Atitti css3 新特性attilax总结

图片发光效果2 透明渐变效果2 文字描边2 背景拉伸2 CSS3 选择器(Selector)4 @Font-face 特性7 Word-wrap & Text-overflow 样式9 Word-wrap9 Text-overflow10 文字渲染(Text-decoration) 描边12 CSS3 的多列布局(multi-column layout)13 边框和颜色(color, border)14 CSS3 的渐变效果(Gradient)15 线性渐变15 径向渐变16 CSS3 的阴影(

[转]深入了解 CSS3 新特性

简介 CSS 即层叠样式表(Cascading Stylesheet).Web 开发中采用 CSS 技术,可以有效地控制页面的布局.字体.颜色.背景和其它效果.只需要一些简单的修改,就可以改变网页的外观和格式.CSS3 是 CSS 的升级版本,这套新标准提供了更加丰富且实用的规范,如:盒子模型.列表模块.超链接方式.语言模块.背景和边框.文字特效.多栏布局等等,目前有很多浏览器已经相继支持这项升级的规范,如:Firefox.Chrome.Safari.Opera 等等.在 Web 开发中采用 C

深入了解 CSS3 新特性

简介 CSS 即层叠样式表(Cascading Stylesheet).Web 开发中采用 CSS 技术,可以有效地控制页面的布局.字体.颜色.背景和其它效果.只需要一些简单的修改,就可以改变网页的外观和格式.CSS3 是 CSS 的升级版本,这套新标准提供了更加丰富且实用的规范,如:盒子模型.列表模块.超链接方式.语言模块.背景和边框.文字特效.多栏布局等等,目前有很多浏 览器已经相继支持这项升级的规范,如:Firefox.Chrome.Safari.Opera 等等.在 Web 开发中采用

个人总结(css3新特性)

1.前言css3这个相信大家不陌生了,是个非常有趣,神奇的东西!有了css3,js都可以少写很多!我之前也写过关于css3的文章,也封装过css3的一些小动画.个人觉得css3不难,但是很难用得好,用得顺手,最近我也在过一遍css3的一些新特性(不是全部,是我在工作上常用的,或者觉得有用的),以及一些实例,就写了这一篇总结!希望,这篇文章能帮到大家认识css3.写这篇文章主要是让大家能了解css3的一些新特性,以及基础的用法,感觉css3的魅力!如果想要用好css3,这个得靠大家继续努力学习,寻

CSS3新特性简介

1.CSS3 边框:通过 CSS3,能够创建圆角边框,向矩形添加阴影,使用图片来绘制边框,如border-radius:box-shadow:border-image 2.CSS3 背景:CSS3 包含多个新的背景属性,它们提供了对背景更强大的控制.background-size:background-origin 3.CSS3 文本效果:CSS3 包含多个新的文本特性.text-shadow:word-wrap 4.CSS3 @font-face规则:可将设计师希望使用的字体文件存放到web服

总结CSS3新特性(Animation篇)

动画(Animation),是CSS3的亮点.//之一 通过animation属性指定@keyframe来完成关键帧动画; @keyframe用法: @keyframes name { 0% { top: 0; }/*0%可用from关键字替代*/ 50% { top: 10px; } 100% { top: 0; }/*100%可用to关键字替代*/ } 由于是CSS3,所以不出意外的各种前缀: --图片来自MDN,CSS中的关键帧 单个帧中可填写多个属性,而且不需要保证一致,如: @-web

HTML5和CSS3新特性一览

HTML5 1.HTML5 新元素 HTML5提供了新的元素来创建更好的页面结构: 标签 描述 <article> 定义页面独立的内容区域. <aside> 定义页面的侧边栏内容. <bdi> 允许您设置一段文本,使其脱离其父元素的文本方向设置. <command> 定义命令按钮,比如单选按钮.复选框或按钮 <details> 用于描述文档或文档某个部分的细节 <dialog> 定义对话框,比如提示框 <summary>

常用的HTML5、CSS3新特性能力检测写法

伴随着今年10月底HTML5标准版的发布,未来使用H5的场景会越来越多,这是令web开发者欢欣鼓舞的事情.然而有一个现实我们不得不看清,那就是IE系列浏览器还占有一大部分市场份额,以IE8.9为主,windows8.1的用户已经用上了IE10/11,而考虑我国的国情,IE6.7依然存留不少.在我们放手用HTML5开发的时候,新特性支持度检测就是必不可少的了.一种方式是用navigator.userAgent或navigator.appName来检测浏览器类型和版本,不过这种方式不是很可靠,浏览器

Css3新特性总结之边框与背景(一)

本系列主要总结Css3一些新特性的认识,来源于<css揭秘>书. 一.半透明边框 css3最好用hsla,而不是rgba,hsla是:h:颜色值(0~360):s:饱合度(0%~100%):l:亮度(0%~100%):a:透明度(0~1) background-clip:裁剪背景颜色,默认为border-box(背景颜色扩散到border):padding-box(背景颜色扩散到padding):content-box(背景颜色扩展到content) 示例代码: width:200px; he