【发布时间】:2017-12-10 08:12:47
【问题描述】:
我正在尝试在<th> 上添加几个图标,方法是将它们放入position: relative,然后将图标作为::after 伪元素在<th> 中使用position: absolute,并将图标作为背景(因为它们是精灵)。这在 Google Chrome 和 Firefox 中完美运行,但在 Internet Explorer 中却不行。
这是演示问题的 sn-p(只能在我的版本 11 的 Internet Explorer 中重现):
* {font-family: 'Segoe UI';}
.arrow {border: 1px solid #ccc; padding: 5px; line-height: 1; background-color: #00f; color: #fff; position: relative; cursor: pointer; padding-right: 20px;}
.arrow-normal::after {width: 9px; height: 12px; margin-top: -6px;}
.arrow-up::after {width: 9px; height: 6px; margin-top: -3px;}
.arrow-down::after {width: 9px; height: 6px; margin-top: -3px; background-position: 0 -6px;}
.arrow::after {
top: 50%;
position: absolute;
right: 5px;
content: ' ';
display: block;
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAnZJREFUeNpsk99rUmEYx1/l+Hvmj8HwQgQvvHKS0LqJQCOIMnTmqOb8UTfdDjb/iYneDAaCIhgSE/NnTOZNMAapkCFYbMEIuiswaHPq5tHj6XlsR3TsCw/nfR/e9/M+vw4RCAQEDWW325+0Wq0fDofDKhKJyMLCwthYlh1btVolpVKJHB4eklgsdlur1X4LBALPCoUCSSaTJJvNkgnM6XTaz0FwkYVP2+VyPRIKhTPASqVCDg4OSCQSWZqfn/8F11h4uLe5ufk8l8v9B6JWVlacl5eXF+yUOp3OOfjHUA7YbDbJzs7Oklqt/o0wziiKotfX11fL5TIha2trL/v9Ps3eIIB2fT7fMgeMx+P35+bm/kzDpozZ2Njw8xqNxkeDwXC32+22eSByJQTKZLJbJycnn81m80P0QRneQcp2uVz+F7aTsyjIUKbX65s8t9st1Gg0gsFgwE7BCLKhvryzs7MBREajv16vU0qlUsDn81kOeHV2vO/1egxlMpkYm82GL5DrwvpBRAy3h1qNisXigGvktCAgsri4OKJgVEqwuAOOzrUzLFyUSySSL7B+jI6tra14Pp9/ClGeQmQzKUN0MqPR+JVsb2/7R6MRc1NThsNhP5FIvOCasre390ChUJze1BRMOxgMvsGRIdFodBUinOk0TdO9VCrlgBmbjA08QPb39++pVKqZTkNNmVAo9Ap+CsKXSqU4sCmYfA9ALjB8/GYymdWjo6MPYrF4khY0iFit1sru7u4yDDZCsXE0wF57vd637Xab8NGJ0Fqt9h4idcOln+l02nV8fDwDQ2HnEWqxWD7BGZtOp/seDof9Ho8niTDM4p8AAwB6jpihgDknYAAAAABJRU5ErkJggg==");
}
<table>
<thead>
<tr>
<th class="arrow arrow-normal">Two Line<br />Column</th>
<th class="arrow arrow-up">Single</th>
<th class="arrow arrow-down">Three<br />Line<br />Column</th>
</tr>
</thead>
<tbody>
<tr>
<td>Item 1</td>
<td>Item 2</td>
<td>Item 3</td>
</tr>
</tbody>
</table>
当我在 Google Chrome 中运行它时,我得到了预期的输出:
谷歌浏览器中的所有图标都在中间完美对齐。
然而,在 Internet Explorer 中,问题在于,当所有 <th> 元素具有不同的内容时,它们的高度都正确,但定位却混乱了。
我看到的是,在 Internet Explorer 中,高度计算正确,但对于 position,调整表格之前的初始高度被考虑在内。有什么办法可以解决这个问题吗?
注意 1: 我还研究了IE vertical centering bug with table-cell parent and absolutely positioned pseudo-element,这需要我使用另一个元素并提供position: relative,但这在我的情况下是不可能的,因为我的 HTML 是固定的并且可以不能改变。它是由我无法控制的企业应用程序生成的。
注意2:因为我已经知道每个元素的高度,所以我使用负边距技术。
如果可以,请告诉我。
【问题讨论】:
-
这让我震惊了一天,感谢您花时间添加此内容
标签: html css internet-explorer internet-explorer-11