亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

jquery制作屬于自己的select自定義樣式

2019-11-20 11:12:15
字體:
來源:轉載
供稿:網友

由于原生select在各個瀏覽器的樣式不統一,特別是在IE67下直接不可以使用樣式控制,當PM讓你做一個樣式的時候,那是相當的痛苦。最好的辦法就是使用自定義樣式仿select效果。這里寫了一個jquery插件,實現自定義的select(閹割了不少原生select的事件,但是最主要的都還在)
需要引用的樣式:

 .self-select-wrapper{  position: relative; display: inline-block; border: 1px solid #d0d0d0; width: 250px; height:40px; font-size: 14px;} div.self-select-wrapper{ /*解決IE67 塊級元素不支持display:inline-block*/ *display:inline;} .self-select-wrapper .self-select-display{ display: inline-block; cursor: pointer; width:100%; height:40px; background: -moz-linear-gradient(top, #fff, #eee); background: -o-linear-gradient(top,#fff, #eee); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#fff), to(#eee)); filter: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#ffffff,endColorStr=#eeeeee);} .self-select-display .self-select-text{ padding-left:10px; display: inline-block; line-height: 40px; width: 210px;} .self-select-display .self-select-arrow-down{ height:0; width:0; overflow: hidden; font-size: 0; line-height: 0; display: inline-block; vertical-align: middle; border-color:#aaa transparent transparent transparent; border-style:solid dashed dashed dashed; border-width:7px;} .self-select-wrapper .self-select-ul{ position: absolute; max-height:200px; _height:200px; border: 1px solid #ccc; background-color: #fff; top:41px; left:0px; overflow-y: auto; _overflow-y:auto !important; padding:0px; margin:0px; width: 100%; z-index:2014; display: none;} .self-select-wrapper .self-select-ul li{ list-style: none;} .self-select-ul .self-select-option{ line-height: 28px; cursor: pointer; display: block; padding-left:10px; text-decoration: none; color:#000;} .self-select-ul .self-select-option:hover,.self-select-ul .current{ background-color: #eee;}

js源碼:

/** * 解決自定義select自定義樣式需求 * select父級元素謹慎使用z-index */(function($){ var tpl = '<div class="self-select-wrapper">'+  '<span class="self-select-display">'+  '<span class="self-select-text"></span>'+  '<i class="self-select-arrow-down"></i>'+  '</span>'+  '<ul class="self-select-ul"></ul>'+ '</div>';  $.fn.selfSelect = function(changeHandler){ var name = $(this).attr('name'); var $selects = $(this);  function getSourceData($options) { var text = []; var value = []; $.each($options, function() { text.push($(this).html()); value.push($(this).attr('value')); }); return { text: text, value: value }; }  function buildTpl($selfSelect, $select) { var valueArr =[]; var textArr = []; var optionTpl = ''; var $options = $select.find('option'); var sourceData = getSourceData($options); valueArr = sourceData.value; textArr = sourceData.text; $select.hide(); $selfSelect.find('.self-select-text').html(textArr[0]); $.each(textArr, function(seq, text) { optionTpl += '<li><a class="self-select-option" href="#" value="'+valueArr[seq]+'">'+text+'</a></li>'; }); $selfSelect.find('.self-select-ul').html(optionTpl); }  function initSelect() { //解決多個select問題 $.each($selects, function(i, selectEl) { var $selfSelect; var guid = Math.floor(Math.random()*100); var $select = $(selectEl); var $parent = $select.parent(); if(!$select.prev().hasClass('self-select-wrapper')) {  $select.before(tpl);  $select.prev().addClass('select-' + guid);  $selfSelect = $parent.find('.select-' + guid); }else {  $selfSelect = $select.prev(); } buildTpl($selfSelect, $select); initEvent($selfSelect, $select) }); }  function initEvent($selfSelect, $select) { $selfSelect.find('.self-select-display').off('click').on('click', function() { var $selfSelects = $('body').find('.self-select-wrapper'); var isCliked = $(this).hasClass('clicked'); if(isCliked) {  $(this).removeClass('clicked');  $selfSelect.find('.self-select-ul').slideUp('fast'); }else {  $(this).addClass('clicked');  $selfSelect.find('.self-select-ul').slideDown('fast'); } //防止z-index覆蓋問題 $.each($selfSelects, function(i, selectEl) {  $(selectEl).css('z-index', 0); }); $selfSelect.css('z-index', 1); });  $selfSelect.find('.self-select-option').on('mousedown', function() { var text = $(this).html(); var value = $(this).attr('value'); $(this).parents('ul').slideUp('fast'); $selfSelect.find('.self-select-display').removeClass('clicked'); $selfSelect.find('.self-select-text').html(text); $(this).addClass('current'); $(this).parent().siblings().children().removeClass('current'); //修改select的值,并觸發change事件 $select.val(value); $select.trigger('change', value); });  $(document).on('mousedown', function(e) { if($(e.target).hasClass('self-select-ul') || $(e.target).parent().hasClass('self-select-display')) return; $selfSelect.find('.self-select-display').removeClass('clicked'); $selfSelect.find('.self-select-ul').slideUp('fast'); });  $select.on('change', function(e, val) { changeHandler && changeHandler(val); }); }  initSelect();  return this; };}(jQuery));

使用效果圖:

第二個是之前省市聯動的插件生成之后,調用自定義select生成的 

自定義sleect優點:

  • 樣式完全可控
  • 兼容IE系列瀏覽器
  • 使用方便,不影響默認的change事件處理

開發中遇到的問題:
1.線性漸變
    IE下使用filter: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,startColorStr=#ffffff,endColorStr=#eeeeee);解決線性漸變問題,詳解請參考下面的資料。
2.IE6 A 標簽hover問題
    IE6不設置href屬性,不會觸發:hover樣式
3.IE 67 塊級元素display:inline-block
4.z-index層級問題
    改變處于active狀態的自定select的z-index
5.css實現下三角,IE下透明問題
    設置透明部分的style值為dashed即可。
    border-style:solid dashed dashed dashed; 
如果覺得有用,可以推薦給朋友哦,小編愿意和大家共同進步。

以上就是jquery制作select自定義樣式的方法,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美色videos| 亚洲第一网站免费视频| 亚洲奶大毛多的老太婆| 91探花福利精品国产自产在线| 中文字幕欧美日韩va免费视频| 日韩成人中文字幕在线观看| 中文字幕欧美视频在线| 久久久噜噜噜久久| 国产日本欧美视频| 日韩国产精品一区| 中文字幕亚洲自拍| 亚洲字幕在线观看| 精品爽片免费看久久| 久久免费观看视频| 亚洲精品网站在线播放gif| 日韩欧美在线观看视频| 精品国产乱码久久久久久婷婷| 亚洲在线视频福利| 亚洲国产高清高潮精品美女| 亚洲色图欧美制服丝袜另类第一页| 国产精品视频资源| 2019中文字幕在线免费观看| 亚洲国产美女精品久久久久∴| 91精品国产乱码久久久久久久久| 亚洲a级在线播放观看| 精品av在线播放| 日韩电影免费在线观看中文字幕| 久久久人成影片一区二区三区| 另类美女黄大片| 欧美午夜精品伦理| 亚洲成人性视频| 日韩av片电影专区| 精品久久久久久亚洲精品| 久久久久久午夜| 亚洲国产99精品国自产| 中文字幕免费精品一区高清| 在线播放日韩av| 一区二区日韩精品| 亚洲色图综合久久| 午夜精品视频在线| 久久精品免费播放| 国产精品久久久999| 亚洲最大的网站| 亲子乱一区二区三区电影| 亚洲精品久久久久国产| 国产999在线观看| 欧美黄色三级网站| 精品久久久久久国产| 91精品在线播放| 国产97在线|亚洲| www.亚洲成人| 黄色成人在线免费| 欧美中文字幕视频| 亚洲欧美日韩国产中文| 欧洲精品在线视频| 国产日韩欧美自拍| 亚洲欧美日韩爽爽影院| 亚洲成人av片| 成人日韩在线电影| 青草成人免费视频| 成人精品在线视频| 亚洲片av在线| 欧美一级片一区| 日本亚洲欧洲色α| 欧美激情伊人电影| 欧美另类在线播放| 亚洲欧美国产精品久久久久久久| 在线视频欧美日韩精品| 国产成人一区二区三区| 亚洲精品电影网| 国产一区二区三区网站| 亚洲自拍偷拍在线| 亚洲天堂免费观看| 欧美高清第一页| 一本一道久久a久久精品逆3p| 成人在线一区二区| 精品动漫一区二区三区| 丝袜一区二区三区| 日本韩国在线不卡| 欧美性猛交xxxx偷拍洗澡| 国产一区二区日韩| 欧美日韩国产专区| 18性欧美xxxⅹ性满足| 91成人天堂久久成人| 日韩禁在线播放| 正在播放欧美视频| 亚洲国产成人在线播放| 亚洲欧美www| 中文字幕精品在线视频| 亚洲性av网站| 色与欲影视天天看综合网| 久久久免费观看| 亚洲日韩中文字幕在线播放| 555www成人网| 日韩一区二区在线视频| 久久视频在线免费观看| 日韩一级黄色av| 国内精品久久久久久久| 欧美日韩性生活视频| 精品呦交小u女在线| 国产拍精品一二三| 国产视频亚洲视频| 日韩中文字幕网站| 亚洲精品免费在线视频| 久久人人爽人人爽人人片av高清| 亚洲美女性生活视频| 国产精品色婷婷视频| 91久久精品久久国产性色也91| 国产精品欧美一区二区| 久久久久久91香蕉国产| 亚洲精品短视频| 中文字幕日本精品| 91美女片黄在线观看游戏| 欧洲亚洲免费在线| 日本一区二区三区四区视频| 国产精品黄页免费高清在线观看| 久久久久久久久久久国产| 亚洲国产天堂久久综合网| 欧美另类在线播放| 欧美大成色www永久网站婷| 亚洲男人的天堂网站| 欧美另类极品videosbest最新版本| 精品亚洲男同gayvideo网站| 91精品国产网站| 欧美激情乱人伦一区| 亚洲欧美在线第一页| 欧美专区第一页| 国产精品亚洲网站| 欧美xxxx18性欧美| 欧美精品在线极品| 热门国产精品亚洲第一区在线| 伊人久久久久久久久久久久久| 免费99精品国产自在在线| 日韩av电影免费观看高清| 欧美激情精品久久久久久蜜臀| 欧美黑人一区二区三区| 久久人体大胆视频| 91精品国产色综合久久不卡98口| 欧美老肥婆性猛交视频| 国产91精品黑色丝袜高跟鞋| 亚洲欧美在线x视频| 国产精品男人爽免费视频1| 国产精品视频xxxx| 亚洲精品国产精品乱码不99按摩| 精品久久久久久中文字幕大豆网| 国产成人高潮免费观看精品| 国产精品久久久91| 亚洲电影免费观看高清完整版在线| 精品视频偷偷看在线观看| 欧美日韩精品在线观看| 91丝袜美腿美女视频网站| 日韩禁在线播放| 亚洲成人在线视频播放| 久久成人综合视频| 亚洲女人天堂av| 国产精品成熟老女人| 综合av色偷偷网| 欧美成人激情图片网| 欧美寡妇偷汉性猛交| 精品久久久999| 欧美日韩亚洲精品一区二区三区| 日韩欧美成人网| 青草成人免费视频| 成人免费xxxxx在线观看|