欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2015年11月23日 11:08:05   作者:黑MAO  
這篇文章主要介紹了jquery制作屬于自己的select自定義樣式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

由于原生select在各個(gè)瀏覽器的樣式不統(tǒng)一,特別是在IE67下直接不可以使用樣式控制,當(dāng)PM讓你做一個(gè)樣式的時(shí)候,那是相當(dāng)?shù)耐纯?。最好的辦法就是使用自定義樣式仿select效果。這里寫(xiě)了一個(gè)jquery插件,實(shí)現(xiàn)自定義的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 塊級(jí)元素不支持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父級(jí)元素謹(jǐn)慎使用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() {
 //解決多個(gè)select問(wèn)題
 $.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覆蓋問(wèn)題
 $.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的值,并觸發(fā)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));

使用效果圖:

第二個(gè)是之前省市聯(lián)動(dòng)的插件生成之后,調(diào)用自定義select生成的 

自定義sleect優(yōu)點(diǎn):

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

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

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

相關(guān)文章

  • jQuery自定義滾動(dòng)條完整實(shí)例

    jQuery自定義滾動(dòng)條完整實(shí)例

    這篇文章主要介紹了jQuery自定義滾動(dòng)條,以完整實(shí)例形式分析了jQuery響應(yīng)scroll事件及鼠標(biāo)事件實(shí)現(xiàn)滾動(dòng)條效果的相關(guān)技巧,需要的朋友可以參考下
    2016-01-01
  • jQuery版本升級(jí)踩坑大全

    jQuery版本升級(jí)踩坑大全

    這篇文章主要介紹了jQuery版本升級(jí)踩坑大全的相關(guān)資料,需要的朋友可以參考下
    2016-01-01
  • myeclipse安裝jQuery插件的方法

    myeclipse安裝jQuery插件的方法

    以下為myeclipse安裝jQuery插件的安裝步驟,需要的朋友可以參考下。
    2011-03-03
  • 淺談jQuery操作類(lèi)數(shù)組的工具方法

    淺談jQuery操作類(lèi)數(shù)組的工具方法

    在很多時(shí)候,JQuery的$()函數(shù)都返回一個(gè)類(lèi)似數(shù)據(jù)的JQuery對(duì)象,例如$(‘div’)將返回div里面的所有div元素包裝的JQuery對(duì)象。在這種情況下,JQuery提供了幾個(gè)常用的屬性和方法來(lái)操作JQuery對(duì)象。本文將對(duì)此進(jìn)行介紹,下面跟著小編一起來(lái)看下吧
    2016-12-12
  • jQuery中:reset選擇器用法實(shí)例

    jQuery中:reset選擇器用法實(shí)例

    這篇文章主要介紹了jQuery中:reset選擇器用法,實(shí)例分析了:reset選擇器的功能、定義及匹配重置按鈕的使用技巧,需要的朋友可以參考下
    2015-01-01
  • jquery select多選框的左右移動(dòng) 具體實(shí)現(xiàn)代碼

    jquery select多選框的左右移動(dòng) 具體實(shí)現(xiàn)代碼

    這篇文章介紹了jquery實(shí)現(xiàn)select多選框的左右移動(dòng)的方法,有需要的朋友可以參考一下
    2013-07-07
  • 快速實(shí)現(xiàn)jQuery多級(jí)菜單效果

    快速實(shí)現(xiàn)jQuery多級(jí)菜單效果

    這篇文章主要教大家如何快速實(shí)現(xiàn)jQuery多級(jí)菜單效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • 詳解handlebars+require基本使用方法

    詳解handlebars+require基本使用方法

    本文主要對(duì)handlebars+require基本使用方法進(jìn)行詳細(xì)介紹,文章尾部會(huì)附上完整代碼供大家參考。需要的朋友一起來(lái)看下吧
    2016-12-12
  • jquery限定文本框只能輸入數(shù)字即整數(shù)和小數(shù)

    jquery限定文本框只能輸入數(shù)字即整數(shù)和小數(shù)

    限定文本框只能輸入數(shù)字即整數(shù)和小數(shù),在某些特殊情況下還是比較實(shí)用的,下面有個(gè)不錯(cuò)的示例,通過(guò)jquery來(lái)簡(jiǎn)單實(shí)現(xiàn)下
    2013-11-11
  • Jquery使用小技巧匯總

    Jquery使用小技巧匯總

    本文給大家匯總介紹了一下Jquery使用小技巧,算是比較全面了,一共26個(gè)小店,非常細(xì)致,需要的朋友可以參考下
    2015-12-12

最新評(píng)論