CSS3實現漂亮的卡片翻轉效果

先貼效果圖(實際效果比gif圖流暢1000倍,放心使用):
這裏寫圖片描述
主要利用的CSS3的perspective結合transform:ratateY()屬性完成。當爲元素定義 perspective 屬性時,其子元素會獲得透視效果,而不是元素本身。需要注意的是:perspective 屬性隻影響 3D 轉換元素。
這個屬性現在在火狐谷歌safari上都得到了較好的支持,W3C.cn上關於該屬性的說明還未及時更新。

實現思路就是將兩個要展示的div利用定位重疊在一起,其中一個首先圍繞Y軸旋轉一定角度,還要加上一個關鍵屬性backface-visibility:hidden (該屬性定義當元素不面向屏幕時是否可見)。如果不加上這個屬性的話,那麼就會始終只能看到一張卡片了,失敗的效果如下:
這裏寫圖片描述
下面就貼完整的代碼:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html">
        <meta name="viewport" content="width=device-width, initial-scale=1,user-scalable=no">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1">
        <title>CSS3實現卡片翻轉效果</title>
        <style>
            .re-item {
                width: 220px;
                margin: 50px auto;
                height: 276px;
                cursor: pointer;
                position: relative;
                perspective: 500;
                -webkit-perspective: 500;
            }

            .re-item img {
                max-width: 220px;
            }

            .re-item-front,
            .re-item-back {
                position: absolute;
                top: 0;
                left: 0;
                width: 100%;
                height: 100%;
                background-color: #fff;
                -webkit-perspective: 1000;
                /*backface-visibility: hidden;*/
                -webkit-transition: all 1.5s;
                -moz-transition: all 1.5s;
                -ms-transition: all 1.5s;
                -o-transition: all 1.5s;
                box-shadow: rgba(50, 50, 50, 0.2) 0 0 15px;
                overflow: hidden;
            }

            .re-item-back {
                position: relative;
                transform: rotateY(-180deg);
                -webkit-transform: rotateY(-180deg);
            }

            .re-item:hover .re-item-front {
                transform: rotateY(-180deg);
                -webkit-transform: rotateY(-180deg);
            }

            .re-item:hover .re-item-back {
                transform: rotateY(-360deg);
                -webkit-transform: rotateY(-360deg);
            }

            .re-box .re-item dd {
                text-align: center;
                font-family: "微軟雅黑";
            }

            .re-item .re-item-job {
                margin: 2px 0;
                font-size: 18px;
                color: #303030;
                line-height: 40px;
            }

            .re-item .re-item-des {
                padding: 0 12px;
                font-size: 14px;
                color: #939393;
            }
        </style>
    </head>

    <body>
        <div class="re-box">
            <div class="re-item">
                <dl class="re-item-front">
                    <dt><img src="img/c2.jpg" / alt="coser"></dt>
                    <dd class="re-item-job">coser</dd>
                    <dd class="re-item-des">成爲我們的合作coser,漫展返圖,自由擴列,以及無償拍攝&後期服務</dd>
                </dl>

                <div class="re-item-back">
                    <img src="img/c2_1.jpg" alt="蘇蘇" />
                    <button type="button" class="join_btn open_modal" data-id="2">立即加入</button>
                </div>
            </div>
        </div>
    </body>

</html>

好好看看html結構,很多都是不需要的,最關鍵的結構如下,css你也看着刪除一下吧。

<div class="re-item">
    <div class="re-item-front"></div>
    <div class="re-item-back"></div>
</div>

我的實現代碼即是如此,直接貼出來因爲懶得刪。
這裏寫圖片描述
能學會的看一眼就能學會,伸手黨的話,點擊這裏下載完整案例
背面的小姐姐是我拍的喔,厲害不!我還是個業餘攝影師呢。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章