【问题标题】:Absolute Positioning Varies Between Browsers when Using Pseudo-Elements使用伪元素时,浏览器之间的绝对定位会有所不同
【发布时间】:2015-07-08 20:49:08
【问题描述】:

我正在修改下载链接以在其上方显示两个图标(使用伪元素和图标字体)。这些图标需要分层。

为此,我为链接指定了position: relative,第二个图标(我将其放置在第一个图标之上)得到了position: absolute。然后我只是调整了topleft 的值,直到它位于我想要的位置。

jsFiddle

@import url('http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css');

body {
    /* just to make sure everything fits on screen */
    padding: 100px;
    text-align: center;
}

.download {
    position: relative;
    color: #000;
    text-decoration: none;
}

.download::before {
    display: block;
    content:'\f1c1';
    font-family:'FontAwesome';
    font-size: 42pt;
    margin-bottom: 10px;
}
.download::after {
    position: absolute;
    display: block;
    content:'\f019';
    font-family:'FontAwesome';
    font-size: 28pt;
    top: -40px;
    left: 50%;
    margin-left: 5px;
}
<a href="#" class="download">Download PDF</a>

在 Chrome 中,它可以完美运行。 “下载”图标位于“文档”图标右下角的正上方。然而,在 Firefox 中,“下载”图标悬停在“文档”图标上方。我怀疑这是因为伪元素在技术上不是a.download 元素的DOM 子元素,尽管this example(不使用伪元素)有相同的定位问题。

position: absolute 与伪元素的浏览器实现有何不同,我该如何解决?

【问题讨论】:

  • 虽然this example不使用伪元素还是有同样的定位问题。
  • 对我来说 Chrome 在这里看起来很糟糕,但至于为什么我目前没有太多想法但也期待答案

标签: html css css-position pseudo-element


【解决方案1】:

我想我明白了。

<a> 标签在 Chrome 上折叠,但在 Firefox 上它被赋予一个框。似乎最好的选择是给<a> 标记一些padding-top 以将文本向下推,然后也绝对定位acrobat 图标。我不太确定如何让它不会在 Chrome 上崩溃

示例:http://jsfiddle.net/5jn9yw7s/

@import url('http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css');

body {
    padding: 100px;
    text-align: center;
}

.download {
    position: relative;
    color: #000;
    text-decoration: none;
}

.download::before {
    position: absolute;
    display: block;
    content:'\f1c1';
    font-family:'FontAwesome';
    font-size: 42pt;
    top: -52pt;
    left: 50%;
    margin-left: -21pt;
}

.download::after {
    position: absolute;
    display: block;
    content:'\f019';
    font-family:'FontAwesome';
    font-size: 28pt;
    top: -32pt;
    left: 50%;
}
<a href="#" class="download">Download PDF</a>

【讨论】:

  • 你是对的!使用绝对定位来定位文档图标也很有效。也许您想用this working code 更新您的答案?
  • 没问题!我刚玩过 inline,应该会养成实际编辑 fiddles 的习惯
【解决方案2】:

在 Firefox 中,伪元素的绝对定位被忽略并被视为两个相对元素。您可以通过将其添加到您的 css 来为此设置 Firefox 特定修复:

@-moz-document url-prefix() {
    .download::after {
        top: 0;
        left: 0;
        margin-left: 5px;
        margin-top:58px
   }
}

Working fiddle

使用边距以获得更好的结果。

【讨论】:

  • 谢谢,但我宁愿找到一种可以在所有/大多数浏览器上一致运行的解决方案,而不是针对单个浏览器但仍可能导致其他未经测试的浏览器损坏的修复程序。
猜你喜欢
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2020-07-01
  • 1970-01-01
  • 2013-11-08
  • 2019-06-06
相关资源
最近更新 更多