首页 > 其他分享 >jQuery和css3超赞select下拉列表框美化插件

jQuery和css3超赞select下拉列表框美化插件

时间:2024-12-06 12:43:12浏览次数:8  
标签:jQuery css3 插件 dropdown 列表框 wrapper li active pointer

这是一款效果超赞的jQuery和css3 select下拉列表框美化插件。这个select下拉列表框插件没有使用任何的图片,纯css制作,还使用了一点jQuery来完成动作交互。

在线演示  下载

 

有两个地方需要做下说明:

  • 下面的代码中没有使用任何厂商的前缀。
  • 在插件中使用了CSS盒子模式(box-model): [width] = [element-width] + [padding] + [borders]。看下面代码:
*, *:after, *:before {     box-sizing: border-box; }

HTML结构

首先要了解我们的select下拉列表框的html结构是怎么样的。我们使用的结构是一个div做wrapper,里面有一个span和一个无序列表。

<div class="wrapper-dropdown">   <span>I'm kinda the label!</span>   <ul class="dropdown">     <li>I'm hidden!</li>     <li>Me too!</li>     <li>So do I.</li>   </ul> </div>

JAVASCRIPT

我们需要一些js代码来使select下拉列表框能正常工作,下面的js代码是所有的demo都使用的代码:

//... obj.dd.on('click', function(event){     $(this).toggleClass('active');     return false; }); //...   $(function() {     var dd = new DropDown( $('#dd') );     $(document).click(function() {         // all dropdowns         $('.wrapper-dropdown-1').removeClass('active');     }); });

在上面的代码中,当你点击了wrapper时,它会切换class为.active。如果wrapper已经处于激活状态,它会移除class .active。

另外,如果你在下拉列表框外任何地方点击,都会关闭下拉列表框。

EXAMPLE 1

下面来看一些第一个demo的代码:

HTML

在第一个demo中,我们需要一个wrapper div,一个隐藏的下拉列表,还有一个在span中的“label”。

<div id="dd" class="wrapper-dropdown-1" tabindex="1">   <span>Gender</span>     <ul class="dropdown">         <li><a href="#">Male</a></li>         <li><a href="#">Female</a></li>     </ul> </div>
CSS

首先从wrapper开始:

