IE7下的select框高度设定

一:问题提出

这个是一个广为人知的bug了。

在IE7下面无法设定select的高度:

select {

height:40px;

}


上面的设定能够在chrome跟firefox下面有效,如下图:

IE7下的select框高度设定 - LHY_nana - LHY_nana BLOG

 在IE7下面的效果就是IE浏览器默认的高度:

IE7下的select框高度设定 - LHY_nana - LHY_nana BLOG

 应该怎样去思考这个问题?我努力尝试网上各种各样的方法,有javascript模拟的,有css模拟的。


二:问题探索

方法1:javascript模拟:

自己在研究的过程中,javascript模拟的select框成品是这样子的:

IE7下的select框高度设定 - LHY_nana - LHY_nana BLOG

首先的思想就是先将<select>隐藏起来(display:none || filter)。

然后,将整个<select>放进一个表单里,将选定的<option>作为一个<input>标签的value。

然后循环读出<option>的值,将其放进新建的<li>中。这是基本的html文档结构。

那么利用javascript动态控制事件。

a.我们首先将标签<li>那块设置为隐藏(display:none)

b.当点击上图存储<option>value<option>值value的<input>标签,我们就将绑定事件(display:block)

c.利用mouseover和mouseout动态增添css控制,如上图蓝色的条条

d.鼠标单击选中的时候,将<option>value值传给<input>框同时将<li>们设为隐藏。


很明显,上述的那个模拟框还需有以下的优化:

a.<option>多起来,它没有<select>应该有的滑动框。

b.<input>框右边应该有个小倒三角形等背景


方法2:css模拟

以下是在IE7下的效果:

IE7下的select框高度设定 - LHY_nana - LHY_nana BLOG


以下是html结构:

IE7下的select框高度设定 - LHY_nana - LHY_nana BLOG


外层div其实最主要需要设置边框和padding从而模拟高度,第二层div用处是遮盖select框的边框。

然后将div层与.coutrySelect设置overflow:hidden;就可以了。

这个方法是最简单的利用css模拟select框,推荐此法,由于这是在IE7下专用的css,所以,我们可以适当地增添css的hack:

.select-box { *padding: 11px 10px 3px 0px; *width: 145px; *border: 1px solid #ccc; *background: #fff; display: inline; float: left; margin-right: 5px; } .select-wrap { *width: 155px; *height: 22px; *line-height: 16px; *overflow: hidden; /**padding-left: 2px;*/ } .countrySelcet { *margin: -2px 0 0 -2px; *width: 200px; *height: 20px; *font: normal 12px/20px Tahoma,Geneva,sans-serif; *overflow: hidden; *display: block; }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值