w3c - HTML "buttons"是否应该与其他所有内容具有相同的盒子模型?

标签 w3c css

引用 button 元素和 typebuttoninput 元素,我遇到了我认为这是一个错误的行为(在 Firefox 和 Chrome 的最新版本中)。但考虑到表单元素通常是我认为的 w3 规则的异常(exception)情况,我想在假设我是对的之前我会要求验证。

行为是这样的:在标准模式下,当我向这样的元素添加边框时,边框出现在元素的宽度内。如果我手动将 box-sizing 设置为 content-box(使用供应商前缀),该行为符合我的预期,但是当 box-sizing 保留为默认值 它不是 content-boxHere's a jsfiddle example .如果你不想去 jsfiddle,这里是源代码:

<!doctype html>
<html>
<head>
<title>Broken box model?</title>
<style>
body {
    padding: 30px;
    background: brown;
}
div {
    position: relative;
}
input {
    background-color: #CCC;
    font-family: Helvetica, Verdana, sans-serif; /* Yes, I know Helvetica and Verdana are dissimilar. I don't care. Arial sucks. */
    font-size: 18px;
    font-weight: bold;
    color: white;
    text-transform: uppercase;
    border: 0;
    width: 150px;
    height: 90px;
    margin: 4px;
}
input:hover {
    margin: 0;
    border: 4px solid white;
}
input:active {
    margin: 0;
    border: 4px solid white;
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box;
    box-sizing: content-box;
}
</style>
</head>
<body>
    <div>
    <input type="button" value="I am a button" />
    </div>
</body>
</html>

这是正确的行为,还是我偶然发现了错误?

最佳答案

显然这个错误已经报告给 Chrome 和 Firefox。漏洞在于,在这两种情况下,这些元素都在其浏览器样式表中设置了 initial box-sizing: padding-box 值。所以它在技术上不是默认值(初始!=默认值)。然而,将这些元素恢复为 box-sizing: content-box 的唯一方法是为 content-box 使用专有的浏览器扩展,因此没有任何真正的 CSS 兼容方法来做到这一点。 CSS 2.1 不存在 box-sizing,专有浏览器扩展对 CSS 3 无效。

关于w3c - HTML "buttons"是否应该与其他所有内容具有相同的盒子模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334766/

相关文章:

添加/删除字段的 Javascript 函数

css - 使用 twitter bootstrap 在一行中挤压按钮

html - 如何用边界边上的链接创建一个圆

html - 是否可以在类似于 SVG 开始和结束位置的 CSS 背景中设置渐变开始和结束位置?

javascript - 关于 CSS 媒体查询的问题

xml - 双斜杠 (//) 作为 XML 注释

java - XML解析后Element Node对象转换为Text Node

javascript - 如何检测 XMLHttpRequest 是否支持 responseType = "arraybuffer"?

html - Bootstrap4 主体不显示

html - Angular 自定义指令 css 折叠子菜单