按钮上的最小宽度会导致IE中右侧的空格

Ang*_*nes 2 css internet-explorer button internet-explorer-9

我目前正在调查CSS min-widthInternet Explorer中属性的奇怪行为.我听说过使用文本对齐的错误min-width.但这个对我来说是新的.

<table cellspacing="0" cellpadding="0">
  <tr>
    <td><button>Einloggen</button></td>
  </tr>  
</table>
Run Code Online (Sandbox Code Playgroud)

当我将min-width按钮设置为实际拉伸按钮的值时,它右侧的空间出现/ td变宽.我只在IE中看到过这种行为.同时检查Opera,FF,Chrome和Safari.

这是一个显示包含示例的jsfiddle.

这是一个已知的错误?有没有解决方法?

Sam*_*son 6

在这里使用Internet Explorer 9似乎有一个奇怪的问题.有趣的是,版本8和10都正确地呈现了这个演示,没有问题.

话虽如此,关于IE9,我找到了似乎可以解决问题的解决方法.我的成功是使用伪元素::before作为后备:

/* For everybody but IE9 */
button {
    min-width: 200px;
}

/* For Internet Explorer 9 */
button::before {
    content: "" \9;
    display: block;
    width: 200px;
}
Run Code Online (Sandbox Code Playgroud)

小提琴:http://jsfiddle.net/JNDUz/21/

虽然这有效,但它确实导致Internet Explorer 10中的按钮略宽(伪元素宽度+父填充/边距).这些黑客在IE10中没有业务,但很难将CSS单独隔离到某些浏览器.这个\9技巧可以将它与非IE浏览器隔离开来,但有更好的方法:

<!--[if IE 9]><html lang="en-us" class="no-js ie9"><![endif]-->
Run Code Online (Sandbox Code Playgroud)

通过将HTML标记包装在条件注释中,我们现在可以使用我们的修复单独定位IE:

/* For Internet Explorer 9 */
.ie9 button::before {
    content: "";
    display: block;
    width: 200px;
}
Run Code Online (Sandbox Code Playgroud)