css3动画使用

html-css031

css3动画使用,第1张

animation实现动画由俩个部分组成,通过类似flash动画的关键帧来申明一个动画,在animation属性中调用关键帧声明的动画实现一个更为复杂的动画效果

关键帧 例如:

调用关键帧:

语法 animation:animation-name animation-duration animation-timing-function  animation-delay animation-iteration-count animation-direction

animation-name 由 @keyframes 创建的动画名称

animation-duration过渡时间

animation-timing-function过渡方式

animation-delay延迟时间

animation-iteration-count 动画的播放次数 通常值为1次 特殊值infinite为无限播放

animation-direction动画的播放方向,alternate为偶数次向前播放,normal动画每次都是循环向前播放

练习如下:

该图形的变化从左上角到右上角来回跳动的一个过程

linear  规定以相同速度开始至结束的过渡效果

ease  规定慢速开始,然后变快,然后慢速结束的过渡效果(默认值)

ease-in 规定以慢速开始的过渡效果

ease-out  规定以慢速结束的过渡效果

ease-in-out 规定以慢速开始和结束的过渡效果

 perspective:500px透视 也可以理解为视距,可以理解为 你的眼睛距离物体的距离  距离物体越近 物体就越大,距离物体越远 物体就越小

transform: rotateZ(30deg) rotateZ是绕着z轴旋转 正值是顺时针旋转 负值是逆时针旋转

transform: rotateY(30deg) rotateY是绕着y轴旋转 正值是向里面旋转 负值是向外面旋转

transform: rotateX(30deg)rotateX是绕着x轴旋转 正值是向里面旋转 负值是向外面旋转

transform: rotate(30deg)参数a取正值时元素相对原来中心顺时针旋转

 transform: translate3d(0, 0, 200px)效果如下:

 translate3d(0,0,200px) 表示z轴向前移动二楼200px(近大远小的原理)

 translate3d 里面分别表示x轴距离 y轴距离 和z轴距离

 要想实现3d效果必须要在父元素上加上一个属性perspective

如果想让子元素有3d的效果 必须要给父元素设置transform-style,默认值是flat, 想变成3d效果要把值设置成preserve-3d

也可以 设置旋转后的div的上下位置,在.b:hover里面加上transform-origin:top/bottom/left/right

试用css3 语法@media screen and (判断属性){ CSS样式选择器 }

1、DIV+CSS小案例描述

根据整体来设置,设置他们的最大宽度(width)为640px,最小宽度为320px,此类设置适用于手机移动端;要实现屏幕自适应,那么就要用百分比来实现;所以设置width整体100%;img宽度100%;这样实现图片的自由缩放;

HTML代码如下:且仔细看清每一行的注释:

2、看下实现的效果如何:文字大小是如何变化的;

变化浏览器后效果:如图

自定义缩放其实主要就是判断浏览器的宽度,高度需要的话可以设置,还有设置内部区域块儿的宽度以及图片展示用百分比来控制;

这个是 css3 的 animation 和  做出来的

/* 定义动画 */

@-moz-keyframes mian_control_ico{

0%{-moz-transform:perspective(400px) rotateY(90deg)}

40%{-moz-transform:perspective(400px) rotateY(0deg)}

70%{-moz-transform:perspective(400px) rotateY(0deg)}

100%{-moz-transform:perspective(400px) rotateY(0deg)}

}

@-ms-keyframes mian_control_ico{

0%{-ms-transform:perspective(400px) rotateY(90deg)}

40%{-ms-transform:perspective(400px) rotateY(0deg)}

70%{-ms-transform:perspective(400px) rotateY(0deg)}

100%{-ms-transform:perspective(400px) rotateY(0deg)}

}

@-webkit-keyframes mian_control_ico{

0%{-webkit-transform:perspective(400px) rotateY(90deg)}

40%{-webkit-transform:perspective(400px) rotateY(0deg)}

70%{-webkit-transform:perspective(400px) rotateY(0deg)}

100%{-webkit-transform:perspective(400px) rotateY(0deg)}

}

/* 在 hover 伪类触发动画 */

.yb_nav_area li.pc a:hover .n_ico ,.yb_nav_area li.Ad a:hover .n_ico ,.yb_nav_area li.iPhone a:hover .n_ico,.yb_nav_area li.iPad a:hover .n_ico {

    -webkit-animation: mian_control_ico 1s .1s ease both

    -moz-animation:mian_control_ico 1s 0s ease both

    -ms-animation:mian_control_ico 1s 0s ease both

    -webkit-animation: mian_control_ico 1s 0s ease both

}

以上只是 css 代码,相信聪明的题主会看懂,其中:

① rotateY(0deg) 就是垂直旋转,旋转多少度数;

② perspective 是 3d 视距,具体差别在下图:

有 3d 视距的旋转时图形会有倾斜;

无 3d 视距的旋转时图形只会缩放;

③ 而 keyframe 关键帧将旋转从90度转到0度,并且有 3d 视距 400 像素;

perspective 也是刚知道,现学现卖~