jQuery模擬實(shí)現(xiàn)的select點(diǎn)擊選擇效果【附demo源碼下載】
本文實(shí)例講述了jQuery模擬實(shí)現(xiàn)的select點(diǎn)擊選擇效果。分享給大家供大家參考,具體如下:
有時(shí)候有些HTML元素?zé)o法讓我們用樣式控制進(jìn)行控制,但是射雞師或是客戶(hù)的需求就是需要這種效果,還要讓每個(gè)瀏覽器都顯示同樣的效果,這時(shí)候就會(huì)讓我們這些所謂的前端攻城師很蛋疼,客戶(hù)會(huì)認(rèn)為交了點(diǎn)錢(qián)不讓你折騰些東西,以為你是沒(méi)做事的。面對(duì)這些對(duì)技術(shù)一竅不通的客戶(hù),技術(shù)對(duì)于他們來(lái)說(shuō)就是一坨屎,以為我們都是用意念來(lái)寫(xiě)代碼做程序的,所以都把我們的勞動(dòng)成果看作是廉價(jià)得像是簡(jiǎn)單的拉出一泡屎而已。
雖然很喜歡什么都沒(méi)有修飾的默認(rèn)效果,但是又不得不面對(duì)這些客戶(hù)蛋疼的效果和要求,所以不得不折騰幾個(gè)來(lái)回總不滿(mǎn)足,HTML里面,不可以樣式控制的元素恐怕也為數(shù)不多,select是其中的一個(gè),,所以今天也來(lái)折騰一下這個(gè)比較喜歡自由不愛(ài)樣式約束的元素,采用模擬的方式來(lái)實(shí)現(xiàn)select的效果。
采用模擬的好處可以任意的進(jìn)行樣式控制,做出各種各樣的效果,在各個(gè)瀏覽器中的表現(xiàn)都一致,實(shí)現(xiàn)客戶(hù)蛋疼的要求,但缺點(diǎn)也是同樣的存在的,網(wǎng)絡(luò)非常慢或客戶(hù)端禁止運(yùn)行腳本的時(shí)候//(盡管腳本禁止運(yùn)行的機(jī)率很低,一般只會(huì)有服務(wù)器版本的瀏覽器上才會(huì)出現(xiàn)),腳本加載不到有可能會(huì)影響到其失效,無(wú)法進(jìn)行操作,
其實(shí)這個(gè)效果早已廣泛應(yīng)用,也不算什么新鮮的了,大家可以隨便看一下比較新一點(diǎn)的網(wǎng)站都能找到,下面分別是淘寶和拍拍上也采用模擬的select的截圖。
淘寶模擬select:

拍拍模擬select:

本例實(shí)現(xiàn)效果:

