您现在的位置是:网站首页> 编程资料编程资料
CSS自定义select下拉选择框的样式(不用其他标签模拟)使用CSS样式写选择框右侧小三角
2023-10-26
236人已围观
简介 怎么自定义select下拉选择框的样式,使用纯CSS实现,把浏览器默认的样式覆盖掉还是有其他的方法,select靠纯CSS是不能解决这个自定义样式问题,下面为大家讲解下CSS实现的思路

今天群里有人问到怎么自定义select下拉选择框的样式,于是群里就展开了激烈的讨论,刚开始一直就是考虑怎样使用纯CSS实现,把浏览器默认的样式覆盖掉,但最后均因兼容问题处理不好而失败告终,最后的解决方案就是用其他的元素(如ul,li)模拟下拉菜单,或者是使用网上一些现成的插件。
其实select这个东西只靠纯CSS是不能解决这个自定义样式问题的,但既然折腾了这么久,还是说一下CSS实现的思路吧。
首先对于默认的样式:

刚开始想到使用背景,但经试验对select设置背景是无效的,于是后来就想到了覆盖,用其它元素把那个向下的箭头盖住,然后给这个元素设置背景,写了个demo发现可行,于是就有了下面的这些。
首先用一个a标签套住select:
复制代码
代码如下:在css里让select“隐藏”,但不能display:none;,不然select元素不存在了,在这里我们可以把select的透明度改为0,这样就看不见了,但并不影响下拉框,点击时下拉框还会出现;这样貌似是可行了,但这是会发现每次选择选项后,选项并未显示,这就是select隐藏的原因了,连着文字也隐藏了,因此我们需要一个额外的标签储存每次选择的选项,下面是完整的HTML代码:
复制代码
代码如下:CSS代码:
复制代码
代码如下:* {
margin: 0;
padding: 0;
}
body {
padding: 50px 50px;
}
.btn-select {
position: relative;
display: inline-block;
width: 150px;
height: 25px;
background-color: #f80;
font: 14px/20px "Microsoft YaHei";
color: #fff;
}
.btn-select .cur-select {
position: absolute;
display: block;
width: 150px;
height: 25px;
line-height: 25px;
background: #f80 url(ico-arrow.png) no-repeat 125px center;
text-indent: 10px;
}
.btn-select:hover .cur-select {
background-color: #f90;
}
.btn-select select {
position: absolute;
top: 0;
left: 0;
width: 150px;
height: 25px;
opacity: 0;
filter: alpha(opacity: 0;);
font: 14px/20px "Microsoft YaHei";
color: #f80;
}
.btn-select select option {
text-indent: 10px;
}
.btn-select select option:hover {
background-color: #f80;
color: #fff;
}
最后效果是这样的(Chrome上的截图):


但这样做并不能完全覆盖浏览器的默认样式,如图中下拉框的边框处理不掉,另外,在ie上就更难看了,所以真正项目中使用的话,还是用插件吧,或者用其他元素代替。
到这里,本文并没有完,还要用到一段js,需要把选中的内容放到span标签里显示出来,下面是js代码:
复制代码
代码如下:var $$ = function (id) {
return document.getElementById(id);
}
window.onload = function () {
var btnSelect = $$("btn_select");
var curSelect = btnSelect.getElementsByTagName("span")[0];
var oSelect = btnSelect.getElementsByTagName("select")[0];
var aOption = btnSelect.getElementsByTagName("option");
oSelect.onchange = function () {
var text=oSelect.options[oSelect.selectedIndex].text;
curSelect.innerHTML = text;
}
}
ok,终于完了。
相关内容
- 让你的HTML5&CSS3网站在微软的浏览器中也能运行检测浏览器对HTML5和CSS3支持度的方法2013年五大主流浏览器 HTML5 与 CSS3 兼容性大比拼IE9beta版本浏览器对HTML5/CSS3的支持各大浏览器 CSS3 和 HTML5 兼容速查表 图文不同浏览器对CSS3和HTML5的支持状况HTML5 CSS3新的WEB标准和浏览器支持关于老式浏览器兼容HTML5和CSS3的问题
- 使用css3背景渐变中的透明度来设置不同颜色的背景渐变CSS3制作半透明边框(Facebox)类似渐变css实现透明渐变特效的示例代码
- 使用条件注释判断 IE 浏览器版本适用于IE5.0及以上版本面向XHTML的IE条件注释IE的有条件注释优点和缺点css 条件注释区分非IE浏览器 针对主流浏览器的CSS-HACK写法及IE常用条件注释 ie10 css hack 条件注释等兼容方式整理浏览器兼容之旅第一站:如何在页面中创建IE条件注释条件注释判断浏览器(ie系列)详谈IE条件注释
- IE7中绝对定位元素之间的遮盖问题示例探讨
- 天天炫斗橙装图鉴 天天炫斗橙装兑换条件及加成属性_手机游戏_游戏攻略_
- 天天酷跑钻石修改器现在还能使用吗_手机游戏_游戏攻略_
- 腾讯雷霆战机连接失败服务器操作失败的解决方法_手机游戏_游戏攻略_
- 天天酷跑PVP场刷钻石技巧心得 轻松破万米视频教程推荐_手机游戏_游戏攻略_
- 雷霆战机修改无限烈火最新辅助教程攻略推荐_手机游戏_游戏攻略_
- 雷霆战机升级材料攻略介绍说明_手机游戏_游戏攻略_
