04.css提高-css3d转换

本文详细讲解了CSS3d转换中的透视、旋转和3D呈现技巧,包括translate3d、perspective、rotate3d和transform-style的应用,以及通过两面反转盒子和3D导航栏案例展示其实效。
摘要由CSDN通过智能技术生成

目录

一.css3d转换

1.3d转换之转移:

2. 3d转化之透视:perspective

3. 3d转换之旋转:rotate3d

4. 3D呈现:transform-style

二. 3d转换案例

案例1:3d转换-两面反转的盒子

案例2:3d转换-3d导航栏效果


一.css3d转换

1.3d转换之转移:

语法:

transform: translate3d(x,y,z)  // 沿着x轴、y轴和z轴移动位置

transform: translateX(n); //沿着x轴移动

transform: translateY(n); //沿着y轴移动

transform: translateZ(100px)_ //仅仅是在z轴上移动,注意,translateZ一般用px单位

注意:

1、简写的话,xyz是不能省略的,如果没有就用0代替

2、Z轴越大我们看到的物体就越大,反之越小,物体也越小(前提是透视固定的情况下)


2. 3d转化之透视:perspective

语法:

perspective: 500px;  

注意:

1、透视的单位是px

2、透视值越小(近),成像越大;透视值越大(远),成像越小

3、透视设置给被观察元素的父盒子上面


3. 3d转换之旋转:rotate3d

语法:

transform: rotateX(deg) //沿着X轴旋转

transform: rotateY(deg) // 沿着Y轴旋转

transform: rotateZ(deg) // 沿着Z轴旋转

transform: rotate3d(x,y,z,deg)  //沿着自定义轴旋转,了解即可!xyz表示旋转轴的矢量,是标示你是否希望沿着该轴旋转,最后一个标示旋转的角度。

例如 :transform: rotate3d(1,0,0,45deg)  就是沿着x轴旋转45度

            transform: rotate3d(1,1,0,45deg)  沿着对角线旋转45度


4. 3D呈现:transform-style

控制子元素是否开启三维立体环境

语法:

transform-style: flat;   //  默认子元素不开启3d立体空间

transform-style: preserve-3d;    // 子元素开启3d立体空间

注意:

1、代码写给父级,但是影响的是子盒子

2、非常重要


二. 3d转换案例

案例1:3d转换-两面反转的盒子

body {

            perspective: 400px;

        }

        .box {

            position: relative;

            width: 400px;

            height: 400px;

            margin: 100px auto;

            transition: all 2s;

            /* 3、让背面的紫色盒子保留立体空间 */

            transform-style: preserve-3d;

        }

        .box:hover {

            /* 2、然后让box盒子旋转180,就可以看到后面的盒子了 */

            transform: rotateY(180deg);

        }

        .box div {

            position: absolute;

            top: 0;

            right: 0;

            width: 100%;

            height: 100%;

            border-radius: 50%;

            color: #fff;

            font-size: 30px;

            text-align: center;

            line-height: 400px;

        }

        .front {

            background-color: pink;

            z-index: 1;

        }

        .back {

            background-color: purple;

            /* 1、把后面的盒子沿着y轴旋转180度,正好和前面的盒子背靠背 */

            transform: rotateY(180deg);

        }

<div class="box">

        <div class="front">好好学习</div>

        <div class="back">才能天天向上</div>

    </div>


案例2:3d转换-3d导航栏效果

* {

            margin: 0;

            padding: 0;

        }

        ul {

            margin: 100px;

        }

        ul li {

            float: left;

            margin: 12px;

            list-style: none;

            width: 120px;

            height: 35px;

            /* 3、一会需要给box旋转,也需要透视,所以直接给li打开透视,里面的所有盒子都能够看出立体效果 */

            perspective: 500px;

        }

        .box {

            position: relative;

            width: 100%;

            height: 100%;

            /* 2、子元素设置了旋转,父元素要打开3d立体空间 */

            transform-style: preserve-3d;

            transition: all 1s;

        }

        .box:hover {

            /* 6、鼠标放在box盒子上沿着x轴旋转90度 */

            transform: rotateX(90deg);

        }

        .front,

        .bottom {

            position: absolute;

            left: 0;

            top: 0;

            width: 100%;

            height: 100%;

            text-align: center;

            line-height: 35px;

        }

        .front {

            background-color: pink;

            z-index: 1;

            /* 5、让前面的盒子沿着z轴移动高度的一半 */

            transform: translateZ(17.5px);    

        }

        .bottom {

            background-color: purple;

            /* 1、让后面的孩子沿着x轴旋转90度 */

            /* 4、让下面的盒子沿着y轴向下移动高度的一半,同时要注意,多个转换属性,移动要放在最前面 */

            transform: translateY(17.5px) rotateX(-90deg) ;

        }

<ul>

        <li>

            <div class="box">

                <div class="front">好好学习</div>

                <div class="bottom">才能天天向上</div>

            </div>

        </li>

        <li>

            <div class="box">

                <div class="front">好好学习</div>

                <div class="bottom">才能天天向上</div>

            </div>

        </li>

        <li>

            <div class="box">

                <div class="front">好好学习</div>

                <div class="bottom">才能天天向上</div>

            </div>

        </li>

        <li>

            <div class="box">

                <div class="front">好好学习</div>

                <div class="bottom">才能天天向上</div>

            </div>

        </li>

        <li>

            <div class="box">

                <div class="front">好好学习</div>

                <div class="bottom">才能天天向上</div>

            </div>

        </li>

        <li>

            <div class="box">

                <div class="front">好好学习</div>

                <div class="bottom">才能天天向上</div>

            </div>

        </li>

    </ul>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_LiuP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值