对select表单控件进行美化

来源:互联网 发布:酱紫的网络语言意思 编辑:程序博客网 时间:2024/05/16 12:46

最近在一个项目中,要在原生的select表单控件进行美化成input表单控件一样的样式。

对此,我的想法是把这个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);


0 0
原创粉丝点击