CSS3無圖片實現華麗折頁菜單效果(多瀏覽器兼容)
昨天在做一個網站的左欄菜單的時候,突然想到,看了那么多創意的CSS3導航、菜單,何不自己動手做一個純CSS3菜單呢?于是搗鼓了一下把想法給實現了,雖然說是比較老掉牙的一個創意,不過順便也算是鍛煉了一下CSS水平。
先看看網頁里的最終效果:
那么,教程開始了!
Step1
首先,一個菜單的結構如下:
<div class="wrapper">
<ul id="menu">
<li><a href="javascript:void(0);">菜單1</a></li>
<li><a href="javascript:void(0);">菜單2</a></li>
<li><a href="javascript:void(0);">菜單3</a></li>
<li><a href="javascript:void(0);">菜單4</a></li>
<li><a href="javascript:void(0);">菜單5</a></li>
</ul>
</div>
當然,未經過CSS美化的效果相當之差,我們來開始加工——
Step2
加上該加上的,去掉該去掉的。該上色的上色,該加寬度的加寬度,該重置的重置(css reset)。
- body顏色:#ddd
- wrapper顏色:#eee
- menu顏色:#0764a1
- 鏈接顏色:#cde0ec
雖然顏色也有了形狀也有了但仍很是單調,因此——
Step3
加上光影圓角細節:
- 菜單左上圓角:10px
- 菜單右下圓角:10px
- 菜單左邊框顏色:#0982bd
- 菜單上邊框顏色:#0982bd
- 菜單下邊框顏色:#054685
- 菜單陰影:3px 5px 5px rgba(0,0,0,0.5)
- wrapper陰影:0 0 10px #222222
雖然菜單已經成型了,但怎么說都談不上“創意”二字,作為一個追求完美的前端發燒友,自然不能止步于此——
Step4
通過margin負值來實現菜單與wrapper錯開:
- menu左端外邊距:-20px
但似乎還是少了點什么?沒錯,就是小小的三角形折頁——
Step5
如何用DIV+CSS實現三角形呢?可以利用border來實現,具體原理可參見張鑫旭的《CSS border三角、圓角圖形生成技術簡介》一文。
- 翻折三角形顏色:#054685
- 邊框大小:12px 20px
- 左端外邊距:-40px(利用右邊框實現多瀏覽器兼容三角形,因此整個DIV都應該在wrapper外,即為上面20px的兩倍)
- 頂端外邊距:-12px(與上面邊框大小中12px對應)
整個折頁菜單的效果就出來了,但為了用戶體驗,還應該給菜單加上交互效果——
Step6
為菜單的鼠標經過及按下加上交互效果:
- 鼠標經過菜單顏色:#05528f
- 鼠標經過菜單上邊框顏色:#066fae
- 鼠標經過菜單下邊框顏色:#033772
- 鼠標按下菜單顏色:#033f7e
- 鼠標按下菜單上邊框顏色:#045ca0
- 鼠標按下菜單下邊框顏色:#02275f
這里還為菜單加大了左端內邊距,當然你也可以加上其它CSS3效果:
如圖是加上左端外邊距和放大1.05倍的效果。
Finally
最后當然是給出代碼和Demo了:
CSS部分:
body{
margin:0;
background:#ddd;
}
.wrapper{
width:960px;
height:800px;
margin:0 auto;
position:relative;
background:#eee;
-moz-box-shadow:0 0 10px #222222;
-khtml-box-shadow:0 0 10px #222222;
-webkit-box-shadow:0 0 10px #222222;
box-shadow:0 0 10px #222222;
}
#menu{
margin: 0;
padding:0;
list-style:none;
margin-top:150px;
margin-left:-20px;
display:inline-block;
position:relative;
z-index:100;
}
#menu a{
*zoom:1;
width:120px;
display:block;
font-size:14px;
color: #cde0ec;
line-height:45px;
padding-left:40px;
background:#0764a1;
text-decoration:none;
border-left:1px solid #0982bd;
border-top:1px solid #0982bd;
border-bottom:1px solid #054685;
-webkit-transition: all .3s;
-moz-transition: all .3s;
-o-transition: all .3s;
transition: all .3s;
-moz-box-shadow:3px 5px 5px rgba(0,0,0,0.5);
-khtml-box-shadow:3px 5px 5px rgba(0,0,0,0.5);
-webkit-box-shadow:3px 5px 5px rgba(0,0,0,0.5);
}
#menu li:first-child a{
border-top-right-radius:10px;
}
#menu li:last-child a{
border-bottom-right-radius:10px;
}
#menu a:hover{
padding-left:55px;
padding-left:40px\0;
*padding-left:40px;
background:#05528f;
border-top:1px solid #066fae;
border-bottom:1px solid #033772;
-webkit-transform-origin:0;
-moz-transform-origin:0;
-o-transform-origin:0;
-moz-box-shadow:0 5px 5px rgba(0,0,0,0.5);
-khtml-box-shadow:0 5px 5px rgba(0,0,0,0.5);
-webkit-box-shadow:5px 5px 5px rgba(0,0,0,0.5);
}
#menu a:active{
background:#033f7e;
border-top:1px solid #045ca0;
border-bottom:1px solid #02275f;
}
.triangle{
width:0;
height:0;
position:relative;
margin-top:-12px;
_margin-top:-30px;
margin-left:-40px;
border-color:transparent #054685 transparent transparent;
border-style:dashed solid dashed dashed;
border-width:12px 20px;
}
#main{
top:0;
position:fixed;
margin:200px;
}
#main p{
margin:2em;
text-indent:2em;
} HTML部分: <div class="wrapper">
<ul id="menu">
<li><a href="javascript:void(0);">菜單1</a></li>
<li><a href="javascript:void(0);">菜單2</a></li>
<li><a href="javascript:void(0);">菜單3</a></li>
<li><a href="javascript:void(0);">菜單4</a></li>
<li><a href="javascript:void(0);">菜單5</a></li>
</ul>
<div class="triangle"></div>
</div>
原文地址:http://lanfei.sinaapp.com/2012/05/1255.html
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!







