2D和3D的转换

一,2D转换(变换)transfrom

1. 2D移动 translate

属性值 translate(x,y) x正值向右移动 y正值向下移动

div{
    transfrom:translate(50px,50px);
}

小结:

  1. translate 中的百分比单位是相对于自身元素的 translate:(50%,50%);
  2. translate 类似定位,不会影响到其他元素的位置
  3. 对行内标签没有效果

2. 2D旋转 rotate

属性值为 rotate(角度) 如 transform :rotate(30 deg) 顺时针方向旋转30

div{
    transfrom:rotate(0deg);
}

3. 转换中心 transfrom-origin 了解

  1. transform-origin :50% 50%; 默认值 元素的中心位置 百分比是相对于自身的宽度和高度
  2. transform-origin :top left; 左上角 和 transform-origin:0 0;相同
  3. transform-origin :50px 50px; 距离左上角 50px 50px 的位置
  4. transform-origin :0; 只写一个值的时候 第二个值默认为 50%;

总结:设置旋转的中心,可以跟方位名词,也可以写具体的像素值。

4. 2D 缩放 scale

属性值为 scale(宽的倍数,高的倍数) 如 宽变为两倍,高变为3倍 transform :scale(2,3)

div{
    transfrom:scale(2,3);
}

小结:

  1. transform :scale (1,1) 放大一倍 相对于没有放大

  2. transform :scale (2,2) 宽和高都放大了2倍

  3. transform :scale (2) 只写一个参数 第二个参数则和第一个参数一样 相当于 scale(2,2)

  4. transform :scale(0.5,0.5) 缩小

  5. transform :scale(-2,-2) 反向放大2倍 很少用负数 容易让人产生误解

当我们同时有位移和其他属性时,我们需要把位移放到最前面。

二, 动画 animation

注意:动画和过渡的区别

    过渡 只能看到一次变化过程     动画  可以设置变化次数   甚至是无数次

2.1 步骤

/* 1 声明动画函数 */
@keyframes move{
    0%{
        width:100px;
        background-color:skyblue;
    }
    50%{
        width:100px;
        background-color:skyblue;
    }  
    100%{
        width:100px;
        background-color:skyblue;
    }  
}

div{
    width:200px;
    height:200px;
    background-color:green;
    margin:100px auto;
    /* 设置动画名*/
    animation-name:move;
    /* 设置动画播放的持续时间*/
    animation-duration:2s;
}

@keyframes 里面可以放任何css样式

2.2 语法

2.2.1 动画名字

设置要使用的动画名 animation-name: xxx;

2.2.2 持续时间

设置动画播放的持续时间 animation-duration: 3s ;

2.2.3 速度曲线

和设置过渡的曲线一样 animation-timiing-function:linear;

  • linear: 匀速
  • steps() :指定了时间函数中的间隔数量(步数)
  • ease: 慢-快-慢 默认值
  • ease-in: 慢-快。
  • ease-out: 快-慢。
  • ease-in-out: 慢-快-慢。

2.2.4 延迟时间

animation-delay :0s ;(鼠标放上去何时开始)

2.2.5 循环次数

设置动画播放的循环次数 animation-iteration-count: infinite;

infinite 为无限循环

2.2.6 循环方向

animation-direction (默认是normal)

在动画中定义循环方向的属性值为 :

  1. normal 默认值
  2. reverse 反向运行
  3. alternate 正-反-正 (让动画走出去,然后再走回来,逆播放)
  4. alternate-reverse
  5. 以上与循环次数有关

2.2.7 动画等待或者结束的状态

animation-fifill-mode 设置动画在等待或者结束的时候的状态

forwards:动画结束后,元素样式停留在 100% 的样式

backwards: 在延迟等待的时间内,元素样式停留在 0% 的样式

both: 同时设置了 forwards和backwards两个属性值

2.2.8 暂停和播放

animation-play-state 控制 (鼠标放上去)播放 还是 暂停

running 播放 paused 暂停

2.3 animation 的复合写法

animation: name duration timing-function delay iteration-count direction fill-mode;

/*animation: 动画名字 持续时间 规定动画的运动状态 规定动画何时开始    */

简写属性里面不包含 animation-play-state

想要动画走回来,而不是直接跳回来:animation-derection:alternate

三,3D 转换

3.1 三维坐标系

  • x轴 水平向右
  • y轴 垂直向下
  • z轴 垂直屏幕 由屏幕里面指向屏幕的外面

3.2 3d移动 translate3d

语法:

  1. transform:translate3d(x,y,z) 其中 x y z 分别指要移动的轴的方向的距离
  2. translform:translateX(100px) 仅仅是移动在x轴上移动
  3. translform:translateY(100px) 仅仅是移动在Y轴上移动
  4. translform:translateZ(100px) 仅仅是移动在Z轴上移动
    注意:Z轴是垂直屏幕,由里指向外面 ,默认看不到元素在z轴的方向上移动,需要加上视距

3.3 视距 perspertive

  • 设置人和物体的距离—视距 这个值是给物体的父元素
  • 动态改变物体的 translateZ 即可观察效果
 /* 父元素 */
    body {
      /* 视距 */
      perspective: 1000px;
    }

    /* 目标 */
    div {
      width: 200px;
      height: 200px;
      background-color: aqua;
      margin: 100px auto;
      /* z轴的移动 */
      transform: translateZ(0px);
    }

四,3D的旋转 rotate3d

4.1 左手准则

比如要判断某元素沿着x轴是怎么旋转的

  1. 左手的手拇指指向 x轴的正方向
  2. 其余手指的弯曲方向就是该元素沿着x轴旋转的方向了

4.2 语法

  1. transform:rotateX(45deg); 沿着x轴正方向旋转 45度
  2. transform:rotateY(45deg) 沿着y轴正方向旋转 45deg
  3. transform:rotateZ(45deg) 沿着Z轴正方向旋转 45deg
  4. transform:rotate3d(x,y,z,deg) 沿着自定义轴旋转 deg为角度

五,3D的缩放 scale3d

3d缩放 可以控制元素 在 x轴,y轴,z轴上的缩放,也可以理解为 宽,高,厚度的缩放

5.1 语法

  1. transform: scale3d(1 ,1,2); 宽,高 缩放一倍,厚度放大两倍
  2. transform: scaleX(1) 只缩放宽
  3. transform: scaleY(1) 只缩放高
  4. transform: scaleZ(1) 只缩放厚

六,视距原点 perspective-origin

  1. 视距原点和视距一样,也是设置给要观察元素的父元素上
  2. perspective-origin:center center; 默认值是元素的中心点
  3. perspective-origin:10px; 指定了一个参数的时候,第二个参数默认为center 也就是50%;
  4. perspective-origin:10% %; 百分比都是相对于自身的宽度和高度

七,转换样式 transform-style

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

推荐阅读更多精彩内容

  • 转换(transform) transform 是CSS3中具有颠覆性的特征之一,可以实现元素的位移、旋转、变形、...
    杰瑞々阅读 411评论 0 1
  • CSS3 2D 转换 CSS3 转换CSS3转换,我们可以移动,比例化,反过来,旋转,和拉伸元素。 它是如何工作?...
    鹿守心畔光阅读 600评论 0 2
  • CSS3 转换:  CSS3转换,我们可以移动,比例化,反过来,旋转,和拉伸元素。 2D转换方法: transla...
    Crazy丶Harvey阅读 587评论 1 2
  • 转换 定义:改变位置、形状、尺寸{2D(XY轴)和3D(XYZ轴)} 2D:平面转换:平移(move)、倾斜(sk...
    _余孤_阅读 396评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,540评论 28 53