html - 为什么删除边框后默认按钮会改变颜色?

标签 html css

从运行下面的代码片段可以看出,移除边框后背景颜色会变暗。我猜它与浏览器默认样式表中的 background-color: buttonface; 有关,但我无法理解它在 w3 上的简短描述。

浏览器:Ubuntu 18 上的 Chrome 78。

Demonstration

.noBorder {
  border: none;
}
<button type="button" class="noBorder">No border</button>
<button>With border</button>

最佳答案

我认为您不会在经典 CSS 世界中找到对这种行为的解释,因为按钮是特殊元素。您可能需要深入了解每个浏览器如何实现按钮元素以了解正在发生的事情。

我没有任何官方证据,只能使用简单的词:按钮具有浏览器应用的默认样式(与边框和背景相关),如果您尝试更改任何值,您将破坏一切。

例子:

<button style="background-color:grey">button</button>
<button style="border-color:grey">button</button>
<button style="border-width:3px">button</button>
<button style="border-radius:5px">button</button>
<button style="border-image:none">button</button>
<button style="border-image-slice:1">button</button>
<button style="background-origin:content-box">button</button>
<button style="background-clip:content-box">button</button>
<button>button</button>

 

在上面,您会注意到,如果我们更改任何与边框或背景相关的规则(即使是不相关的规则,如 border-image-slice背景剪辑)。在 Firefox 中,它是不同的,因为最后四个按钮将保持其默认样式。不知道其他浏览器,但它可能也不同。

更新

在最新版本的 Chrome 中,输入元素似乎也发生了同样的事情:

<input>
<input style="border-image-slice:1">
<input style="border-image:none">
<input style="border-width:3px">
<input style="background-origin:content-box">

关于html - 为什么删除边框后默认按钮会改变颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59100843/

相关文章:

html - 使用 flex-grow 的 Flexbox 可以将图像大小增加 50%

element.style 的 jQuery 高度

html - 删除 AnchorTag IE 边框

javascript - 使用 Javascript 或 CSS 检测形状上的点击/悬停,而不是其框模型的矩形

javascript - 大小改变 &lt;input&gt;

javascript - 如何检查多个ajax请求的完成情况?

javascript - 使用 HTML5 在拖放中切换内容

html - 如何在每个列表项的末尾添加 V 形,从右侧对齐

javascript - 将带有javascript函数的span标签添加到html表中

html - 大型 html 表格速度慢吗?