1. 程式人生 > >利用滑動門原理製作圓角和漸變色按鈕【css】

利用滑動門原理製作圓角和漸變色按鈕【css】

    在說明方法之前,先看一下效果圖:


      在border-radius出現之前,實現圓角效果使用的是滑動門。滑動門是利用背景影象的可層疊性,並允許他們在彼此之上進行滑動,以創造一些特殊的效果。

       要想讓滑動門適用於多種場合,左右兩個角必須透明,以此露出背景顏色,若是左右壓中間,左右角的透明部分露出的是中間的顏色,所以只能改成中間壓左右,中間部分可以重疊,已達到寬度自適應的效果。

       切圖技巧,可以將按鈕的背景圖分為三個部分,一個部分是左邊帶有圓角的部分,一個部分是中間的,最後一個部分是右邊帶有圓角的部分,然後將三個部分的圖拼接成雪碧圖,這樣可以直接通過定位實現圖片的選擇。注意:因為要將三個圖拼成一張圖,所以除了高度一致外,最好寬度也是一樣的,效果圖如下:


接下來講解程式碼的實現部分:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>利用滑動門製作漸變按鈕</title>
    <style>
        body,ul,p,h1,h2,h3,h4,dl,dd,form,input,textarea,select {
            padding:0;
            margin:0;
            font-family:arial;
        }
        li {
            list-style:none;
        }
        img {
            border:none;
        }
        a {
            text-decoration:none;
        }
        a:hover {
            text-decoration:underline;
        }
        .box{
            margin:100px auto;
            width: 100%;
            background-color: #970e02;
        }
        #nav{
            width:960px;
            height: 36px;
            margin:0 auto;
            padding-top:8px;
        }
        #nav li{
            float: left;
            height: 28px;
            margin-left:2px;
        }
        #nav a{
            float: left;
            height: 28px;
            text-decoration: none;
            line-height: 28px;
            font-size: 15px;
            font-family:Arial;
            color:#fff;
            text-align: center;
        }
        #nav strong{
            float: left;
            height: 28px;
            font-weight: normal;
        }
        #nav span{
            float: left;
            height: 28px;
            padding:0 16px;
        }
        #nav a:hover,#nav .active a{
            background:url("../images/nav_active_bg.png") repeat-x 0 -56px;
        }
        #nav strong:hover,#nav .active strong{
            background: url("../images/nav_active_bg.png") no-repeat;
        }
        #nav span:hover,#nav .active span{
            background: url("../images/nav_active_bg.png") no-repeat right -28px;
        }
    </style>
</head>
<body>
<div class="box">
    <ul id="nav">
        <li class="active"><a href="#"><strong><span>HOME</span></strong></a></li>
        <li><a href="#"><strong><span>LATEST ARRIVALS</span></strong></a></li>
        <li><a href="#"><strong><span>MEN'S</span></strong></a></li>
        <li><a href="#"><strong><span>WOMEN'S</span></strong></a></li>
        <li><a href="#"><strong><span>KIDS</span></strong></a></li>
        <li><a href="#"><strong><span>BRANDS</span></strong></a></li>
        <li><a href="#"><strong><span>SALE</span></strong></a></li>
        <li><a href="#"><strong><span>GIFT CARDS</span></strong></a></li>
        <li><a href="#"><strong><span>FREEBIES</span></strong></a></li>
    </ul>
</div>
</body>
</html>
        為了方便,所以直接將css樣式放在了html檔案中,平時在寫程式碼的過程中最好能有外聯樣式表,這樣修改和看程式碼比較容易。

      本案例中用滑動門實現圓角和漸變色的按鈕的原理是:將標籤a包圍標籤strong和span,因為層級的關係,a的層級是在最下面,那麼當strong和span的層級可以覆蓋a標籤,所以就是將a標籤的背景圖片置為按鈕中間可以重疊的部分,然後沿著x軸進行重複,strong標籤的背景圖片置為左邊圓角的部分,span標籤的背景圖片置為右邊圓角的部分,這樣就可以左右圓角覆蓋中間的部分,實現按鈕的基本樣式。這個過程中還有最重要的一點是,需要將a  strong  span的float都寫成left,這樣才不會出現中間有縫隙。

      如果span中的內容越長,那麼內容就會撐開按鈕的寬度,自讓而然的就讓按鈕自適應了。除此之外,我設定了滑鼠經過事件和啟用事件,即當滑鼠經過按鈕的時候,按鈕就會出現如圖所示的效果。

      另外需要說的一點是,如何定位雪碧圖的位置。background的定位其實是position,這個定位的方法有兩種,一種是具體的數值,一種是直接用位置的英文拼寫,在之前的文章中也寫到了這個屬性的使用方法,詳情請看HTML5基礎之程式碼入門。position的定位是通過x和y軸的位置進行定位的。如下所示,

         x: left  center  right         y: top   center  bottom 或者 x: ##px y: ##px