chosen组件实现下拉框
chosen组件用于增强原生的select控件,使之有更好的用户体验。官方demo https://harvesthq.github.io/chosen/
目前项目中碰到的使用,比如一个页面中有两个不同样式的下拉框:
1、首先在js文件夹中建一个名为chosen的文件夹,放入这样几个文件:

2、在html页面中引入chosen的css和js文件:

3、在html中写这两个下拉框:
<div class="myselect1 mt10 ml10">
<select id="select1" class="myselect">
<option value="1">中国</option>
<option value="2">美国</option>
<option value="3">韩国</option>
</select>
<span>下拉框1</span>
</div>
<div class="myselect2 mt10 ml10">
<select id="select2" class="myselect">
<option value="1">北京</option>
<option value="2">华盛顿</option>
<option value="3">首尔</option>
</select>
<span>下拉框2</span>
</div>
页面效果为普通的select样式:

4、在js中初始化这两个下拉框:
(function(win, $) {
// 初始化下拉框
$("select").chosen({
disable_search: true
}).change(function(event, opt) {
// 获取选中的值
var val = $(this).find("option:selected").html();
console.log(val);
});
}(this, jQuery));
效果就变成了官方预设的下拉效果(当文字过长时会自动显示部分省略号):

5、给这两个下拉框写样式:
/*两个框的宽度是通过这样直接指定的方式设定的*/
.myselect1 select {
width: 100px;
}
.myselect2 select {
width: 150px;
} /*#region 重写下拉框 */
/*两个下拉框的相同样式直接重写*/ /*整个框外观上的样式*/
.chosen-container
{
margin-right: 100px;
float: left;
text-align: center;
*padding: 5px 0;
} .chosen-container .chosen-results
{
padding:;
margin-right:;
}
/*下拉框的那个框的样式*/
.chosen-container-single .chosen-single
{
background: #f9f9f9;
border:;
border-radius:;
box-shadow: none;
/*后来的测试中发现,这个height是包括边框的高度*/
line-height: 36px;
height: 36px;
} .chosen-container-single .chosen-single span
{
margin-right: 26px;
letter-spacing: 2px;
margin-left: 4px;
}
/*下拉项*/
.chosen-container .chosen-results li
{
letter-spacing: 4px;
} .chosen-container-single .chosen-single div
{
padding:;
width: 21px;
}
/*图标*/
.chosen-container-single .chosen-single div b
{
background: url(../images/bg.png) no-repeat left 15px;
} .chosen-container-active.chosen-with-drop .chosen-single div b
{
background: url(../images/bg.png) no-repeat left 15px;
}
/*当下拉项显示出来时下拉框的那个框的样式*/
.chosen-container-active.chosen-with-drop .chosen-single
{
background: #f9f9f9;
box-shadow: none;
border:;
border-radius:;
} .chosen-container-single .chosen-drop
{
border: 1px solid #f9f9f9;
background-color: #f9f9f9;
box-sizing: border-box;
} .chosen-container .chosen-results li.highlighted
{
background-color: #397ddb;
background-image: none;
}
/*给其中一个框分别指定个性的样式,另一个框的样式设定方式同理,使用父选择器进行限制*/
.myselect1 .chosen-container
{
text-align: left;
}
.myselect1 .chosen-container-single .chosen-single {
background-color: #f00;
color: #fff;
font-size: 20px;
}
.myselect1 .chosen-container .chosen-results li
{
letter-spacing:;
padding-left: 12px;
}
.myselect1 .chosen-container-active.chosen-with-drop .chosen-single
{
background: #0f0;
border: 1px solid #f00;
}
(当下拉框需要浮动时,所在的div层不能写overflow:hidden;这样点击框后框会消失得几乎不见,所以要在所在的div清除浮动):

效果图:

经测试,以上效果是在chrome,ff,IE8、9、10下的显示,在IE7中显示达不到效果:

至少整个外观样式不合格(下拉框和右边文字的距离没拉开),所以可以在css中直接针对IE7写hack样式:

然后距离至少是拉开了的:

