select中⽂字垂直居中解决办法
我们知道select标签在各个浏览器中的属性和各浏览器的⽀持各有些不同,从⽽造成select选择框在各浏览器的显⽰有不同,下⾯我们通过对主要外形CSS属性的⽀持,打造全兼容select。
我对select的height、padding、line-height分别利⽤控制变量的⽅法写了个DEMO在各浏览器上测试三种情况:height.100.padding.0、padding.100、padding,结果如链接图⽚各浏览器DEMO外观
我们可以得出以下研究属性。
ie6ie7ie8ie9ff ch sf op
默认⾼度22px22px19px20px19px19px
height F T T T T T F T
padding F F T T T T F T
line-height F F F F F F T F
T T T F F T T Tcss实现垂直水平居中
⽂字垂直居
中
通过上述的研究成果属性汇总,我们知道IE6是⽆论如何设置都是固定⾼度为22px不变的,⽽其他浏览器除safari都是⽀持height属性的,那么我们设置 height:22px。那么现在我们修正⼀下safari浏览器,,我们发现仅有safari⽀持line-height属性那么正好可以利⽤line-height修正其⾼度为22px,在font-size为12px的前提下设置 line-height:22px,最后FF和IE9⾥⾯的⽂字不居中,对其设定 padding:2px 0,我们发现FF和IE9都居中了,但是各个浏览器的select的⾼度也并没有增加,那么这⾥有点疑问,在⾼度设定的情况下,⼩量数字的padding不增加整体⾼度?
下⾯是全兼容代码⽰例。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>demo</title>
<style>
*{padding:0; margin:0}
body{font-size:12px}
select{height:22px; line-height:18px; padding:2px 0}
</style>
</head>
<body>
<div >
<select>
<option>演⽰问题⼀</option>
<option>演⽰问题⼆</option>
<option>演⽰问题三</option>
<option>演⽰问题四</option>
<option>演⽰问题五</option>
</select>
</div>
</body>
</html>
另外,如果你想要设置宽度或⾼度,还想要实现在各浏览器中兼容的效果,那么你最好使⽤js做出下拉效果,这就和select标签没有关系了。
淘宝使⽤的是js效果实现的下拉效果;⽽京东使⽤的是select,但其⾼度都在20px左右,所以⽂字的效果看上去是垂直居中的,在Google中你可以看到改变⾼度⽂字还是居中,但是在FF下⽂字就偏上了,所以要使⽤select的话,最好还是按照上⾯的兼容性写法吧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论