HTML5 CSS3專題 誘人的實例 CSS3打造百度貼吧的3D翻牌效果

首先感謝w3cfuns的老師~

今天給大家帶來一個CSS3製作的翻牌效果,就是鼠標移到元素上,感覺可以看到元素背後的信息。大家如果製作考驗記憶力的連連看、撲克類的遊戲神馬的,甚至給女朋友寫一些話語,放在使用該實例製作的相冊之後都可以嘗試下,哈~

效果圖:


實例用到的一些css3的新屬性:

 a、-webkit-perspective: 800px;

   perspective (透視,視角):屬性定義 3D 元素距視圖的距離,以像素計。該屬性允許您改變 3D 元素查看 3D 元素的視圖。決定了你所看到的是2D transform 還是3D transform 。

b、-webkit-transform-style: preserve-3d;

 transform-style 屬性規定如何在 3D 空間中呈現被嵌套的元素。默認flat(平的),我們3D效果,然後選擇3D。

c、-webkit-backface-visibility: hidden; 是否顯示該選擇元素旋轉到背面後的樣子。

d、-webkit-transform: rotateY(0);  元素繞Y軸旋轉。

上面的屬性先給大家一個感性的認識,看完例子再細細品味這些屬性,或者baidu,google神馬的。


例子:

Html:

<body>


<div id="content">
    <ul>
        <li>
            <a href="#" target="_blank">
                <div><img alt="" src="images/1.jpg"/></div>
                <div>
                    <h3>漩渦鳴人</h3>

                    <p>日本漫畫家岸本齊史作品《火影忍者》中男主角。因爲身上封印着邪惡的九尾妖狐,無父無母的他受盡了村人的冷眼與歧視,他下定決心要成爲第六代火影,讓所有人都認同他的存在。</p>
                </div>
            </a>
        </li>
        <li>
            <a href="#" target="_blank">
                <div>
                    <img alt="" src="images/2.jpg"/>
                </div>
                <div>
                    <h3>日向雛田</h3>

                    <p>
                        日本漫畫家岸本齊史作品《火影忍者》中的3號女主角。木葉忍者村的女忍者,木葉名門日向一族宗家族長的長女。喜歡漩渦鳴人,原本是個性格柔弱的女孩,但是在鳴人的影響下逐漸變得堅強,並逐漸成長爲一名優秀的忍者。</p>
                </div>
            </a>
        </li>
        <li>
            <a href="#" target="_blank">
                <div><img alt="" src="images/3.jpg"/></div>
                <div>
                    <h3>蒙奇·D·路飛</h3>

                    <p>蒙奇·D·路飛 是日本人氣動漫 《海賊王》中的主人公。是日本人氣動漫 《海賊王》中的主人公。草帽海賊團船長,夢想是找到傳說中的寶藏 —— ONE PIECE,成爲海賊王。</p>
                </div>
            </a>
        </li>
        <li>
            <a href="#" target="_blank">
                <div>
                    <img alt="" src="images/4.jpg"/>
                </div>
                <div>
                    <h3>盒子先生</h3>

                    <p>
                        Danbo是一隻用廢紙盒DIY出來的可愛玩偶,圓圓的眼睛和三角形的嘴巴,時刻露出無辜的表情,讓人看到就心軟,Danbo是個純真善良的小傢伙,在它單純的幻想世界裏,總是透露出最純真可愛的動人氣息。</p>
                </div>
            </a>
        </li>
    </ul>
</div>


</body>

還是相當簡單的:

ul爲一組圖片,每個li中有個a(因爲我們希望點擊圖片可以跳轉),a中包含兩個div,一個是正常顯示時的(即顯示圖片),一個是圖片旋轉後顯示的(即介紹)。


CSS:

 <link href="css/reset.css" rel="stylesheet" type="text/css">

    <style type="text/css">

        body
        {
            font-size: 14px;
            font-family: Microsoft YaHei, Tahoma, Geneva, sans-serif;
            background: #111;
        }

        #content ul
        {
            width: 960px;
            margin: 150px auto;
            padding: 60px 0;
        }

        #content ul li
        {
            margin-right: 20px;
            width: 225px;
            height: 180px;
            float: left;
        }

        #content ul li:last-child
        {
            margin-right: 0;
        }

        #content ul li a
        {
            position: relative;
            display: block;
            width: 100%;
            height: 100%;
            /*舞臺(動畫元素的父容器)perspective*/
            -webkit-perspective: 800px;
            -moz-perspective: 800px;

        }

        #content ul li a > div
        {
            position: absolute;
            left: 0;
            height: 0;
            width: 100%;
            height: 100%;
            color: #fff;
            /*動畫元素transform-style*/
            -webkit-transform-style: preserve-3d;
            -webkit-transition: .8s ease-in-out ;
            /*動畫元素背後設置爲hidden*/
            -webkit-backface-visibility: hidden;
        }

        #content ul li a div:first-child
        {
            /*
            繞y軸旋轉
            */
            -webkit-transform: rotateY(0);
            z-index: 2;
        }

        #content ul li a div:last-child
        {
            background: url("images/bg.jpg") no-repeat 0 0;
            -webkit-transform: rotateY(180deg);
            z-index: 1;
        }

        #content ul li a:hover div:first-child
        {
            -webkit-transform: rotateY(-180deg);
        }

        #content ul li a:hover div:last-child
        {
            -webkit-transform: rotateY(0);
        }

        #content ul li a div h3
        {
            margin: 0 auto 15px;
            padding: 15px 0;
            width: 200px;
            height: 16px;
            line-height: 16px;
            font-size: 14px;
            text-align: center;
            border-bottom: 1px #fff dashed;
        }

        #content ul li a div p
        {
            padding: 0 10px;
            font-size: 12px;
            text-indent: 2em;
            line-height: 18px;
        }


    </style>

好了,上面的CSS中就可以發現文章前面說的那些CSS屬性了。

1、最主要的是理解rotateY ,繞y軸旋轉,記得我在HTML5 CSS3 精美案例 : 實現VCD包裝盒個性幻燈片中也使用到類似屬性 transform: rotate(2520deg);使用的是2D旋轉。

rotateY字面上看繞y軸旋轉,肯定有人問y軸在哪:


默認旋轉元素的中心點就是旋轉中心(可以通過transform-origin修改),x,y軸都在圖上,z軸是從中心往外發的箭頭(就是屏幕射向你頭的箭頭)。

我們例子中,默認圖片rotateY=0;鼠標指向爲rotateY=-180,負數,也就是逆時針繞y軸旋轉,正數,則爲順時針;其他兩個軸同理;

我們例子的核心就是鼠標指向時:圖片(div:first-child),從0度繞y軸逆時針旋轉180度到達-180度;介紹(div:last-child)從180度繞y軸逆時針旋轉180度到達0度。造成兩個一起逆時針旋轉的效果。有人可能會問爲啥介紹默認不是0度,這裏注意下,介紹逆時針旋轉180度之後是正面狀態,所以當倍圖片遮蓋時,相當於從正常狀態順時針旋轉了180度,因爲鼠標指向時需要恢復正常狀態。


perspective,有個技巧,對於舞臺(動畫的父元素)設置。

transform-style對3d變化當然是3d了,沒啥好說的。


關於CSS3的3d效果相關的屬性,還有很多,有機會以後的例子會刻意使用沒有用過的~


歡迎大家指教~對了,該例子需要在chrome下運行,firefox貌似支持不是很好,自動用了chrome,firebug也很少用了~嘿嘿~


源碼點擊下載

原文地址:http://blog.csdn.net/lmj623565791/article/details/32340227

發佈了4 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章