html下拉选择框箭头改为年,CSS自定义select下拉选择框的样式(不用其他标签模拟)...

d5ffd5617a49d75157f06ed2c5169490.png

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

其实select这个东西只靠纯CSS是不能解决这个自定义样式问题的,但既然折腾了这么久,还是说一下CSS实现的思路吧。

首先对于默认的样式:

4de1e2a59f08073bf5f3e720dae4bf08.png

刚开始想到使用背景,但经试验对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上的截图):

a1f3b5b0a6e067598ab30c34c01f0766.png

8f04fa1d45f70478cde0bb19eb25a71a.png

但这样做并不能完全覆盖浏览器的默认样式,如图中下拉框的边框处理不掉,另外,在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,终于完了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【语言处理与Python】10.1自然语言理解\10.2命题逻辑

10.1自然语言理解 查询数据库 如果有人提出一个问题: Which country is Athens in? 得到的回答应该是: Greece. 这个数据可以通过数据库语言得到答案: SELECT Country FROM city_table WHERE City athens 这里有一个文法,可以把句…

程序员的数学笔记3--迭代法

第三节课程,介绍的是迭代法。 前两节笔记的文章: 程序员的数学笔记1–进制转换程序员的数学笔记2–余数 03 迭代法 什么是迭代法 迭代法,简单来说,其实就是不断地用旧的变量值,递推计算新的变量值。 这里采用一个…

html网页响应时间调试,HTML5 使用performance.now衡量Webworker的响应时间

JavaScript语言:JaveScriptBabelCoffeeScript确定var worker, start, end,send document.querySelector(.send),receive document.querySelector(.receive > span),bar document.querySelector(.bar > span);var sendMessage function() {start performa…

机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)

上一篇机器学习入门系列(1)–机器学习概览简单介绍了机器学习的一些基本概念,包括定义、优缺点、机器学习任务的划分等等。 接下来计划通过几篇文章来介绍下,一个完整的机器学习项目的实现步骤会分为几步,最后会结合《…

在Web服务器磁盘上缓存数据和HTML页面

有时候,有“许多”数据要在内存中缓存。“许多”是相对而言的,它取决于能消耗多少内存、缓存项目的数量以及取回数据的频度。任何情况下,如果需要在内存中缓存大量的数据,请考虑以text或者XML文件格式在Web服务器硬盘上做缓存。当…

html5 支持音频格式,html5中audio支持音频格式

HTML5 Audio标签能够支持wav, mp3, ogg, acc, webm等格式,但有个很重要的音乐文件格式midi(扩展名mid)却在各大浏览器中都没有内置的支持。不是所有的浏览器都支持MP3 OGG之类的,每个浏览器因为版权的问题支持的格式都是不一样的。浏览器和音频兼容性浏览…

Ubuntu 8.04 Linux系统下面编译更新内核版本

在 VirtualBox 虚拟机上面测试的,ubuntu 8.04系统。1. 下载内核源代码http://www.kernel.org/ 下载The latest stable version of the Linux kernel is: 2.6.25.7 ,点后面的“F” 按钮下载http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.…

Python-100 | 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。http://www.runoob.com/python/python-100-examples.html另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。Example-1 三位数组合题目&…

html5qq邮箱代码,使用qq邮箱批量发送邮件 实例源码(支持富文本)

资源下载此资源下载价格为3D币,请先登录资源文件列表MailSending/MailSending/App.config , 184MailSending/MailSending/Form1.Designer.cs , 15243MailSending/MailSending/Form1.cs , 10655MailSending/MailSending/Form1.resx , 438794MailSending/MailSending/…

Python-100 练习题 01 列表推导式

最近打算好好练习下 python,因此找到一个练习题网站,打算每周练习 3-5 题吧。 http://www.runoob.com/python/python-100-examples.html 另外,这个网站其实也还有 Python 的教程,从基础到高级的知识都有。 Example-1 三位数组合…

Python dict 调试技巧 —— 利用YAML存储dict内容

我们经常跑一些程序时dict生成会比较久或比较大,这时候我们可以中途将其保存在临时调试文件。一般可考虑保存成如json,xml或yaml。 我这里用一个比较简单的实现,利用PyYAML。 1 $ sudo pip install pyyaml 保存dict的时候利用dump函数 1 import yaml 2 …

nginx html解析插件,nginx配置信息的解析流程

nginx配置信息的解析流程2011年9月9日 1,744 次浏览请关注最新修正合订:这一系列的文章还是在09年写的,存在电脑里很久了,现在贴出来。顺序也不记得了,看到那个就发那个吧,最近都会发上来。欢迎转载,但请保…

机器学习数据集的获取和测试集的构建方法

这是机器学习入门系列(2)–如何构建一个完整的机器学习项目的第二篇 上一篇机器学习入门系列(2)–如何构建一个完整的机器学习项目(一)介绍了开始一个机器学习项目需要明确的问题,比如当前任务属于有监督还是无监督学习问题,然后…

SQL日期格式化

Sql Server 中一个非常强大的日期格式化函数 Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GETDATE(), 3…