1. 程式人生 > >css美化下拉框select

css美化下拉框select

    我們老是在想著怎麼提升自己的水平,但是實際上的行動卻很少,大師都說是要每天碼一點點程式碼的,那麼要怎麼做到動手實踐碼程式碼呢??我就想有時候我們自己在欣賞別人的網站的時候,是不是就會想說看到某個模組非常的美觀簡潔,那麼是不是就可以自己動手寫下來呢??不懂的時候我們就使用火狐自帶的firebug來檢視這些結構,然後模仿下來,仔細分析好,後續在自己實現看看,這樣不是就更能進步呢??於是我在自己工作的同時看到好看的我也就想著實現它,現在就發現比較會去思考怎麼來實現某個模組了。不過還是有很多缺陷,如果你在看我這篇文章,有發現更優的解法,請不要吝嗇的貼上你的程式碼部分吧。。。謝謝大家啦~~~


初始化


經過的下拉展示



    這邊是我檢視的地址,我要模仿的是他的下拉框,經過美化的偽下拉:

http://www.lawtime.cn/xiamen  不過我這邊有做了小小的調整現在我的瀏覽都是基於火狐和谷歌瀏覽器上檢視特效的,我沒有在去關注ie,因此,我右邊的小三角是用css3實現的,滑鼠經過的時候有旋轉特效哦。。下面是html結果

<div class="select">
    <div class="select_default"></div>                          <!--這邊是預設展示我們選中的框-->
        <ul class="select_item">                                           <!--實則所有的下拉選項隱藏了,在這個ul中-->
            <li>Complex</li>
            <li>Knowledge</li>
            <li>Case</li>
            <li>Article</li>
            <li>News</li>
        </ul>
</div>

然後在進行css美化

*{
margin:0;
padding:0;
}
body{
margin:0;
padding:0;
font:normal 12px Arial, Helvetica, sans-serif;
}
.select{
width:100px;
position:relative;
top:100px;
left:100px;
cursor:pointer;
}

.select_default{
width:80px;
height:32px;
line-height:32px;
padding:0 10px;
border:solid 1px #ccc;
}

/*這邊就是三角形的css程式碼,使用偽類和定位實現右三角*/
.select_default:after{
content:"";
border-left:5px solid transparent;
border-right:5px solid transparent;
border-bottom:5px solid #999;
-webkit-transform-origin:5px 2.5px;
  -moz-transform-origin:5px 2.5px;
   -ms-transform-origin:5px 2.5px;
-o-transform-origin:5px 2.5px;
   transform-origin:5px 2.5px;
-webkit-transition: all .5s ease;
  -moz-transition: all .5s ease;
-ms-transition: all .5s ease;
-o-transition: all .5s ease;
transition: all .5s ease;
position:absolute;
right:5px;
top:14px;
}
.select_default.rotate:after{
-webkit-transform:rotate(180deg);
  -moz-transform:rotate(180deg);
   -ms-transform:rotate(180deg);
-o-transform:rotate(180deg);
   transform:rotate(180deg);
}
.select_item{
margin:0;
padding:0;
display:none;
list-style:none;
}
.select_item li{
width:80px;
height:32px;
line-height:32px;
padding:0 10px;
border:solid 1px #ccc;
border-top:none;
}
.select_item li.hover{
background:#666;
color:#fff;
}

最後使用jq實現下拉

$(document).ready(function(){
var    $sel = $(".select"),
$sel_default = $(".select_default"),
  $sel_item = $(".select_item"),
$sel_item_li = $(".select_item li")
$sel_default.text($(".select_item li:first").text());
//alert();
$sel.hover(function(){
$sel_item.show();
$sel_default.addClass("rotate");
$sel_item_li.hover(function(){
$index = $sel_item_li.index(this);
//alert($index)
$sel_item_li.eq($index).addClass("hover");
},function(){
$sel_item_li.removeClass("hover");
})
},function(){
$sel_item.hide();
$sel_default.removeClass("rotate");
});
$sel_item_li.click(function(){
$sel_default.text($(this).text());
$sel_item.hide();
});
});

    以上便是全部,但是我感覺jq好像不夠優化,我是在經過預設展示框的時候,下拉ul顯示,然後在寫經過下拉的選單的時候新增css特效。。但是怎麼覺得不夠優化??

    然後我們用這種方式來美化的話,我在想傳值的話是不是也只能用js吧值賦值到地址上跳轉呢??還是說有其他的好方法??用隱藏域的話能行嗎??具體又要怎麼辦呢???以上這倆問題,都還沒具體實踐!!!望知道的指點下~~~謝謝