====================================分割线 2016.10.10=========================================
chosen组件实现下拉框的更多相关文章
- Android学习使用基本界面组件(下拉框,单选框,复选框,数字转轮,滚动条)
(一)建立单选框按钮 RadioGroup和RadioButton建立单选框按钮 字符串资源文件: <resources> <string name="app_name&q ...
- 微信小程序:picker组件实现下拉框效果
一.wxml中代码 <view class="in_order_Param"> <text>状态:</text> ...
- jQuery下拉框扩展和美化插件Chosen
Chosen 是一个支持jquery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组, ...
- 自绘制HT For Web ComboBox下拉框组件
传统的HTML5的下拉框select只能实现简单的文字下拉列表,而HTforWeb通用组件中ComboBox不仅能够实现传统HTML5下拉框效果,而且可以在文本框和下拉列表中添加自定义的小图标,让整个 ...
- ComboTree( 树型下拉框) 组件
本节课重点了解EasyUI中Tree(树)组件的使用方法, 这个组件依赖于Combo(下拉框)和 Tree(树)组件.一. 加载方式//class 加载方式<select id="cc ...
- Combo( 自定义下拉框) 组件
本节课重点了解 EasyUI 中 Combo(自定义下拉框)组件的使用方法,这个组件依赖于ValidateBox(验证框)组件 一. 加载方式自定义下拉框不能通过标签的方式进行创建.<input ...
- 从后台绑定数据到ligerui 的comboBox下拉框组件
这次来记录一下ligerUI的comboBox下拉框组件,ligerUI的API里也有相关描写叙述,上面都是前台写死数据,然后显示在组件中,我这次要说的是将后台的数据绑定到下拉框组件中,废话不多说. ...
- 由于抽签HT For Web ComboBox下拉框组件
传统HTML5的下拉框select仅仅能实现简单的文字下拉列表,而HT for Web通用组件中ComboBox不仅可以实现传统HTML5下拉框效果,并且可以在文本框和下拉列表中加入自己定义的小图标, ...
- [jQueryUI] – Chosen:select下拉选择框美化插件及问题
Chosen 是一个支持jquery的select下拉框美化插件,它能让丑陋的.很长的select选择框变的更好看.更方便.不仅如此,它更扩展了select,增加了自动筛选的功能.它可对列表进行分组, ...
随机推荐
- 初学者的python学习笔记2
本来想是先把作业二搞定的,结果发现作业二用的字典,一脸懵逼,还是先搞定第二课吧.其实第二课和第一课内容差不多,据说是第一课的老师去美国了……不管怎么样先整理一下吧. ----------------- ...
- liquibase的使用
前言 liquibase是一个数据库持续集成插件.独立于数据库存在,oracle,mysql,db2,h2,sql server,postgresql都能使用.它使用配置文件来更新数据库结构,并加入版 ...
- SharePoint Framework 概述
博客地址:http://blog.csdn.net/FoxDave 本文翻译自新出的SharePoint Framework概述介绍文章,原文地址:http://dev.office.com/sh ...
- 移动混合开发之android文件管理新建文件和删除文件
今天经过一天超过8小时的实践,有很多CSS上的细节需要注意: 1, /*注意是对before的操作*/ .content ul li .icon-check-empty:before{ display ...
- Android异步消息处理机制
安卓子线程无法直接更改UI,所以需要异步消息处理机制来解决 <?xml version="1.0" encoding="utf-8"?><Li ...
- GIS的发展
2016年2月15日,博客园的blog申请成功了,这是我的第一篇随笔,发一个GIS的发展的视频链接 http://buluo.qq.com/p/detail.html?bid=15060&pi ...
- freemarker string= null
在java代码中经常会出现以下代码: String name; …………………… if(null == name || name.length == 0){ return; } 这行代码用freema ...
- Socket通信代码(原理)
1.运行环境:NetBeans IDE 6.0.1 2.说明:先运行服务器端,再运行客户端. 3.服务器端代码: 新建java类Test import java.net.*; import java. ...
- 领域设计之模型充血、Repository对象注入
工作中接触了不少项目组,他们在实际的项目开发中,Domain Object的贫血模型设计,还是主要的应用的范式.原因在于,贫血模型模型设计中,把所有涉及持久化的业务逻辑,封装到了Domain Serv ...
- thoughtworks编程题
微博看到vczh分享的thoughtworks的一道题目https://www.jinshuju.net/f/EGQL3D,代码写完之后才得知这个公司并不是我想的那样美好. 题目: FizzBuzzW ...