我正在谷歌Chrome浏览器上做一个网页。它以以下样式正确显示。

table {
    display: table;
    border-collapse: separate;
    border-spacing: 2px;
    border-color: gray;
}

需要注意的是,我没有定义这些样式。在Chrome开发工具中,它说用户代理样式表代替CSS文件名。

现在,如果我提交了一个表单,出现了一些验证错误,我会得到以下样式表:

table {
    white-space: normal;
    line-height: normal;
    font-weight: normal;
    font-size: medium;
    font-variant: normal;
    font-style: normal;
    color: -webkit-text;
    text-align: -webkit-auto;
}

table {
    display: table;
    border-collapse: separate;
    border-spacing: 2px;
    border-color: gray;
}

这些新样式的字体大小影响了我的设计。有没有办法强制我的样式表,如果可能的话,完全覆盖Chrome的默认样式表?


当前回答

在你自己的CSS内容中定义你不想从Chrome的用户代理样式中使用的值。

其他回答

关于“用户代理样式表”的概念,请参考CSS 2.1规范中的Cascade章节。

用户代理样式表将被您在自己的样式表中设置的任何内容所覆盖。它们只是底层:在没有页面或用户提供的任何样式表的情况下,浏览器仍然必须以某种方式呈现内容,而用户代理样式表只是描述这一点。

因此,如果您认为用户代理样式表有问题,那么实际上是标记有问题,或者样式表有问题,或者两者都有问题(对此您没有编写任何内容)。

我有一个解决办法。检查:

错误

<link href="assets/css/bootstrap.min.css" rel="text/css" type="stylesheet">

正确的

<link href="assets/css/bootstrap.min.css" rel="stylesheet" type="text/css">

每个浏览器都提供一个默认样式表,称为用户代理样式表,以防HTML文件没有指定。指定的样式将覆盖默认值。

因为没有为表格元素的框指定值,所以应用了默认样式。

目标浏览器是什么?不同的浏览器会设置不同的默认CSS规则。尝试包括CSS重置,如meyerweb CSS重置或normalize.css,以删除这些默认值。谷歌“CSS重置vs正常化”来查看差异。

在第一行上用正确的文档类型将文档标记为HTML5,解决了我的问题。

<!DOCTYPE html>
<html>...