CSS transform的rotate,内部元素旋转到背后仍会显示。

在写代码的时候出现了一个问题,当使用了CSS3的transform的时候,对下面这个元素进行旋转:

//DOM元素的结构
<figure class="img-figure">
    <img src="/assets/97aa04cee801bdd3b8762057267d0767.jpg" alt="This is a beauty">
    <figcaption>
        <h2 class="img-title">
            This is a beauty
        </h2>
        <div class="img-back">
            <p>She is a member of SNH48.</p>
        </div>
    </figcaption>
</figure>
//LESS
.img-figure {
    position:absolute;
    box-sizing: border-box;
    transform-style: preserve-3d;
    transition: all .6s ease-in-out;
    &.is-inverse {
        transform: rotateY(180deg);
    }
    img {
        width: 240px;
        height: 240px;
    }
    figcaption {
        text-align: center;
        .img-title {
            margin: 20px 0 0 0;
        }
    }
    .img-back {
        position: relative;
        transform-style: preserve-3d;
        transform: rotateY(180deg);
        top: -150px;
    }
}

使用上面的LESS代码对figure元素进行旋转,但是这样的情况下,元素.img-title 和元素img 虽然会进行旋转,但是位置仍保持在可见位置:

旋转前:

这里写图片描述

旋转后:

这里写图片描述

可以看到figure 的内部元素是单独旋转了180度,并且脱离了父元素的旋转,显示了出来,这里需要将其隐藏,可以使用CSS属性backface-visibility 设置为hidden就可以使某个元素位于背面的时候隐藏起来。

//修改后的LESS代码
//LESS
.img-figure {
    position:absolute;
    box-sizing: border-box;
    transform-style: preserve-3d;
    transition: all .6s ease-in-out;
    &.is-inverse {
        transform: rotateY(180deg);
    }
    img {
        backface-visibility: hidden;
        width: 240px;
        height: 240px;
    }
    figcaption {
        text-align: center;
        .img-title {
            margin: 20px 0 0 0;
            backface-visibility: hidden;
        }
    }
    .img-back {
        position: relative;
        transform-style: preserve-3d;
        transform: rotateY(180deg);
        top: -150px;
    }
}

旋转后效果:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值