IE6,7下select宽度定死显示不全的解决方案

来源:互联网 发布:谷歌退出中国 知乎 编辑:程序博客网 时间:2024/06/17 15:27
<div class="selectwrap"><select name="test"><option value="1">123123123isdhakjhfjhadlsjfhldkjsahfljkdsahfljkdsalfjkhsdljkfhasdjkhk</option><option value="2">中文3123123isdfhakjhfjhadlsjfhldkjssljkdsahfljkdsalfjkhsdljkfhasdjkhk</option></select></div><style type="text/css">.selectwrap{width:100px;height:30px;background:#f00;}.selectwrap select{width: 90px;zoom:1;*unicode-bidi:expression(function(e){var s = e.style, w = e.currentStyle.width;s.unicodeBidi='normal';e.attachEvent('onclick', function(){e.parentNode.style.position='relative';s.width='auto';s.position='absolute';});e.attachEvent('onblur', function(){e.parentNode.style.position='static';s.width=w;s.position='static';});e.attachEvent('onchange', function(){e.blur();});}(this));}</style>


如上代码,在IE6,7下的expression css表达式来给元素绑定事件,

在单击select的时候设置select绝对定位,宽度自动,并设置其父元素定位为相对定位,如果其父元素默认就定位很有可能造成附近(前面)select元素被其父元素遮挡t的情况。

在select失去焦点的时候还原为原来的样式设置,并将其父元素定位样式设置为静态定位。

在更改值即change事件的时候执行blur,让其修改对应css来实现真正的元素还原。

0 0
原创粉丝点击