首页 > 代码库 > select标签的字体居中问题

select标签的字体居中问题

  今天编写JSP时,发现使用了<s:select>实现选择框的某一选择栏,其中的字体没有垂直居中,在网络上查找了一下关于select标签垂直居中显示内容的问题,发现不少人也遇到同样的问题,有人干脆把select称作最恶心的标签,因为几乎不能对它应用任何CSS样式。下面看看select有多恶心。

  

   <style type="text/css">              select{           height:50px;           width:100px;           font-size:15px;       }   </style>    select>        <option value="volvo">Volvo</option>        <option value="saab">Saab</option>        <option value="opel">Opel</option>        <option value="audi">Audi</option>    </select>

  为了突显select标签无法垂直居中内容问题,这里故意把select的高度设为50px,远大于字体的。结果见下图,select里面的内容是靠左顶端对齐:

  尝试在option添加CSS样式:vertical-align: middle; 一样不见效,如下:

<style type="text/css">       select{           height:50px;           width:100px;           font-size:15px;       }       select option{           vertical-align: middle;       }   </style>    <select>        <option value="volvo">Volvo</option>        <option value="saab">Saab</option>        <option value="opel">Opel</option>        <option value="audi">Audi</option>    </select>

  事实上,所有用到select标签的标签库:如struts2的<s:select>等,都存在同样问题。但是,如果是在IE(这里是11)及chrome(这里是版本 35.0.1916.153),select标签能够自动垂直居中显示。

  在html5的select的内容显示情况没有得到改善。如果需要用到选择框又要追求好看,可以考虑使用div+input标签模拟select标签功能,具体可以参考extjs的comboBox:

 

  简单通过firedebug可以看到extjs显示select效果并没有遇到select标签,所以显示效果非常优雅。