其他分享
首页 > 其他分享> > CSS3_04

CSS3_04

作者:互联网

CSS3-04

一、3D转换

1、3D 的特点

在这里插入图片描述

2、三维坐标系

在这里插入图片描述

3、3D 转换内容

二、透视

​ 如果想要在网页上产生3D效果必须要用到透视,利用透视可以将3D物体投影到2D平面上

​ 透视用来定义3D元素的透视效果 (景深、视角、视距),(或者可以理解为: 设置从何处查看一个元素)

在这里插入图片描述

代码演示

<--html部分-->
<div class="box1">
    <div class="wrap">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">

    </div>
</div>
<div class="box2">
    <div class="wrap">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
        <img src="images/b1.jpg" alt="">
    </div>
</div>
/*css部分*/
.box1,
.box2 {
    width: 1300px;
    margin: 100px auto;
}

.box1 {
    perspective: 500px;
}

.wrap {
    transform-style: preserve-3d;
}

img {
    width: 200px;
}

.box1 img {
    transform: rotateY(45deg);
}

.box2 img {
    transform: perspective(500px) rotateY(45deg);
}

在这里插入图片描述

三、3D呈现

代码展示

<--html部分-->
<div class="box1">
    <div class="wrap">
        <img src="images/b1.jpg" alt="">
    </div>
</div>
<div class="box2">
     <div class="wrap">
         <img src="images/b1.jpg" alt="">
     </div>
</div>
    
/*css部分*/
.box1,
.box2 {
    width: 300px;
    height: 200px;
    margin: 200px auto;
    perspective: 500px;
}

.wrap {
    width: 300px;
    height: 200px;
    background: url(images/w.jpg) no-repeat;
}

.box1 .wrap {
    transform-style: preserve-3d;
}

.box2 .wrap {
    transform-style: flat;
}

img {
    width: 300px;
    height: 200px;
    transform: rotateY(-45deg);
}

在这里插入图片描述

四、3D 移动

3D 移动就是在 2D 移动的基础上多加了一个可以移动的方向,就是 z 轴方向

五、3D旋转

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

  1. 语法

    • transform: rotateX(45deg) – 沿着 x 轴正方向旋转 45 度
    • transform: rotateY(45deg) – 沿着 y 轴正方向旋转 45 度
    • transform: rotateZ(45deg) – 沿着 z 轴正方向旋转 45 度
    • transform: rotate3d(x, y, z, 45deg) – 沿着自定义轴旋转 45 deg 为角度
      • x, y, z 表示旋转轴的矢量,取值0或1,标识你是否希望沿着该轴进行旋转,最后一个标识旋转的角度
        • transform: rotate3d(1, 1, 0, 45deg) – 沿着对角线旋转 45deg
        • transform: rotate3d(1, 0, 0, 45deg) – 沿着 x 轴旋转 45deg
  2. 代码案例

    div {
      perspective: 300px;
    }
    
    img {
      display: block;
      margin: 100px auto;
      transition: all 1s;
    }
    
    img:hover {
      transform: rotateX(-45deg)
    }
    
  3. 左手准则

    • 左手的手拇指指向 x 轴的正方向

    • 其余手指的弯曲方向就是该元素沿着 x 轴旋转的方向

在这里插入图片描述

在这里插入图片描述

案例:卡牌翻转

<--html部分-->
<div class="box">
     <div class="wrap">
         <img src="images/b1.jpg" alt="">
         <img src="images/b2.jpg" alt="">
     </div>
</div>
    
/*css部分*/
.box,
.warp {
    width: 300px;
    height: 200px;
}

.box {
    margin: 200px auto;
    perspective: 500px;
}

.wrap {
    position: relative;
    transform-style: preserve-3d;
    transition: all 2s;
}

img {
    position: absolute;
    top: 0;
    left: 0;
    width: 300px;
    height: 200px;
}

img:last-child {
    transform: rotateY(180deg);
}

.box:hover .wrap {
    transform: rotateY(-180deg);
}

案例:立方体

在这里插入图片描述

<--html部分-->
<div class="box">
    <div class="wrap">
        <img src="images/s1.jpg" alt="">
        <img src="images/s2.jpg" alt="">
        <img src="images/s3.jpg" alt="">
        <img src="images/s4.jpg" alt="">
        <img src="images/s5.jpg" alt="">
        <img src="images/s6.jpg" alt="">
    </div>
</div>
    

/*css部分*/
.box,
.warp {
    width: 300px;
    height: 300px;
}

.box {
    margin: 200px auto;
    perspective: 1000px;
}

.wrap {
    position: relative;
    width: 100%;
    height: 100%;
    transform-style: preserve-3d;
    animation: turn 2s linear infinite;
    transform-origin: center center -150px;
}

.wrap:hover{
    animation-play-state: paused;
}

img {
    position: absolute;
    top: 0;
    left: 0;
    opacity: .8;

}
img:nth-child(2){
    transform-origin:right;
    transform: translateX(-300px) rotateY(-90deg) ;
}

img:nth-child(3){
    transform-origin:left;
    transform: translateX(300px) rotateY(90deg);
}

img:nth-child(4){
    transform-origin:bottom ;
    transform: translateY(-300px) rotateX(90deg);
}

img:nth-child(5){
    transform-origin:top ;
    transform: translateY(300px) rotateX(-90deg);
}

img:last-child {
    transform: translateZ(-300px) rotateY(180deg);
}

@keyframes turn{
    from{
        transform: rotate3d(1,1,0,0deg);
    }

    to{
        transform: rotate3d(1,1,0,360deg);
    }
}

六、3D缩放

CSS3新增了一系列制作动画的属性,其中有一个用于设置对象(如 div、ul li、文字等)大小缩放的属性scale。scale可在 X、Y 和 Z轴缩放,对应的属性分别为 scalex、scaley 和 scalez;同时设置在 X、Y 与 Z 轴的值就是对象在三维空间缩放。

  1. 语法

    • transform: scaleX(0.5) – 沿着 x 轴缩放
    • transform: scaleY(0.5) – 沿着 y 轴缩放
    • transform: scaleZ(0.5) – 沿着 z 轴缩放
      • 单独使用没有作用,需要结合其它属性一起使用。比如:transform: scaleZ(0.5) rotateX(45deg);
    • transform: scale3d(1, 0.5, 2) – 沿着自定义轴缩放

七、反面可见性

​ 隐藏被旋转的元素的背面

八、视线灭点

定义视线灭点位置(即视线消失的位置)

perspective-origin : x y;

思考:旋转木马

在这里插入图片描述

标签:CSS3,04,img,45deg,元素,transform,300px,3D
来源: https://blog.csdn.net/qq_44316317/article/details/120579629