CSS:Chrome 和 Safari 似乎为宽度“添加”边框,而 IE、Firefox 和 Opera 没有

Posted

技术标签:

【中文标题】CSS:Chrome 和 Safari 似乎为宽度“添加”边框,而 IE、Firefox 和 Opera 没有【英文标题】:CSS: Chrome and Safari seem to 'add' border to width, while IE, Firefox & Opera don't 【发布时间】:2011-02-01 15:34:47 【问题描述】:

我正在尝试为我的网站实现跨浏览器的一致性。

关于这个页面:http://www[insert-dot-here]geld[insert-dash-here]surfen[insert-dot-here]nl/uitbetalingen.html(请注意,我不希望这个 URL 被 seo-bots 抓取)

如果您在 IE、Firefox 或 Opera 中查看此页面,一切都很好,但在 Chrome 和 Safari 中,表格有点不合时宜(您可能会清楚地注意到)。

似乎是什么问题?

在我看来,在 Chrome 和 Safari 中,左右边框 (2px) 总共添加到设置的表格宽度中,而在其他浏览器中,边框被视为宽度的一部分。

(最)相关的 CSS 行如下(来自 table.css 文件,也可通过页面的源文件获得):

table.uitbetaling 
 margin: 11px 18px 10px 19px;
 border: 1px solid #8ccaee;
 width: 498px;
 padding: 0;

table.uitbetaling img, table.uitbetaling td 
 margin: 0;
 border: 0;
 padding: 0;
 width: 496px;

table.uitbetaling tr 
 margin: 0;
 border: 0;
 padding: 0 1px 0 0;

所以基本上我使用了表格结构来组织图像,如下所示:(表格的类是uitbetaling

<table>
<tr><td><img /></td></tr>
<tr><td><img /></td></tr>
...
<tr><td><img /></td></tr>
</table>

如果在这里我将table.uitbetalingtable.uitbetaling img, table.uitbetaling td 的宽度设置为相同的值(例如496498),Chrome 和Safari 中的“问题”就解决了,但是在Firefox 中右侧边框比空白。因为右侧边框不能“适应”了。 imgtd 必须至少比 table.uitbetaling 窄 2px,这样右边框才能在 Firefox 中可见。

有没有办法解决这个问题?

【问题讨论】:

顺便说一句;根据荷兰法律,该网站是否合法? "请注意,我希望这个 URL 不能被 seo 机器人抓取" 太晚了。您排名第一,该页面在 Google 上排名第二。这就是他们制作 htaccess 的目的。 关于可抓取性:所有主要机器人都尊重robots.txt。只需告诉他们离开:robotstxt.org 你有没有成功解决过这个问题?您还需要这方面的帮助吗? 【参考方案1】:

现在您应该使用 HTML5 文档类型,如果您在将边框添加到元素宽度时遇到问题,请查看 CSS 样式:box-sizing

border-box - 包括边框宽度/高度和填充宽度/高度,或者基本上您设置的宽度包括边框/填充

content-box - 您在元素上设置的宽度仅为内容区域,不包括填充或边框

还有一个我不使用的padding-box,一般以上两个就够了。

现在,我认为 IE8 使用的 box-sizing 与 Chrome/FF 等不同,这就是有时您会遇到问题的原因。您始终可以调试并检查 box-sizing 的设置。

注意:如果您没有 DOCTYPE,那么您处于 quirks 模式,并且 IE 在 box-sizing/box 模型上与 Chrome/FF 完全不同 - 这就是您的问题

【讨论】:

【参考方案2】:

将您的代码分割成最简单的元素并在每个浏览器上进行测试。当您发现差异时,您可以使用不同的浏览器检测方法来巧妙地更改每个实例的代码。话虽如此......如果你不想发疯,CSS会做的更多,如果可以的话,让像素去吧。

【讨论】:

【参考方案3】:

为了安全起见,我一般都是这样开表的:

&lt;table cellspacing="0" cellpadding="0"&gt;

它是“旧”HTML,但至少它强制浏览器保持一致性,然后我根据需要应用 CSS。

【讨论】:

【参考方案4】:

我检查过 Opera 11、Google Chrome 7.0.517.44 和 FireFox 3.6.12 发现与您的网站设计没有区别。

【讨论】:

他可能在 7 个月前修好了! /我笑了。我想不仅是他。【参考方案5】:

您是否声明了 DTD (DOCTYPE)?

阅读:

http://msdn.microsoft.com/en-us/library/bb250395.aspx

看起来浏览器有不同的边框显示方式,但 DOCTYPE 声明(位于 html 文档的顶部)强制它们符合实际标准,至少在 css 框模型方面。

注意:我总是使用 xhtml 过渡 DTD 来使我的文档尽可能兼容...

祝你好运!

【讨论】:

【参考方案6】:

试试:

tableborder-collapse:collapse;

【讨论】:

【参考方案7】:

最好始终在 css 中设置 tableborder-collapse:collapse;,然后在 html 中使用 cell-padding="0"cell-spacing="0"

【讨论】:

以上是关于CSS:Chrome 和 Safari 似乎为宽度“添加”边框,而 IE、Firefox 和 Opera 没有的主要内容,如果未能解决你的问题,请参考以下文章

Firefox中忽略的最大高度适用于Chrome和Safari

Safari css 宽度过渡不适用于不同的单位测量

在 Safari 中为网站重新加载 javascript 和 css 文件

使用 JavaScript 获取图像的真实宽度和高度? (在 Safari/Chrome 中)

chrome 和 safari 上的打印宽度不同

Safari:媒体查询未按预期宽度触发