Transform(CSS动态属性的开始)

1、基本概念

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

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

第一个:透视投影

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

与之对应的:正交投影

正交投影的投影线垂直于投影平面,里面的光线是互相平行的;比如生活中的太阳发出的光都是平行光。

CSS的坐标系统:它的坐标系是一个左手坐标系,绿色的是x轴的方向也就是屏幕的方向,向右正方向;红色的是y轴,向下是正方向;蓝色是z轴,屏幕向外是正方向。(如下图所示)

left.png

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

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

2、浏览器的兼容

  • 完全支持Transform第一个浏览器版本
bowser1.png
  • 完全支持Transform-origin第一个浏览器版本
bowser2.png
  • 完全支持Transform-style第一个浏览器版本

    bowser3.png

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(透视)属性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容

  • 在介绍有关transform相关的知识之前,先来讲一下transform-origin的用法以及关于角度的几种取值...
    跪键盘的小泰迪阅读 1,193评论 0 2
  • CSS门槛低,无需程序基础或数学逻辑能力,也能做出点自我感觉不错的东西。然而,你自己也应该清楚的,一般你能轻松学到...
    果汁凉茶丶阅读 15,905评论 1 21
  • CSS3动画的属性主要分为三类:transform、transition以及animation。 Transfor...
    may_mico阅读 11,975评论 1 19
  • Transforrm属性是控制2D或者3D元素的缩放,倾斜,移动,旋转 上面代码复制到html文件你大概会明白tr...
    九歌1阅读 1,000评论 0 0
  • 看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印象,因...
    DCbryant阅读 1,854评论 0 4