css

45、3D变换

yu
yu
2024-09-30 / 0 评论 / 4 阅读 / 正在检测是否收录...

1、3D空间与景深

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D空间与景深</title>
    <style>
            /*
                变换原点
                1.元素变换时,默认的原点是元素的中心,使用transform-orgin可以设置变换的原点
                2.修改变换原点对位移没有影响,对旋转和缩放就会产生影响。
                3.如果只提供一个,若是像素值,表示横坐标,纵坐标取50%;若是关键词,则另一个坐标取50%
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 100px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: deepskyblue;
            transform: rotateX(3deg);
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">
            
        </div>
        
    </div>
    
    </div>
</body>
</html>

2、透视点位置


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D空间与景深</title>
    <style>
            /*
                通常情况下,我们不需要调整透视点位置
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 500px;
            /* 设置透视点的位置 */
            perspective-origin: 102px 102px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: deepskyblue;
            transform: rotateX(45deg);
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">你好啊</div>
    </div>
    
    </div>
</body>
</html>

3、位移


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D位移</title>
    <style>
            /*
                通常情况下,我们不需要调整透视点位置
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 500px;
            /* 设置透视点的位置 */
            /* 默认值 */
            perspective-origin: 102px 102px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: rgba(0, 191, 255, 0.726);
            /* 设置z轴位移,需指定长度值,正值向屏幕外,负值向屏幕里,且不能写百分比 */
            /* transform: translateZ(200px); */
            transform: translate3d(100px,100px,200px);
            box-shadow: 0px 0px 10px black;
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">你好啊</div>
    </div>
    
    </div>
</body>
</html>

4、旋转


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D旋转</title>
    <style>
            /*
                通常情况下,我们不需要调整透视点位置
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 500px;
            /* 设置透视点的位置 */
            /* 默认值 */
            perspective-origin: 102px 102px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: rgba(0, 191, 255, 0.726);
            /* transform: rotateX(-45deg); */
            /* rotateX 设置x轴旋转角度,需指定一个角度值(deg)面对x轴正方向,正值顺时针,负值逆时针 */
            /* transform: rotateY(35deg); */
            /* 设置Y轴旋转角度,需指定一个角度值(deg),面对y轴正方向:正直顺时针,负值逆时针 */
            /* rotate3D 前3个参数分别表示坐标轴:x,y,z,第4个参数表示旋转的角度,参数不允许省略。
            例如:transform:rotate3D(1,1,1,30deg),意思是:x,y,z分别旋转30度;*/
            /* transform: rotate3d(30deg,30deg); */
            transform: rotate3d(1,1,1,30deg);
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">你好啊</div>
    </div>
    
    </div>
</body>
</html>

5、缩放


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D缩放</title>
    <style>
            /*
                通常情况下,我们不需要调整透视点位置
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 500px;
            /* 设置透视点的位置 */
            /* 默认值 */
            perspective-origin: 102px 102px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: rgba(0, 191, 255, 0.726);
            /* 125 */
            /* transform: scaleZ(1) rotateY(45deg); */
            transform: scale3d(1.5,1.5,4) rotateY(45deg);
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">你好啊</div>
    </div>
    
    </div>
</body>
</html>

6、多重变换


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>6、多重变换</title>
    <style>
            /*
                通常情况下,我们不需要调整透视点位置
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 500px;
            /* 设置透视点的位置 */
            /* 默认值 */
            perspective-origin: 102px 102px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: rgba(0, 191, 255, 0.726);
            /* 变换原点 */
            /* transform: origin 202px 180px; */
           /* transform: rotateY(-45deg); */
           /* 多重变换时,建议最后旋转 */
            transform: translateZ(100px) scaleZ(3) rotateY(45deg);
            
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">你好啊</div>
    </div>
    
    </div>
</body>
</html>

7、背部可见性


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>7、背部可见性</title>
    <style>
            /*
                通常情况下,我们不需要调整透视点位置
            */
        .outer{
            width: 200px;
            height: 200px;
            border: 2px solid black;
            margin:0 auto ;
            margin-top: 100px;
            position: relative;
            /* 开启3D空间 */
            /* transform:flat;扁平化 */
            /* perspective设置给发生3D变换元素的父元素 */
            transform-style: preserve-3d;
            /* 设置景深(有了透视效果,近大远小) */
            perspective: 500px;
            /* 设置透视点的位置 */
            /* 默认值 */
            perspective-origin: 102px 102px;
        }
        .son{
            width: 200px;
            height: 200px;
            background-color: rgba(0, 191, 255, 0.726);
            transform: rotateY(odeg);
            /* 隐藏背部 */
            backface-visibility: hidden;
        }
             
        
    </style>
</head>
<body>
    <div class="outer">
        <div class="son">你好啊</div>
    </div>
    
    </div>
</body>
</html>
0

评论 (0)

取消