實(shí)現(xiàn)的思路很簡(jiǎn)單,只有兩步:
1、當(dāng)鼠標(biāo)進(jìn)行移入和點(diǎn)擊的目標(biāo)元素的時(shí)候,觸發(fā)彈出一個(gè)層,層內(nèi)裝著模擬的不同的元素的值
2、點(diǎn)擊選擇層內(nèi)的元素的時(shí)候,需要將點(diǎn)擊元素文本元素賦到目標(biāo)元素中,并將元素內(nèi)的一些參數(shù)值傳到一個(gè)隱藏的域中進(jìn)行傳值
于是就有了以下的HTML、CSS和操作JS:
html:
<span class="selectType">
<a title="" href="#" class="ipt" id="selectTypeText">全部</a>
<span id="selectTypeMenu">
<a rel="0" title="" href="#">全部</a>
<a rel="1" title="" href="#">商品</a>
<a rel="2" title="" href="#">商鋪</a>
</span>
<input type="hidden" name="" class="ipt" value="" id="selectTypeRel">
<em class="searchArrow hh abs">下拉選擇</em>
</span>
css:
.sysSelect{width:76px; height:28px; line-height:28px; border:1px solid #CCC; font-size:14px;}
.sysSelect option{height:28px; line-height:28px;}
.selectType{position:relative; width:78px; height:30px; line-height:30px; font-size:14px;}
.selectType .ipt{width:76px; height:28px; line-height:28px; border:1px solid #CCC; display:inline-block; text-decoration:none; color:#000; text-indent:5px; outline:none;}
.selectType span{position:absolute; width:76px; background-color:#fff; border:1px solid #CCC; border-top-style:dashed; left:0px; top:22px; text-indent:6px; line-height:26px; display:none;}
.selectType span a{color:#333; display:block; text-decoration:none;}
.selectType span a:hover{background-color:#f60; color:#fff;}
.selectType .searchArrow{border-top:6px solid #666; border-left:6px solid #FFF; border-right:6px solid #FFF; position:absolute; width:0; height:0; top:6px; right:12px; cursor:pointer; -webkit-transition:-webkit-transform 0.2s ease-in; -moz-transition:-moz-transform 0.2s ease-in; -o-transition:-o-transform 0.2s ease-in; transition:transform 0.2s ease-in; overflow:hidden; text-indent:-2000px;}
.selectType .searchArrowRote{-moz-transform:rotate(180deg); -moz-transform-origin:50% 30%; -webkit-transform:rotate(180deg); -webkit-transform-origin:50% 30%; -o-transform:rotate(180deg); -o-transform-origin:50% 30%; transform:rotate(180deg);transform-origin:50% 30%; filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); top:-9px/9;}
js:
$("#selectTypeText").click(function () {
$(this).next("span").slideDown(200);
$(".searchArrow").addClass("searchArrowRote");
});
$("#selectTypeText").blur(function () {
$(this).next("span").slideUp(200);
$(".searchArrow").removeClass("searchArrowRote");
});
$("#selectTypeMenu>a").click(function () {
$("#selectTypeText").text($(this).text());
$("#selectTypeRel").attr("value", $(this).attr("rel"));
$(this).parent().slideUp(200);
$(".searchArrow").removeClass("searchArrowRote");
return false;
});
你是否還期待著我的長(zhǎng)篇大論?但很遺憾的告訴你,說(shuō)明已經(jīng)完畢了,也就是這么簡(jiǎn)單了,幾行代碼一看也就明白了。
還有不明白的?那沒(méi)問(wèn)題,請(qǐng)看DEMO,點(diǎn)擊此處打開(kāi)。
完整demo源碼點(diǎn)擊此處本站下載。
更多關(guān)于jQuery相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《jQuery窗口操作技巧總結(jié)》、《jQuery拖拽特效與技巧總結(jié)》、《jQuery常用插件及用法總結(jié)》、《jquery中Ajax用法總結(jié)》、《jQuery表格(table)操作技巧匯總》、《jQuery擴(kuò)展技巧總結(jié)》、《jQuery常見(jiàn)經(jīng)典特效匯總》、《jQuery動(dòng)畫(huà)與特效用法總結(jié)》及《jquery選擇器用法總結(jié)》
希望本文所述對(duì)大家jQuery程序設(shè)計(jì)有所幫助。
相關(guān)文章
更高效的使用JQuery 這里總結(jié)了8個(gè)小技巧
本文和其他的介紹JQuery的方法不同,本文側(cè)重點(diǎn)是介紹一些JQuery的使用原則,以便讓JQuery代碼更高效的執(zhí)行。2016-04-04
jquery scrollTop方法根據(jù)滾動(dòng)像素顯示隱藏頂部導(dǎo)航條
使用jquery的scrollTop方法監(jiān)視頁(yè)面垂直滾動(dòng)像素,并根據(jù)像素隱藏或者顯示頂部的導(dǎo)航條,具體實(shí)現(xiàn)代碼如下,感興趣的朋友可以參考下哈2013-05-05
JQuery通過(guò)后臺(tái)獲取數(shù)據(jù)遍歷到前臺(tái)的方法
今天小編就為大家分享一篇JQuery通過(guò)后臺(tái)獲取數(shù)據(jù)遍歷到前臺(tái)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
jQuery內(nèi)容選擇器與表單選擇器實(shí)例分析
這篇文章主要介紹了jQuery內(nèi)容選擇器與表單選擇器,結(jié)合實(shí)例形式分析了jQuery內(nèi)容選擇器與表單選擇器的功能、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-06-06
jquery實(shí)現(xiàn)預(yù)覽提交的表單代碼分享
這篇文章主要介紹了jquery實(shí)現(xiàn)預(yù)覽提交的表單代碼,需要的朋友可以參考下2014-05-05
jQuery實(shí)現(xiàn)平滑滾動(dòng)到指定錨點(diǎn)的方法
這篇文章主要介紹了jQuery實(shí)現(xiàn)平滑滾動(dòng)到指定錨點(diǎn)的方法,實(shí)例分析了jQuery根據(jù)錨點(diǎn)定位滾動(dòng)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-03-03

