css3 实现动画【小案例】

案例1:

效果展示:

3D立方体

代码展示:

<style>
    *{
        margin: 0;
        padding: 0;
    }
    .wrap{
        width: 200px;
        height: 200px;
        margin: 200px auto;
        perspective: 500px;
    }
    .wrap-box{
        width: 200px;
        height: 200px;
        transform-style: preserve-3d; /*使被嵌套的子元素保持3d效果 ,放在父元素*/
        position: relative;
        transition: 1.0s;
    }
    .wrap-box:hover{
        transform: rotate3d(1,1,0,45deg)
    }
    .wrap-box div{
        width: 200px;
        height: 200px;
        border: 1px solid black;
        position: absolute;
    }
    .wrap-box .front{
        transform: translateZ(100px);
    }
    .wrap-box .back{
        transform: translateZ(-100px);
        
    }
    .wrap-box .left{
        transform: rotateY(90deg) translateZ(100px);
        
    }
    .wrap-box .right{
        transform: rotateY(-90deg) translateZ(100px);
    }
    .wrap-box .top{
        transform: rotateX(90deg) translateZ(100px);
    }
    .wrap-box .bottom{
        transform: rotateX(-90deg) translateZ(100px);
    }
</style>
<body>
    <div class="wrap">
        <div class="wrap-box">
            <div class="front">前</div>
            <div class="back">后</div>
            <div class="left">左</div>
            <div class="right">右</div>
            <div class="top">上</div>
            <div class="bottom">下</div>
            
        </div>
    </div>
</body>

说明!!:在使用3D效果的时候, perspective 属性一定要加!!,通常设置在父元素中,同时当父元素嵌套多个子元素时,要配合transform-style属性使用,其值为preserve-3d!!,作用是当使被嵌套的子元素设置3D效果时,效果能够正确的展现,也是设置在父元素中。

案例2:

效果展示:

图片翻转

代码展示:

<style>
    *{
        margin: 0;
        padding: 0;
    }
    .wrap{
        width: 200px;
        height: 200px;
        margin: 200px auto;
        perspective: 500px;
    }
    .wrap-box{
        transform-style: preserve-3d;
        width: 200px;
        height: 200px;
        position: relative; /* 加上定位使两张图片重叠*/
        transition: all 1s;
    }
    .wrap:hover .wrap-box{
        transform: rotateY(180deg);
    }
    .wrap-box img:nth-child(2){
        transform: rotateY(180deg);
        
    }
    .wrap-box img{
        width: 100%;
        height: 100%;
        position: absolute;
        backface-visibility: hidden;/*使背面不可见!! */
    }

</style>
<body>
    <div class="wrap">
        <div class="wrap-box">
            <img src="a.jpg" alt="">
            <img src="c.jpg" alt="">
        </div>
    </div>
</body>

说明:图片翻转的动画要加 backface-visibility: hidden 使元素的背面看不见,其他同上。

案例3:

效果展示:

开门动画

代码展示:

<style type="text/css">
    *{
        margin: 0;
        height: 0;
    }
    body{
        background-color: black;
    }
    .wrap{
        width: 150px;
        height: 250px;
        background-color: white;
        margin: 200px auto;
        perspective: 500px;
    }
    .wrap div{
        width: 150px;
        height: 250px;
        background-color: black;
        transition: transform 1.5s;
        transform-origin: right;  /*以右侧为中心旋转*/
    }
    .wrap div:hover{
        transform: rotateY(-60deg);
    }
</style>
<body>
    <div class="wrap">
        <div></div>
    </div>
</body>

知识小天地:

perspective 属性:

  • perspective属性用于创建3D空间中的透视效果,它定义了观察者与Z=0平面的距离,从而影响3D元素的透视效果。

  • 当元素的Z轴值大于0时,它们看起来比实际大,而当Z轴值小于0时,它们看起来比实际小。这种效果的强度由perspective属性的值决定。

  • 如果perspective属性的值较小,透视效果会更显著;如果值较大,则透视效果较弱

  • 在实际应用中,perspective属性通常设置在父元素上,而3D变换(如rotateX、rotateY、translateZ等)则应用于子元素。这样,子元素相对于父元素的perspective属性值产生透视效果。

transform-style 属性:

  • preserve-3d:这个值会保留3D空间的效果,使得子元素能够独立地在3D空间中进行定位和变换。

  • transform-style 属性不是继承的,这意味着你必须为所有需要在3D空间中呈现的非叶子节点设置这个属性。

  • 此外,transform-style 属性的值会影响元素的层叠上下文,设置为 preserve-3d 时,会创建一个新的层叠上下文。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值