使用模拟的媒体查询来改变页面中 <select>
的字体大小。
我也遇到了其他浏览器的问题,但是我暂时通过从DOM中分离元素,等待一小段时间后重新附加它们来解决这些问题。
但在MSIE8中,<option>
的高度仍然与设置的最大字号相等,即使已经不再应用该样式。
http://fiddle.jshell.net/U3bzT/show/light/
期望结果:
切换到更小的字体大小时,font-size
被更新,但是 <option>
的行高/高度没有被更新。
对于 select-multiple 和 select-one 都会出现此问题
有什么方法可以解决这个问题吗?
注:<select>
可能已经绑定了事件,因此无法使用复制品。
<script>
// just some code to simulate media query on/off state
var select;
setTimeout(function(){
select = document.getElementsByTagName("select")[0];
select.style.fontSize='40px';
webkitFix();
setTimeout(function(){
select.style.fontSize='10px';
webkitFix();
},5000);
},5000);
function webkitFix(){
document.body.removeChild(select);
setTimeout(function(){ document.body.appendChild(select); }, 1);
}
</script>
<select multiple size="6" style="font-size:10px">
<option>AAAAAA1</option>
<option>BBBBBB2</option>
<option>AAAAAA3</option>
<option>BBBBBB4</option>
<option>AAAAAA5</option>
<option>BBBBBB6</option>
<option>AAAAAA7</option>
<option>BBBBBB8</option>
<option>AAAAAA9</option>
</select>