實現原理:
這個效果的主要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>
八邊形比六邊形好實現