admin管理员组

文章数量:1130349

一、三维坐标系

三维直角坐标系其实是指立体空间,立体空间是由3个轴共同组成的

  • x轴:水平向右 x右边是正值,左边为负值
  • y轴:垂直向下 y下面是正值,上面是负值
  • z轴:垂直屏幕 往外是正值,往里面是负值

二、位移 translate

  • transform: translateX(100px):仅仅是在x轴上移动
  • transform: translateY(100px):仅仅是在y轴上移动
  • transform: translateZ(100px):仅仅是在z轴上移动
  • transform: translate3d(x,y,z):其中x,y,z分别x,y,z分别指要移动轴的方向的距离

三、透视 perspective

在2D平面产生近大远小视觉立体,但是只是效果二维的

  • 如果想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)
  • 模拟人类的视觉位置,可认为安排一只眼睛去看
  • 透视我们也称为视距:视距就是人的眼睛到屏幕的距离
  • 距离视觉点越近的在电脑平面成像越大,越远成像就越小
  • 透视的单位是像素

透视写在被观察元素的父盒子上

四、旋转 rotate

3D旋转可以让元素在三维平面内沿着x轴,y轴,z轴或者自定义轴进行旋转。

语法:

  • transform: rotateX(45px):沿着x轴正方向旋转45度
  • transform: rotateY(45px):沿着x轴正方向旋转45度
  • transform: rotateZ(45px):沿着x轴正方向旋转45度
  • transform: rotate3D(x,y,z,deg):沿着自定义轴旋转,deg为角度

五、呈现 transform-style

  • 控制子元素是否开启三维立体环境
  • transform-style: flat; 子元素不开启3d立体空间,默认的
  • transform-style:preserve-3d; 子元素开启立体空间
  • 代码写给父级,但是影响的是子盒子

六、具体案例

左右两面翻转的盒子

1)搭建HTML结构  

  • box父盒子里面包含前后两个子盒子
  • box是翻转的盒子 front是前面盒子 back是后面盒子
<div class="box">
    <div class="front">辣味蓓蓓酱</div>
    <div class="back">可爱又漂亮</div>
</div>

2) CSS样式

  • box指定大小,切记要添加3d呈现
  • back盒子要沿着Y轴旋转180度
  • 最后鼠标经过box沿着Y轴旋转180deg
body {
    perspective: 400px;
}
.box {
    width: 300px;
    height: 300px;
    margin: 100px auto;
    transitinon: all .4s;
    transform-style: preserve-3d;
}
.box:hover {
    transform: rotateY(180deg);
.font,
.back {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    font-size: 30px;
    color: #fff;
    text-align: center;
    line-height: 300px;
}
.front {
    background-color: pink;
}
.black {
    background-color: purple;
    tranform: rotateY(180deg);
}

上下翻转的盒子

1)搭建HTML结构 

  • .box是翻转的盒子 front是前面的盒子,bottom是底下的盒子 
<ul>
    <li>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
    </li>
</ul>
* {
    margin: 0;
    padding: 0;
}
ul {
    margin: 100px;
}
ul li {
    float: left;
    margin: 0 5px;
    width: 120px;
    height: 35px;
    list-style: none;
/* 需要给box旋转,也需要透视,所以给li加透视,里面所有盒子都有透视效果 */
    perspective: 500px;
}
.box {
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    transition: all .4s;
}
.box:hover {
    transform: rotateX(90px);
}
.front,
.bottom {
    position: absolute;
    left: 0;
    top: 0;
}
.front {
    backgroun-color: pink;
    z-index: 1;
    tranform: translateZ(17.5px);        
}
.bottom {
    background-color: purple;
    /* 必须先移动,后翻转 */
    transform: translateY(17.5px) rotateX(-90deg);
}

 

 

 

 

 

 

 

 

一、三维坐标系

三维直角坐标系其实是指立体空间,立体空间是由3个轴共同组成的

  • x轴:水平向右 x右边是正值,左边为负值
  • y轴:垂直向下 y下面是正值,上面是负值
  • z轴:垂直屏幕 往外是正值,往里面是负值

二、位移 translate

  • transform: translateX(100px):仅仅是在x轴上移动
  • transform: translateY(100px):仅仅是在y轴上移动
  • transform: translateZ(100px):仅仅是在z轴上移动
  • transform: translate3d(x,y,z):其中x,y,z分别x,y,z分别指要移动轴的方向的距离

三、透视 perspective

在2D平面产生近大远小视觉立体,但是只是效果二维的

  • 如果想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)
  • 模拟人类的视觉位置,可认为安排一只眼睛去看
  • 透视我们也称为视距:视距就是人的眼睛到屏幕的距离
  • 距离视觉点越近的在电脑平面成像越大,越远成像就越小
  • 透视的单位是像素

透视写在被观察元素的父盒子上

四、旋转 rotate

3D旋转可以让元素在三维平面内沿着x轴,y轴,z轴或者自定义轴进行旋转。

语法:

  • transform: rotateX(45px):沿着x轴正方向旋转45度
  • transform: rotateY(45px):沿着x轴正方向旋转45度
  • transform: rotateZ(45px):沿着x轴正方向旋转45度
  • transform: rotate3D(x,y,z,deg):沿着自定义轴旋转,deg为角度

五、呈现 transform-style

  • 控制子元素是否开启三维立体环境
  • transform-style: flat; 子元素不开启3d立体空间,默认的
  • transform-style:preserve-3d; 子元素开启立体空间
  • 代码写给父级,但是影响的是子盒子

六、具体案例

左右两面翻转的盒子

1)搭建HTML结构  

  • box父盒子里面包含前后两个子盒子
  • box是翻转的盒子 front是前面盒子 back是后面盒子
<div class="box">
    <div class="front">辣味蓓蓓酱</div>
    <div class="back">可爱又漂亮</div>
</div>

2) CSS样式

  • box指定大小,切记要添加3d呈现
  • back盒子要沿着Y轴旋转180度
  • 最后鼠标经过box沿着Y轴旋转180deg
body {
    perspective: 400px;
}
.box {
    width: 300px;
    height: 300px;
    margin: 100px auto;
    transitinon: all .4s;
    transform-style: preserve-3d;
}
.box:hover {
    transform: rotateY(180deg);
.font,
.back {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    font-size: 30px;
    color: #fff;
    text-align: center;
    line-height: 300px;
}
.front {
    background-color: pink;
}
.black {
    background-color: purple;
    tranform: rotateY(180deg);
}

上下翻转的盒子

1)搭建HTML结构 

  • .box是翻转的盒子 front是前面的盒子,bottom是底下的盒子 
<ul>
    <li>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
        <div class="box">
            <div class="front">辣味蓓蓓酱</div>
            <div class="bottom">可爱又漂亮</div>
        </div>
    </li>
</ul>
* {
    margin: 0;
    padding: 0;
}
ul {
    margin: 100px;
}
ul li {
    float: left;
    margin: 0 5px;
    width: 120px;
    height: 35px;
    list-style: none;
/* 需要给box旋转,也需要透视,所以给li加透视,里面所有盒子都有透视效果 */
    perspective: 500px;
}
.box {
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    transition: all .4s;
}
.box:hover {
    transform: rotateX(90px);
}
.front,
.bottom {
    position: absolute;
    left: 0;
    top: 0;
}
.front {
    backgroun-color: pink;
    z-index: 1;
    tranform: translateZ(17.5px);        
}
.bottom {
    background-color: purple;
    /* 必须先移动,后翻转 */
    transform: translateY(17.5px) rotateX(-90deg);
}

 

 

 

 

 

 

 

 

本文标签: 位移透视translatestyletransform