js實(shí)現(xiàn)仿阿里巴巴城市選擇框效果實(shí)例
本文實(shí)例講述了js實(shí)現(xiàn)仿阿里巴巴城市選擇框效果。分享給大家供大家參考。具體分析如下:
這并不是一個(gè)城市選擇插件,在這里介紹只是為了mark一下二級(jí)聯(lián)動(dòng)的方法,此效果適用于有二級(jí)子菜單的效果,如導(dǎo)航欄、城市選擇、類別選擇等等。
樣式效果是基于阿里的樣式,懶得做其他調(diào)整,在area.css中僅僅是為了修改瀏覽器兼容性略做了一點(diǎn)調(diào)整。
城市數(shù)據(jù)是通過js構(gòu)造,當(dāng)然也可以通過后端取得數(shù)據(jù),不過感覺沒必要。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.1.js"></script>
<script type="text/javascript" src="area.js"></script>
<link rel="stylesheet" href="area.css" type="text/css" />
<style type="text/css">
/*reset css*/
*{margin:0;padding:0;}
a{text-decoration: none;}
/*appearence css*/
.area{height: 32px;line-height: 32px;font-size: 12px;background-color: #f8f8f8;border: 1px solid #ccc;border-top: 2px solid #ff8033;}
.area b{color: #333;margin: 0 13px 0 10px;float: left;}
.def_box{display: block;float: left;background-color: #fff;padding: 0 18px 0 10px;border: 1px solid #ccc;height: 20px;margin-top: 5px;line-height: 20px;cursor: pointer;position: relative;z-index: 300;}
</style>
</head>
<body>
<div class="area">
<b>地區(qū):</b>
<span class="def_box">選擇地區(qū)</span>
</div>
</body>
</html>
area.css代碼如下:
.sw-ui-area-box{position:absolute;left:0px;top:20px;width:446px;padding:3px;padding-top:2px;line-height:22px;z-index:88;background:#fff;border:1px solid #b2b2b2;box-shadow:0 0 3px #a8a8a8;}
.sw-ui-area-bg{position:absolute;left:0;top:0;width:100%;_padding:3px;height:100%;*height:265px;}
.sw-ui-area-body{background:#fff;position:relative;z-index:2;*zoom:1;padding:0 4px;}
.sw-ui-area-box-link,
.sw-ui-area-box-link:link,.sw-ui-area-box-link:visited{display:block;min-width:54px;padding-left:8px;color:#333;}
.sw-ui-area-box-focus,
.sw-ui-area-box-link:hover{background-color:#f5f5f5;color:#333;}
.sw-ui-area-box-focus{background-color:#e6e6e6!important;}
.sw-ui-area-box-nfocus{color:#f77400!important;background-color:#ffebd8!important;}
.sw-ui-area-box-item{float:left;list-style-type: none;margin-bottom: 4px;display: inline-block;height:22px;line-height:22px!important;}
.sw-ui-area-ab-all,
.sw-ui-area-abArea,
.sw-ui-area-ab-prov{padding:6px 0 6px 2px;}
.sw-ui-area-ab-all{position:relative;*zoom:1;z-index:20;}
.sw-area-abAll-link{padding-left:8px;}
.sw-ui-area-abArea{overflow:hidden;border-bottom:1px dashed #ddd;*zoom:1;}
.sw-ui-area-industryDistrict-area{overflow:hidden;border-bottom:1px dashed #ddd;padding-bottom:6px;padding-top:6px;*zoom:1;}
.sw-ui-area-industryDistrict{color:#CB7575;font-weight:bold;padding-top:12px;padding-left:8px;padding-bottom:0;}
.sw-ui-area-abArea-item{float:left;width:60px;line-height:20px;margin-right:24px;padding:1px 0;_display:inline;}
.sw-ui-area-ab-prov,
.sw-ui-area-ab-prov-items{*zoom:1;}
.sw-ui-area-ab-prov:after,
.sw-ui-area-ab-prov-items:after{content:".";display:block;height:0;clear:both;visibility: hidden;}
.sw-ui-area-abProv-im{position:relative;float:left;margin-right:24px;width:60px;padding:2px 0;_display:inline;}
.sw-ui-area-abAll-nearArea{position:absolute;top:6px;left:255px;}
.sw-ui-area-abAll-abpd{padding:0px;position:absolute;top:6px;left:320px;}
.sw-ui-area-abAll-abpd-item{padding:0px;}
.sw-ui-area-abAll-abpd-city{font-weight:700;}
.sw-ui-area-ab-prov-itemLink{color:#333 !important;background:url(/static/img/filter.png) no-repeat 36px -72px;}
.sw-ui-area-ab-prov-itemLink:hover{background-color:#f5f5f5;}
.sw-ui-area-ab-prov-show{z-index:99;}
.sw-ui-area-ab-prov-show .sw-ui-area-ab-prov-items{display:block !important;}
.sw-ui-area-ab-prov-items{display:none;width:188px;position:absolute;left:0px;top:24px;background:#f8f8f8;border:1px solid #a4a4a4;padding:6px;z-index:110;}
.sm-mod-currentType .sw-ui-area-ab-prov-items{left:6px;}
.sw-ui-area-ab-prov-item{float:left;width:64px;overflow:hidden;padding:2px 0;}
.sw-ui-area-abProv-itemsubLink{color:#333 !important;overflow:hidden;height:22px;}
.sw-ui-area-abProv-itemsubLink:hover{background:#f5f5f5;color:#333 !important;}
area.js代碼如下:
var cityInit = ['請(qǐng)選擇省份'];
var cityArr = new Array();
//cityArr[0] = new Array("北京","東城|西城|崇文|宣武|朝陽|豐臺(tái)|石景山|海淀|門頭溝|房山|通州|順義|昌平|大興|平谷|懷柔|密云|延慶");
//cityArr[1] = new Array("上海","黃浦|盧灣|徐匯|長寧|靜安|普陀|閘北|虹口|楊浦|閔行|寶山|嘉定|浦東|金山|松江|青浦|南匯|奉賢|崇明");
//cityArr[2] = new Array("天津","和平|東麗|河?xùn)||西青|河西|津南|南開|北辰|河北|武清|紅撟|塘沽|漢沽|大港|寧河|靜海|寶坻|薊縣");
//cityArr[3] = new Array("重慶","萬州|涪陵|渝中|大渡口|江北|沙坪壩|九龍坡|南岸|北碚|萬盛|雙撟|渝北|巴南|黔江|長壽|綦江|潼南|銅梁 |大足|榮昌|壁山|梁平|城口|豐都|墊江|武隆|忠縣|開縣|云陽|奉節(jié)|巫山|巫溪|石柱|秀山|酉陽|彭水|江津|合川|永川|南川");
cityArr[0] = new Array("北京","北京");
cityArr[1] = new Array("上海","上海");
cityArr[2] = new Array("天津","天津");
cityArr[3] = new Array("重慶","重慶");
cityArr[4] = new Array("河北","石家莊|邯鄲|邢臺(tái)|保定|張家口|承德|廊坊|唐山|秦皇島|滄州|衡水");
cityArr[5] = new Array("山西","太原|大同|陽泉|長治|晉城|朔州|呂梁|忻州|晉中|臨汾|運(yùn)城");
cityArr[6] = new Array("陜西","西安|寶雞|咸陽|銅川|渭南|延安|榆林|漢中|安康|商洛");
cityArr[7] = new Array("遼寧","沈陽|大連|鞍山|撫順|本溪|丹東|錦州|營口|阜新|遼陽|盤錦|鐵嶺|朝陽|葫蘆島");
cityArr[8] = new Array("吉林","長春|吉林|四平|遼源|通化|白山|松原|白城|延邊");
cityArr[9] = new Array("黑龍江","哈爾濱|齊齊哈爾|牡丹江|佳木斯|大慶|綏化|鶴崗|雞西|黑河|雙鴨山|伊春|七臺(tái)河|大興安嶺");
cityArr[10] = new Array("江蘇","南京|鎮(zhèn)江|蘇州|南通|揚(yáng)州|鹽城|徐州|連云港|常州|無錫|宿遷|泰州|淮安");
cityArr[11] = new Array("浙江","杭州|寧波|溫州|嘉興|湖州|紹興|金華|衢州|舟山|臺(tái)州|麗水");
cityArr[12] = new Array("安徽","合肥|蕪湖|蚌埠|馬鞍山|淮北|銅陵|安慶|黃山|滁州|宿州|池州|淮南|巢湖|阜陽|六安|宣城|亳州");
cityArr[13] = new Array("福建","福州|廈門|莆田|三明|泉州|漳州|南平|龍巖|寧德");
cityArr[14] = new Array("江西","南昌市|景德鎮(zhèn)|九江|鷹潭|萍鄉(xiāng)|新馀|贛州|吉安|宜春|撫州|上饒");
cityArr[15] = new Array("山東","濟(jì)南|青島|淄博|棗莊|東營|煙臺(tái)|濰坊|濟(jì)寧|泰安|威海|日照|萊蕪|臨沂|德州|聊城|濱州|菏澤");
cityArr[16] = new Array("河南","鄭州|開封|洛陽|平頂山|安陽|鶴壁|新鄉(xiāng)|焦作|濮陽|許昌|漯河|三門峽|南陽|商丘|信陽|周口|駐馬店|濟(jì)源");
cityArr[17] = new Array("湖北","武漢|宜昌|荊州|襄樊|黃石|荊門|黃岡|十堰|恩施|潛江|天門|仙桃|隨州|咸寧|孝感|鄂州");
cityArr[18] = new Array("湖南","長沙|常德|株洲|湘潭|衡陽|岳陽|邵陽|益陽|婁底|懷化|郴州|永州|湘西|張家界");
cityArr[19] = new Array("廣東","廣州|深圳|珠海|汕頭|東莞|中山|佛山|韶關(guān)|江門|湛江|茂名|肇慶|惠州|梅州|汕尾|河源|陽江|清遠(yuǎn)|潮州|揭陽|云浮");
cityArr[20] = new Array("廣西","南寧|柳州|桂林|梧州|北海|防城港|欽州|貴港|玉林|南寧地區(qū)|柳州地區(qū)|賀州|百色|河池");
cityArr[21] = new Array("海南","??趞三亞");
cityArr[22] = new Array("四川","成都|綿陽|德陽|自貢|攀枝花|廣元|內(nèi)江|樂山|南充|宜賓|廣安|達(dá)川|雅安|眉山|甘孜|涼山|瀘州");
cityArr[23] = new Array("貴州","貴陽|六盤水|遵義|安順|銅仁|黔西南|畢節(jié)|黔東南|黔南");
cityArr[24] = new Array("云南","昆明|大理|曲靖|玉溪|昭通|楚雄|紅河|文山|思茅|西雙版納|保山|德宏|麗江|怒江|迪慶|臨滄");
cityArr[25] = new Array("西藏","拉薩|日喀則|山南|林芝|昌都|阿里|那曲");
cityArr[26] = new Array("甘肅","蘭州|嘉峪關(guān)|金昌|白銀|天水|酒泉|張掖|武威|定西|隴南|平?jīng)鰘慶陽|臨夏|甘南");
cityArr[27] = new Array("寧夏","銀川|石嘴山|吳忠|固原");
cityArr[28] = new Array("青海","西寧|海東|海南|海北|黃南|玉樹|果洛|海西");
cityArr[29] = new Array("內(nèi)蒙古","呼和浩特|包頭|烏海|赤峰|呼倫貝爾盟|阿拉善盟|哲里木盟|興安盟|烏蘭察布盟|錫林郭勒盟|巴彥淖爾盟|伊克昭盟");
cityArr[30] = new Array("新疆","烏魯木齊|石河子|克拉瑪依|伊犁|巴音郭勒|昌吉|克孜勒蘇柯爾克孜|博爾塔拉|吐魯番|哈密|喀什|和田|阿克蘇");
cityArr[31] = new Array("香港","香港");
cityArr[32] = new Array("澳門","澳門");
cityArr[33] = new Array("臺(tái)灣","臺(tái)北|高雄|臺(tái)中|臺(tái)南|屏東|南投|云林|新竹|彰化|苗栗|嘉義|花蓮|桃園|宜蘭|基隆|臺(tái)東|金門|馬祖|澎湖");
var Search = function(){
return {
initArea : function(){
var provinceLen = cityArr.length;//共多少個(gè)省市自治區(qū)
var areaArr = [];
var provinceArr = [];
areaArr.push('<div class="sw-ui-area-box"><div class="sw-ui-area-bg"></div><div class="sw-ui-area-body"><div class="sw-ui-area-ab-all">');
areaArr.push('<ul class="sw-ui-area-ab-prov">');//構(gòu)造省
for(var i = 0; i< provinceLen; i ++){
var p = cityArr[i][0];
var pArr = new Array();
var csArr = cityArr[i][1].split("|");
var csLen = csArr.length;
pArr.push('<li class="sw-ui-area-box-item sw-ui-area-abProv-im">');
pArr.push('<a class="sw-ui-area-box-link sw-ui-area-ab-prov-itemLink " href="#" p="'+p+'" c="" v="'+p+'">'+p+'</a>');
pArr.push('<ul class="sw-ui-area-ab-prov-items">');
for(var j = 0;j < csLen ;j++){//構(gòu)造市
var c = csArr[j];
pArr.push('<li class="sw-ui-area-box-item">');
pArr.push('<a class="sw-ui-area-box-link sw-ui-area-abProv-itemsubLink " href="#" p="'+p+'" c="'+c+'" v="'+c+'">'+c+'</a>');
pArr.push('</li>');
}
pArr.push('</ul>');
var pStr = pArr.join("");
areaArr.push(pStr);
}//end for
areaArr.push('</ul>');//結(jié)束省
areaArr.push('</div></div></div>');
var areaStr = areaArr.join("");
$(".area .def_box").append(areaStr);
},
//選擇地區(qū)
areaEffect : function(){
//顯示全部區(qū)域及省份
$(".def_box").hover(function(){
$(this).find(".sw-ui-area-box").show();
},function(){
$(this).find(".sw-ui-area-box").hide();
});
//顯示省級(jí)以下的市級(jí)城市
$(".sw-ui-area-box-item").hover(function(){
$(this).css("z-index","90").find(".sw-ui-area-ab-prov-items").show();
},function(){
$(this).css("z-index","0").find(".sw-ui-area-ab-prov-items").hide();
});
}
}
}();
$(function(){
Search.initArea();
Search.areaEffect();
})
效果圖:

希望本文所述對(duì)大家的javascript程序設(shè)計(jì)有所幫助。
- JS簡單設(shè)置下拉選擇框默認(rèn)值的方法
- js實(shí)現(xiàn)select選擇框效果及美化
- js表單處理中單選、多選、選擇框值的獲取及表單的序列化
- js下拉選擇框與輸入框聯(lián)動(dòng)實(shí)現(xiàn)添加選中值到輸入框的方法
- JS+CSS實(shí)現(xiàn)實(shí)用的單擊輸入框彈出選擇框的方法
- 自定義的一個(gè)簡單時(shí)尚js下拉選擇框
- js 自定義個(gè)性下拉選擇框示例
- Js(JavaScript)中,彈出是或否的選擇框示例(confirm用法的實(shí)例分析)
- js實(shí)現(xiàn)一個(gè)省市區(qū)三級(jí)聯(lián)動(dòng)選擇框代碼分享
- js判斷選擇時(shí)間不能小于當(dāng)前時(shí)間的示例代碼
- JS日期和時(shí)間選擇控件升級(jí)版(自寫)
- JS時(shí)間選擇器 兼容IE6,7,8,9
- JS實(shí)現(xiàn)漂亮的時(shí)間選擇框效果
相關(guān)文章
Actionscript與javascript交互實(shí)例程序(修改)
這篇文章主要介紹了Actionscript與javascript交互實(shí)例程序(修改)的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
實(shí)現(xiàn)圖片首尾平滑輪播(JS原生方法—節(jié)流)
下面小編就為大家?guī)硪黄獙?shí)現(xiàn)圖片首尾平滑輪播(JS原生方法—節(jié)流)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
小程序?qū)崿F(xiàn)自定義導(dǎo)航欄適配完美版
這篇文章主要介紹了小程序?qū)崿F(xiàn)自定義導(dǎo)航欄適配完美版,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
解決javascript:window.close()在chrome,Firefox下失效的問題
本篇文章是對(duì)javascript:window.close()在chrome,Firefox下失效問題的解決方法進(jìn)行了分析介紹。需要的朋友參考下2013-05-05
JavaScript基于擴(kuò)展String實(shí)現(xiàn)替換字符串中index處字符的方法
這篇文章主要介紹了JavaScript基于擴(kuò)展String實(shí)現(xiàn)替換字符串中index處字符的方法,涉及javascript使用substr方法針對(duì)字符串進(jìn)行替換操作的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06
模仿JQuery sortable效果 代碼有錯(cuò)但值得看看
模仿JQuery sortable效果 代碼有錯(cuò)但值得看看,因?yàn)闀r(shí)間關(guān)系,需要的朋友可以參考下。2009-11-11
Three.js如何實(shí)現(xiàn)霧化效果示例代碼
霧化效果是3D的比較常見的特性,在游戲中見到的煙霧、爆炸火焰以及白云等效果都是霧化的結(jié)果,下面這篇文章主要給大家介紹了關(guān)于Three.js如何實(shí)現(xiàn)霧化效果的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-09-09
JavaScript簡單獲取系統(tǒng)當(dāng)前時(shí)間完整示例
這篇文章主要介紹了JavaScript簡單獲取系統(tǒng)當(dāng)前時(shí)間的方法,涉及javascript針對(duì)日期與時(shí)間的判斷以及字符串組合的相關(guān)技巧,需要的朋友可以參考下2016-08-08