.wrapper-dropdown {     /* Size and position */     position: relative; /* Enable absolute positioning for children and pseudo elements */     width: 200px;     padding: 10px;     margin: 0 auto;        /* Styles */     background: #9bc7de;     color: #fff;     outline: none;     cursor: pointer;        /* Font settings */     font-weight: bold; }

在"label"上通过伪元素来添加小箭头:

.wrapper-dropdown:after {     content: "";     width: 0;     height: 0;     position: absolute;     right: 16px;     top: 50%;     margin-top: -6px;     border-width: 6px 0 6px 6px;     border-style: solid;     border-color: transparent #fff;    }

下面是下拉列表的样式

.wrapper-dropdown-1 .dropdown {     /* Size & position */     position: absolute;     top: 100%;     left: 0; /* Size */     right: 0; /* Size */        /* Styles */     background: #fff;     font-weight: normal; /* Overwrites previous font-weight: bold; */        /* Hiding */     opacity: 0;     pointer-events: none; }

再来给下拉列表中的元素一些样式

.wrapper-dropdown-1 .dropdown li a {     display: block;     text-decoration: none;     color: #9e9e9e;     padding: 10px 20px; }    /* Hover state */ .wrapper-dropdown-1 .dropdown li:hover a {     background: #f3f8f8; }

通过上面的CSS,我们有了一个很好看的按钮和一个隐藏的下拉菜单。下面要处理的是当点击了下拉列表主按钮时,下拉列表框展开出现的效果。

我们使用javascript来在点击按钮时切换class.active。

/* Active state */ .wrapper-dropdown-1.active .dropdown {     opacity: 1;     pointer-events: auto; }    .wrapper-dropdown-1.active:after {     border-color: #9bc7de transparent;     border-width: 6px 6px 0 6px ;     margin-top: -3px; }    .wrapper-dropdown-1.active {   background: #9bc7de;   background: linear-gradient(to right, #9bc7de 0%, #9bc7de 78%, #ffffff 78%, #ffffff 100%); }     

这里要注意三个地方:

  • 1、我们使用将透明度设置为1是下拉列表框出现。这里不要忘记设置pointer-event 为auto。
  • 2、我们改变了小箭头的方向和颜色。
  • 3、我们使用一个渐变来修改了箭头羡慕的背景色。
JAVASCRIPT

我们还需要javascript来显示下拉列表项的值

function DropDown(el) {     this.dd = el;     this.placeholder = this.dd.children('span');     this.opts = this.dd.find('ul.dropdown > li');     this.val = '';     this.index = -1;     this.initEvents(); } DropDown.prototype = {     initEvents : function() {         var obj = this;            obj.dd.on('click', function(event){             $(this).toggleClass('active');             return false;         });            obj.opts.on('click',function(){             var opt = $(this);             obj.val = opt.text();             obj.index = opt.index();             obj.placeholder.text('Gender: ' + obj.val);         });     },     getValue : function() {         return this.val;     },     getIndex : function() {         return this.index;     } }

第一个demo的代码就这么多,其余几个demo的代码请参考下载文件。

FALLBACKS

为了兼容所有的浏览器,这个插件中做了一些回退处理。我们使用的是 Modernizr。Modernizr是一个用于检测用户浏览器是否支持html5和css3的javascript库,他的基本思想是“如果浏览器不支持XXX,那么我们就这样这样做。。。”。通过Modernizr,我们能为html添加class,例如:如果浏览器不支持 pointer-events ,就添加一个“no-pointerevents”的class。下面的例子说明了我们在浏览器不支持某些属性时,如何管理我们的回退代码:

/* No CSS3 support */    .no-opacity       .wrapper-dropdown-1 .dropdown, .no-pointerevents .wrapper-dropdown-1 .dropdown {     display: none;     opacity: 1; /* If opacity support but no pointer-events support */     pointer-events: auto; /* If pointer-events support but no pointer-events support */ }    .no-opacity       .wrapper-dropdown-1.active .dropdown, .no-pointerevents .wrapper-dropdown-1.active .dropdown {     display: block; }

如果浏览器不支持透明度或pointer-events,那么简单的将下拉列表框隐藏:display: none;。

如果浏览器支持透明度但是不支持pointer-events,在用户点击菜单时,我们将他们设置为auto,以使菜单展开。

另外,如果浏览器支持pointer-events但不支持透明度,我们设置透明度为1来使下拉列表在切换为.active是立刻出现。

当.active被切换时,我们使用display: block;来显示下拉列表框。

标签:jQuery,css3,插件,dropdown,列表框,wrapper,li,active,pointer
From: https://www.cnblogs.com/skonw/p/18590520

相关文章

  • 基于Bootstrap的jQuery用户向导插件
    这是一款非常实用的基于TwitterBootstrap的jquery用户向导插件。该Bootstrap用户向导插件允许你使用按钮来在各个不同的操作步骤之间来回切换,还可以单独对某个步骤进行特殊的事件处理。在线演示 下载 插件依赖RequiresjQueryv1.3.2orlaterBootstrap3.x 示例代......
  • idea的maven插件的artifactId显示红色波浪线
    在IntelliJIDEA中,如果Maven项目中的某个 artifactId 出现红色波浪线,通常意味着项目配置中有一些问题,比如依赖解析失败、版本冲突等。要找出具体的原因,可以按照以下步骤进行排查:1.查看 pom.xml 中的详细错误信息悬停查看:将鼠标悬停在红色波浪线的 artifactId 上,IDEA......
  • jQuery和CSS3打造GOOGLE样式的用户登录界面
    这是一款使用Jquery和css3打造的GOOGLE样式的用户登录界面特效。该登录界面特效中,右上角的小问号和错误提示小图标使用SVG来制作,用户名和密码输入框采用浮动标签特效,可点击的按钮上使用了很酷的点击波特效。整个登录界面简洁大方,互动性很强。在线演示 下载 该用户登录界面......
  • jQuery炫酷插入和移动元素动画特效插件
    MagicMove是一款效果非常棒的JQUERY炫酷插入和移动元素动画特效插件。元素的动画和过渡效果在如今的页面设计中对用户的体验至关重要。这款插件可以以非常平滑的方式在指定元素之前插入其它元素,并且当最右边的元素超出容器时会自动下移插入到下一行的第一个位置,整体效果非常不错......
  • H5-30 CSS3 新特性
    1、圆角使用CSS3border-radius属性,你可以给任何元素制作“圆角”border-radius属性,可以使用以下规则:①四个值:第一个值为左上角,第二个值为右上角,第三个值为右下角,第四个值为左下角②三个值:第一个值为左上角,第二个值为右上角和左下角,第三个值为右下角③......
  • python - 安装pip插件
    功能:安装各种插件,功能与maven类似windows环境下,安装包中自带这个插件,检查路径./Scripts,如果包含pip.exe文件,则无须安装安装官网:https://pip.pypa.io/en/stable/installation/Downloadthescript,fromhttps://bootstrap.pypa.io/get-pip.py.Openaterminal/command......
  • 纯js可定制的跨浏览器日期时间选择器插件
    Rome是一款纯js可定制的跨浏览器日期时间选择器插件。该日期时间选择器不依赖于jquery,但它依赖于moments.js。可以通过CSS文件来自定义该日期时间选择器的外观样式。在线预览 下载  安装可以通过Bower或nmp来安装该日期时间选择器插件。npminstall--saveromebower......
  • jQuery简单带记事功能的日历插件
    e-calendar是一款jquery简单带记事功能的日历插件。通过该jQuery日历插件你可以记录或设置某天某个时刻发生的事情,具有工作备忘录的功能。通过简单的参数设置你就可以定制该日历插件的外观。 在线演示 下载  使用方法要使用该jQuery日历插件首先引入jQuery和jquery.e-......
  • 用js写一个方法检测浏览器是否支持css3的属性
    functionsupportsCSSProperty(propertyName){//Createadummyelementtotestthepropertyonletelement=document.createElement('div');//Checkifthepropertyexistsdirectlyonthestyleobjectif(propertyNameinelement.style)......
  • 一个有趣的插件,让写代码变成打怪升级的游戏
    前言本来是要安装个statistic插件来统计代码行数的无意中发现了Code::Stats这个插件看了下介绍挺有意思的效果这是我用这个插件写了两天代码后的成果,现在升到2级了这是总览可以详细看到每种语言的经验值每天各个时段的活跃程度后面还有一些其他详细的统计关......