对select表单控件进行美化
2015-05-30 16:47
393 查看
最近在一个项目中,要在原生的select表单控件进行美化成input表单控件一样的样式。
对此,我的想法是把这个select元素绝对定位并完全覆盖到一个input元素上,然后让这个select元素透明。这样,我看到的就会是一个input元素,但是点击该input元素时,会出现select元素的下拉选择,因为select虽然透明化了,但是option并不会受影响,这就完美解决了select的美化问题。html如下:
但是,对于不同浏览器,select的透明化有差异,有的浏览器只需要把select的边框和背景透明即可,但是有些浏览器不行,因此需要把整个select元素设置不透明度。css实现样式如下:
为了能够让该input元素同步select的取值,需要JavaScript来完成取值的同步:
对此,我的想法是把这个select元素绝对定位并完全覆盖到一个input元素上,然后让这个select元素透明。这样,我看到的就会是一个input元素,但是点击该input元素时,会出现select元素的下拉选择,因为select虽然透明化了,但是option并不会受影响,这就完美解决了select的美化问题。html如下:
<select class="select" id="sel_time" value=""> <option value="">请选择日期</option> <option value="12:00">12:00</option> <option value="13:00">13:00</option> </select> <input type="text" placeholder="请选择时间" id="time">
但是,对于不同浏览器,select的透明化有差异,有的浏览器只需要把select的边框和背景透明即可,但是有些浏览器不行,因此需要把整个select元素设置不透明度。css实现样式如下:
input[type="text"], .select{ width: 100%; height: 44px; margin: 10px auto 0px; padding: 0px 15px; box-sizing: border-box; font-size: 11pt; border: 1px solid #ccc; } .select{ background-color: transparent; opacity: 0; border: none; outline: none; color: transparent; position: absolute; } .select>option{ color: #2c2c2c; } .select>option:first-child{ color: #ccc; }
为了能够让该input元素同步select的取值,需要JavaScript来完成取值的同步:
var sel_time = document.getElementById('sel_time'), time = document.getElementById('time'); sel_time.addEventListener('change', function(){ time.value = sel_time.value; }, false);
相关文章推荐
- Linux系统编程——多任务的同步与互斥
- js取整数四舍五入
- SQL/Oracle取出第 m 条到第 n 条记录的方法
- linux学习笔记—shell脚本执行方式
- Android开发中的MVC设计模式
- JVM如何理解Java泛型类(转)
- SQL 存储过程
- 腾讯Bugly与极客学院再次联手,首推「iOS Crash 跟踪方法」视频教程!
- 设计模式——命令模式
- 软件工程项目冲刺阶段二:第六天
- DirectX实现光照、纹理
- ThreadLocal使用
- Windows、Ubuntu双系统下,给Ubuntu增加磁盘空间
- 数据库连接池的配置(mysql+sql2000+sql2008+sybaase)
- js加载顺序测试
- 电脑实用小技巧
- 禁止uiscrollview垂直方向滚动,只允许水平方向滚动;或只允许垂直方向滚动
- HTML5的localStorage、sessionStorage和SQL的CRUD的使用
- Serializable接口
- Java使用Comparable解决排序问题