css3實現六邊形


實現原理:
這個效果的主要css樣式有:
1.>transform: rotate(120deg); 圖片旋轉
2.>overflow:hidden; 超出隱藏
3.>visibility: hidden; 也是隱藏,與display:none;相似,但不同的是,它雖然隱藏了,但依然會在網頁中占有位置

我們要用到3層div進行旋轉來得到這個效果(ps:3層div的大小是一樣的)。
最外層div(boxF)旋轉120度。第二層(boxS)旋轉-60度,第三層(boxT)再旋轉-60度,此時剛好回正。我們的圖片就放在第3層的div背景中。因為前兩層div中沒有東西,純粹就是用來旋轉得到6邊形的,所以對1,2層div設置visibility: hidden; 而第3層div是放圖片的,需要顯示出來,因此設置visibility: visible; (ps:如果你不對第3層div設置visibility: visible;那它默認就會繼承第二層div(boxS)的visibility: hidden; )。經過旋轉肯定有超出的部分,因此對3個div都設置overflow:hidden;
經過旋轉和對超出部分的隱藏我們就可以得到我們想要的6邊形了。還有一點要注意,那就是div的寬高比例必須滿足4:5,不然得到的就不是6邊形了。

下面給出DEMO代碼:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>CSS3 實現六邊形圖片展示效果</title>
    <style type="text/css">
        body, div, img, ul, li
        {
            margin: 0;
            padding: 0;
        }
        body
        {
            font-size: 12px;
            background-color: #DDD;
            min-width: 1200px;
        }
        ul, ul li
        {
            list-style: none;
        }

        .boxF, .boxS, .boxT, .overlay
        {
            width: 200px;
            height: 250px;
            overflow: hidden;
        }
        .boxF, .boxS
        {
            visibility: hidden;
        }
        .boxF
        {
            transform: rotate(120deg);
            float: left;
            margin-left: 10px;
            -ms-transform: rotate(120deg);
            -moz-transform: rotate(120deg);
            -webkit-transform: rotate(120deg);
        }
        .boxS
        {
            transform: rotate(-60deg);
            -ms-transform: rotate(-60deg);
            -moz-transform: rotate(-60deg);
            -webkit-transform: rotate(-60deg);
        }
        .boxT
        {
            transform: rotate(-60deg);
            background: no-repeat 50% center;
            background-size: 125% auto;
            -ms-transform: rotate(-60deg);
            -moz-transform: rotate(-60deg);
            -webkit-transform: rotate(-60deg);
            visibility: visible;
        }
    </style>
</head>
<body>
<div class="boxF">
    <div class="boxS">
        <div class="boxT" style="background-image: url(http://b.hiphotos.baidu.com/image/pic/item/10dfa9ec8a1363272bc51737938fa0ec08fac78e.jpg);"></div>
    </div>
</div>
</body>
</html>

八邊形比六邊形好實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM