【问题标题】:“text-decoration” and the “:after” pseudo-element, in Firefox 8Firefox 8 中的“text-decoration”和“:after”伪元素
【发布时间】:2012-01-02 06:38:40
【问题描述】:

在一个页面上(我为自己维护,因此可以将浏览器支持限制为 FF 3.5+)我想在每个指向 StackOverflow.com 的链接之后添加“SO”。首先我是这样做的……

a[href^='https://stackoverflow.com/']:after {
  content: "SO";
  font-size: x-small;
  color: #333333;
  padding-left: 1px;
  position: relative;
  bottom: 3px;
}

...但是 Firefox 像链接本身一样在“SO”下划线。看完问题

…我得到了以下解决方案:

a[href^='https://stackoverflow.com/']:after {
  content: "SO";
  font-size: x-small;
  color: #333333;
  padding-left: 1px;
  position: relative;
  bottom: 3px;
  /* clear the underline */
  padding-bottom: 5px;
  background-color: white;
}

也许它是 hack'ish,但它相当直观(下划线被其上方的背景隐藏)并且效果很好(我不记得我在 FF 3.5 和 FF 7 以外的浏览器中检查过它,但仍然是 FF是我真正想要支持的唯一浏览器)。问题是代码在 FF 8 中中断:上面的下划线清除代码不起作用。所以我正在寻找解决方案。

其实我已经找到了:添加“display:inline-block”,但是:

  • 它会导致“SO”换行
  • 它不能与旧的下划线清除代码一起使用,因为 padding-bottom 已添加到链接本身

http://cssdesk.com/5TqEN

最后说明:我希望它至少在 FF 3.5 和 FF 8 中工作,仅使用 CSS,而不使“SO”文本成为图像,比 inline-block 解决方案更好

【问题讨论】:

    标签: css firefox hyperlink underline


    【解决方案1】:

    我想出了这个http://jsfiddle.net/wGb68/4/

    a[href^='http://stackoverflow.com/'] {
        padding-right: 15px;
        display: inline-block; /* not needed, but fixes Chrome and Opera */
    }
    
    a[href^='http://stackoverflow.com/']:after {
        font-size: x-small;
        padding-left: 1px;
        content: "SO";
        color: #333;
    
        position: absolute;
    }
    

    text-decoration 的清除很糟糕,只能在 Firefox 和 Opera 中使用此代码。我无法在任何其他浏览器中使用它。 :/

    display: inline-block 在 Firefox 中不需要,但在 Opera 和 Chrome 中没有它,“SO”不会跟随换行符,甚至会与容器重叠。

    【讨论】:

    • 谢谢。你必须在padding-right 中指定后内容的宽度是相当糟糕的,但我仍然比我更喜欢这个解决方案。此外,有趣的是position: absolute 在链接上没有position: relative 的情况下如何工作。我现在将使用您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多