CSS3 卡牌翻轉(zhuǎn)

最終效果

基本結(jié)構(gòu)

    <!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        *{margin: 0;padding: 0;}
        .wutai{position: relative;perspective: 800px;width: 220px;height: 292px;transform-style: preserve-3d;}
        #trans{position: absolute;width: 100%;height: 100%;transition: all 1s;transform-style: preserve-3d;}
        .back{transform: rotateY(180deg);}
        .flip{transform: rotateY(180deg);}
        img{position: absolute;}
    </style>
</head>
<body>
<div>
    <button id="rot">旋轉(zhuǎn)</button>
</div>
    <div class="wutai">  <!--舞臺(tái)-->
        <div class="" id="trans">  <!--旋轉(zhuǎn)容器-->
            ![](http://upload-images.jianshu.io/upload_images/215275-24cfe778b9683be9.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
            ![](http://upload-images.jianshu.io/upload_images/215275-10b53a6a57ad9279.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
        </div>
    </div>

<script>

    document.getElementById('rot').addEventListener('click',function(){
        if(document.getElementById('trans').className == 'flip'){
            document.getElementById('trans').className = '';
        }else{
            document.getElementById('trans').className = 'flip';
        }

    })

</script>

</body>
</html>

舞臺(tái)元素:用于制作3D空間,并且也可以添加perspective來(lái)修改透視的值(舞臺(tái)元素不能使用overflow:hidden,要不然就看不到完整的翻轉(zhuǎn)效果)

舞臺(tái)元素加上overflow效果

旋轉(zhuǎn)容器:因?yàn)槲枧_(tái)元素的perspective效果只對(duì)直接后代起作用,為了讓旋轉(zhuǎn)容器的后代元素也繼承父元素的perspective效果,并且是在同一個(gè)3d空間中,可以在旋轉(zhuǎn)容器上使用transform-style:perserve-3d屬性。如果沒(méi)有設(shè)置這個(gè)屬性,卡片就是扁平的,就沒(méi)有翻轉(zhuǎn)效果。

去除transform-style的效果

為了在旋轉(zhuǎn)容器中定位圖片的兩個(gè)面,需要position:absolute來(lái)重置圖片的位置,并且為了隱藏圖片的反面,可以使用backface-visibility:hidden

圖片加上backface-visibility屬性

可以看到圖片在首次旋轉(zhuǎn)時(shí),過(guò)程中間有一段時(shí)空白的,但是第二次就正常了,我也不知道是什么原因?qū)е碌?,所以圖片上面我并沒(méi)有加這個(gè)屬性.

為了翻轉(zhuǎn)圖片的背面,需要在背面圖加上旋轉(zhuǎn)(rotateY(180deg)),讓背面圖默認(rèn)是反著的,等到容器再旋轉(zhuǎn)到180度的時(shí)候,背面圖就會(huì)顯現(xiàn)出來(lái)
現(xiàn)在只需要在旋轉(zhuǎn)容器上控制flip樣式,就可以出現(xiàn)卡片翻轉(zhuǎn)效果了。

如果我們需要更改旋轉(zhuǎn)的中心軸(默認(rèn)情況是居中的),可以給旋轉(zhuǎn)容器加上transform-origin屬性

旋轉(zhuǎn)容器加上transform-origin: right center;

參考資料

http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201502031323.html
http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容