【问题标题】:CSS cross-browser issue with DIV top propertyDIV 顶部属性的 CSS 跨浏览器问题
【发布时间】:2013-10-26 07:27:40
【问题描述】:

有一个问题让我发疯了好几天。我为 Wordpress 创建了一个主题,尤其是 CSS http://fabienmischler.com/。问题是右侧的 DIV 行仅在 Chrome Mac 版和 Safari 中对齐。所有其他浏览器(包括 CHROME Win 版)以不同方式呈现它。右侧的联系表单(即 slick-form 的修改插件)也会发生同样的情况。有什么优雅的方法可以解决这个问题,还是我需要使用 CSS hacks?如果是,Chrome Windows 版本如何?

容器是绝对的,DIV(带线)也是。

这是 DIV

#hr-title {
position: absolute;
right: 0;
top: 100px;
width: 14%;
height: 1px;
z-index: 9999;
background-color: black; }

此 DIV 是 Container-Div 的一部分(Wordpress 中的标准):

div#container {
margin: 0;
position: absolute;
left: 300px;
height: 100%;
right: 0;
top: 0; }

所有这些都包含在 Wordpress 的标准样式表 (style.css) 中。

我根据 Eric Meyer http://meyerweb.com/eric/tools/css/reset/ CSS 重置工作表

提前致谢!!!!

【问题讨论】:

  • 嗨。欢迎来到 Stackoverflow。在这里提问时,请在问题中包含相关代码。如果您给我们的只是指向您网站的链接,您可能不会得到很多答案。
  • 好的,谢谢,我会编辑我的帖子

标签: css internet-explorer google-chrome firefox


【解决方案1】:

这里的问题是文本在不同浏览器上的呈现,尤其是文本上的line-heightvertical-alignment。它们永远不会相同...

一个可能的解决方案是不使用underlined text decoration 作为标题下的行,而是使用与另一行相同的top 位置将其绘制为单独的元素。这样,它在每个浏览器上总是会正确对齐。

这里有一些示例 CSS 代码来实现它:

h1 { float: right; text-decoration: none; }
h1:before { content: " "; position: absolute; width: 100%; height: 1px; top: 101px; background: #000; }

更新

另一种解决方案是将行相对于标题进行绝对定位。将相对于标题的行设置为16px 的顶部与位于96px 上的外行同样对齐

#hr-title { top: 96px; }
h1.entry-title { float: right; position: relative; text-decoration: none; margin-bottom: 15px; }
h1:before { background: #000; width: 100%; height: 1px; top: 16px; position: absolute; content: " "; }

【讨论】:

  • 嗨,迈克,非常感谢您的回答,这已经有所帮助。不幸的是,它仍然没有正确呈现,我的 CSS hack 不再起作用了......我不知道为什么。
  • 我发现它没有,因为它创建了一个更大的窗口 - 不幸的是在左侧。因为“宽度:100%;”是添加到右侧的整个容器。但感谢您的帮助。也许你有其他想法?
  • 我已经用另一个解决方案更新了我的答案。在 FF 和 Chrome 上测试并正确渲染。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-03
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多