一文说清楚 css3 具有颠覆意义的 2D 转换效果

html5/css3 基础篇(第二篇)
回顾
今天我们来说一说 h5/c3 的第二篇,回顾上一篇我们开始了 h5/c3 的第一篇,我们重新学了一下 VsCode 的基础应用以及里面的插件,插件也分为基础和进阶,不同学习阶段运用不同的插件会如虎添翼。在之后我们学习了 html5 中新增的语义化标签、还有新增的多媒体标签等。还有表单和 css 属性选择器和伪类这些,不止一遍的强调基础是重中之重,基础阶段的学习本身就是重复学习的过程,基础一定要打牢。
css3 2D 转换
转换(transform)是 css3 中具有颠覆意义性的特征之一,原来的 css 实现的都是一些平面的东西,限制在了平面上,而 css3 新增的转换和动画效果使得 css 的功能更加强大。可以实现元素的位移、旋转、缩放等效果。转换(transform)也可以理解为变形,在 css3 中一般分为三种模式
- 移动:transform:translate 
- 旋转:transform:rotate 
- 缩放:transform:scale 
css3 2D 转换——移动
移动:translate,移动是可以改变元素在页面中的位置,类似于定位。 具体如下图所示:
 
 语法:
可以自己在编辑器中试一试效果,除了这些 translate 还需要注意的是:
- 定义 2D 转换中的移动,沿着 X 和 Y 轴移动元素 
- translate 最大的优点:不会影响到其他元素的位置 
- translate 中的百分比单位是相对于自身元素 translate:(50%, 50%),如果是百分比的话,移动自身宽度的 50% 
- 对行内标签没有效果 
css3 2D 转换——旋转
旋转:rotate,旋转是元素按照度数转动一定的比例
旋转之前的效果:
 
 鼠标放上去旋转之后的效果:
 
 可以自己在编辑器上试一试,除此之外,还需要注意的是:
- rotate 里面跟度数,单位是 deg 比如:45(deg) 
- 角度是顺时针,负时 为逆时针 
- 默认的旋转点是元素的正中心 
css3 2D 转换——旋转中心点
设置旋转中心点——transform-origin 语法:transform-origin:x y; —— x 和 y 可以是百分比也可以是:top、left、right、bottom 等
 
 自己可以在编辑器中试一试,除此之外,需要注意的是:
- 注意后面的参数 x 和 y 用空格隔开 
- x、y 默认转换的中心点是元素的中心点(50%,50%) 
- 还可以给 x、y 设置像素或者是 方位名词(top、right、bottom、left、center) 
css3 2D 转换——缩放
缩放:scale,缩放给元素添加上了这个属性就能控制元素的放大还是缩小
语法:
缩放效果之前:
 
 缩放效果之后:
 
 自己可以在编辑器中试一试,需要注意的是:
- 注意其中 x 和 y 用逗号分开 
- transform:scale(1,1) 宽高都放大一倍,相当于没有放大 
- transform:scale(2,2) 宽高都放大了 2 倍 
- transform:scale(2):只写一个参数,第二个参数则和第一个参数一样,相当于 scale(2,2) 
- transform:scale(0.5,0.5) 缩小一倍 1.scale 缩放最大的优势就是:可以设置转换中心点缩放,默认以中心点缩放,而且不影响其他盒子 
2D 转换综合性写法
- 同时使用多个转换,其格式为:transform:translate()rotate()scale()等等 
- 其顺序会影响转换的效果(先旋转会改变坐标轴方向) 
- 当我们同时又位移了其他属性的时候,记得要将位移放在最前面 
css 动画
动画:animation,是 css 中具有颠覆意义的特征之一,可以设置多个节点来控制一个或多个动画效果,常用来实现较为复杂的动画效果
动画的基本使用:
- 先定义动画 
- 再使用(调用)动画 
可以自己在编辑器中试一试。
 
 动画序列
- 0% 是动画的开始,100%是动画的完成,这样的规则就是动画序列 
- 在 @keyframes 中规定某项 css 样式,就能创建由当前样式逐渐改为新样式的动画效果 
- 动画是使元素从一种样式逐渐变化为另一种样式的效果,您可以改变任意多的样式任意多次数 
- 请用百分比来规定变化发生的事件,或用关键词 “form” 和 “to” ,等同于 0%和 100% 
动画常用的属性:
- @keyframes:规定动画名称 
- animation:所有动画属性的简写属性,除了 animation-play-state 属性 
- animation-name:规定 @keyframes 动画名称 
- animation-duration:规定动画完成一个周期所花费的秒和毫秒 
- animation-timing-function:规定动画的速度曲线,默认是 “ease” 
- animation-delay:规定动画何时开始,默认是 0 
- animation-iteration-count:规定动画被播放的次数,默认是 1,还有 infinite 
- animation-direction:规定动画是否在下一周期逆向播放,默认是 “normal”,altemate 逆播放 
- animation-play-state:规定动画是否正在运行或暂停,默认是 “running” 还有 “paused” 
- animation-fill-mode:规定动画结束后状态,保持 forwards 回到起始 backwards 
动画简写属性
在往后的工作中基本上见到的都是简写的形式,所以往后熟练之后都可以使用简写的形式,防止代码冗余
animation:动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束状态(前两个属性不能省略)
animation:name duration timing-function delay iteration-count direction fill-mode;
以下是在动画中常用的效果:
- 简写属性里面不包含 animation-play-state 
- 暂停动画:animation-play-state:puased;经常和鼠标经过元素等其他搭配使用 
- 想要动画走回来,而不是直接调回来:animation-direction:alternate 
- 盒子动画结束后,停留到结束位置:animation-fill-mode:forwards 
动画速度曲线步长
animation-timing-function:规定动画的速度曲线,默认是“ease”
- animation-timing-function:linear —— 动画从头到尾的速度相同,匀速的 
- animation-timing-function:ease —— 默认。动画以低速开始,然后加速,在结束前变慢 
- animation-timing-function:ease-in —— 动画以低速开始 
- animation-timing-function:ease-out —— 动画以低速结束 
- animation-timing-function:ease-in-out:动画以低速开始和结束 
- animation-timing-function:steps() —— 指定了时间函数中的间隔数量(步长),可以实现打字效果 
结束
好了,今天 css3 2D 转换这一讲就介绍完了,可以自己在编辑器中实现一些小 Demo,巩固基础。
版权声明: 本文为 InfoQ 作者【前端史塔克】的原创文章。
原文链接:【http://xie.infoq.cn/article/bf34bd91c12098475655d2f90】。文章转载请联系作者。












 
    
评论