Transform(CSS动态属性的开始)

更新日期: 2019-05-24阅读: 3.9k标签: 动画

1、基本概念

基本概念:transform 属性向元素应用 2D 或 3D 转换;该属性允许我们对元素进行旋转、缩放、移动或倾斜。

这两点是Transform的概念和应用场景,重点在于2D和3D的转换,那么呢?2D和3D的转换是有一定的数学基础的,为什么这么说呢?我们需要了解两个概念

第一个:透视投影 从某一点发射出去的光线,是互不平行的,然后就会有一个近大远小的效果。比如:家里的灯泡,我们把一个东西离得灯泡越近,那么它的影子就越大,离得越远,影子就越小。

与之对应的:正交投影 正交投影的投影线垂直于投影平面,里面的光线是互相平行的;比如生活中的太阳发出的光都是平行光。 css的坐标系统:它的坐标系是一个左手坐标系,绿色的是x轴的方向也就是屏幕的方向,向右正方向;红色的是y轴,向下是正方向;蓝色是z轴,屏幕向外是正方向。(如图所示)

 

CSS变换都是基于左手坐标系和透视投影。

常用属性主要有:Transform-origin(基准点),基于哪一个点来做变换,Transform-style(元素呈现方式2D还是3D),Rotate(旋转-度数),Scale(缩放-大小),Skew(倾斜-左右),Translate(移动-x/y轴),Perspective(透视)。


2、浏览器的兼容

完全支持Transform第一个浏览器版本


完全支持Transform-origin第一个浏览器版本


完全支持Transform-style第一个浏览器版本



3、Rotate(旋转,分为2D旋转和3D旋转)

rotate(angle),2D旋转

 transform: rotate(45deg);

rotateX(angle),沿X轴3D旋转

 transform: rotate(45deg);

rotateY(angle) , 沿 Y 轴3D旋转

transform: rotate(45deg);

rotateZ(angle) , 沿 Z 轴3D旋转

transform: rotate(45deg);

rotate3d(x, y, z, angle) , 3D旋转;接收四个参数,x y z 介于0-1之间,确定三维空间唯一坐标点,angle围绕原点与x y z 坐标点连线的旋转角度。 元素围绕着xyz在空间中确定的唯一坐标点和原点之间的连线旋转指定的角度,这就是rotate3D。

 transform: rotate3d(1,1,1,45deg);

4、Scale(缩放,同样分为2D缩放和3D缩放)

scale(x[, y]) ,2D 缩放

transform: scale(2);

scaleX(x) , 沿 X 轴缩放

transform: scaleX(2);

scaleY(y) , 沿 Y 轴缩放

transform: scaleY(2);

scaleZ(z) , 沿 Z 轴缩放 - 单独使用时没有任何效果

transform: scaleZ(2);

scale3d(x, y, z) , 定义每个方向上的缩放 , Z方向单独使用时没有任何效果

transform: scale(2,2,2);

5、Skew(倾斜)

skewX(angle) - 沿 X 轴的 2D 倾斜 transform: skewX(45deg);

skewY(angle) - 沿 Y 轴的 2D 倾斜

 transform: skewY(45deg);

skew(angle-x, angle-y) - 沿 X Y 轴的 2D 倾斜

transform: skewY(45deg, 45deg);

6、Translate(移动)

translateX(x) , 沿 X 轴位移

transform: translateX(20px);

translateY(y) , 沿 Y 轴位移

transform: translateY(20px);

translateZ(z) , 沿 Z 轴位移,需要配合perspective属性一起使用

transform: translateZ(20px);

translate(x, y) , 沿 X Y 轴位移

 transform: translate(20px,20px);

translate3d(x, y, z) , 沿 X Y Z 轴位移

 transform: translate(20px, 20px, 20px);

7、Perspective,定义的是视觉和元素在3D空间Z平面之间的距离

transform: perspective(200px);

8、Transform-origin(基准点)

在前面的例子里,旋转和倾斜都是基于中心位置,也就是基准点的默认值:50% 50% 0;Transform-origin接收三个参数,x-axis y-axis z-axis; 在x的方向上可以指定:left、center、right、length和%;在y轴的方向上可以指定:top、center、bottom、length和%;在y轴的方向上只可以指定:length。 transform-origin: x-axis y-axis z-axis;


9、Transform-style(三维空间的展现形式)

主要有两个值:float - 2D形式和preserve-3d - 3D形式。

本篇文章主要分享了Transform的基本概念,简要介绍了CSS3坐标系统与透视原理, 重点介绍了Transform常用的Rotate(旋转)、Scale(缩放)、Skew(倾斜)、Translate(移动)、Perspective(透视)属性。


链接: https://fly63.com/article/detial/3861

纯CSS3实现各种表情动画

CSS3非常强大,我们可以利用CSS3相关特性绘制很多平面图形,并且可以制作很多简单的动画。今天要分享的是一款用纯CSS3实现的可爱表情动画

Vue.js动画笔记_vue实现动画效果

Vue.js中的元素动画或页面跳转动画有多种实现方式比如:1、自己手动写CSS3动画来实现2、使用第三方CSS动画库如:Animate.css3、在构子函数中操作DOM4、使用第三方Js动画库如:Velocity.js。

新手引导动画的4种实现方式

尽量多的列举出新手引导动画的实现方式, 昨天稍微总结了一下, 实现了4种.源码在最后,如果想直接看结果的,可以拉到最后去看.这里假设所有的弹出层都是基于页面上原有的元素

为何 Canvas 内元素动画总是在颤抖?

在项目中我们可能对动画进行锁帧,帧率可能是 60 或者 30,如果我们想保证渲染不抖动,在匀速直线运动中,我们尽量保证我们设置的速度要是帧率的倍数,或者保证平均每帧移动的像素点是一样的

前端开发常用css动画代码

常用的CSS动画效果,在实际开发中经常需要用到移动、大小、闪烁、渐显、渐隐等动画效果,这篇文章就整理了些常见的动画效果分享给大家,一遍收藏使用。

css环形滚动_内容加载的环形滚动动画效果

创建一个没有背景的圆,然后声明透明度为0.1的黑色边框(看起来是灰色),修改左侧边框颜色。此时会有一个静态的看起来只有左边框有颜色的空心圆。然后声明一个该元素逆时针旋转360度的动画,并让该动画无限播放(infinite)即可

css transition 实现滑入滑出

transition是css最简单的动画。 通常当一个div属性变化时,我们会立即看的变化,从旧样式到新样式是一瞬间的,嗖嗖嗖!!!但是,如果我希望是慢慢的从一种状态,转变成另外一种状态,怎么办? transition可以做到。

动画函数的绘制及自定义动画函数

制作动画效果离不开动画运动函数,而我们用得最多的无疑就是Tween.js。根据不同的数学公式原理,Tween.js划分出了不同的动画类型,每种动画类型里面都包含以下的缓动类型:ease in 先慢后快、ease out 先块后慢、ease in out 先慢后快再慢

超酷的CSS3 loading预加载动画特效

这是一款超酷CSS3 loading预加载动画特效。该loading特效共有4种不同的效果,分别通过不同的CSS3 keyframes帧动画来完成。HTML结构:4种loading预加载动画的HTML结构分别如下

Vue 动画的封装

js提供的钩子动画before-enter、enter、after-enter,用这种方法写,所有的动画都写在了组件里,外部只需要调用这个fade组件就可以了,也不需要全局去写一些样式了,这种动画的封装是比较推荐的一种动画封装,因为它可以把所有动画的实现完整的封装在一个组件中

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!