“text-decoration” and the “:after” pseudo-element, revisited

后端 未结 11 814
旧巷少年郎
旧巷少年郎 2020-11-27 18:43

I\'m re-asking this question because its answers didn\'t work in my case.

In my stylesheet for printed media I want to append the url after every link using the

相关标签:
11条回答
  • 2020-11-27 19:12

    I had the same problem and my solution was to set height and overflow:hidden

    http://jsfiddle.net/r45L7/

    a {
        text-decoration: underline;
    }
    
    a:after {
        content: "»";
        display: inline-block;
        text-decoration: none;
        height:16px;
        overflow: hidden;
        padding-left: 10px;
    }
    

    It works on IE, FF, Chrome.

    0 讨论(0)
  • 2020-11-27 19:13

    1)

    :after{
        position: absolute;
    }
    

    is not perfect, because element content will not wrap

    2)

    :after{
        display: inline-block;
    }
    

    is not perfect, because sometimes we wish after content should always wrap with last word of element content.

    For now, I could not find find a perfect solution fits all 3 conditions(1. content could auto-wrap if it's too long 2.after content should wrap with element content, which means after content should not occupy single by it self. 3.text-decoration should only apply on element condition not apply to after content.) I thoughts for now is using other way to mimic text-decoration.

    0 讨论(0)
  • 2020-11-27 19:23

    What I do is I add a span inside the a element, like this :

    <a href="http://foo.bar"><span>link text</span></a>
    

    Then in your CSS file :

    a::after{
      content:" <" attr(href) "> ";
      color: #000000;
    }
    
    a {
      text-decoration:none;
    }
    
    a span {
      text-decoration: underline;
    }
    
    0 讨论(0)
  • 2020-11-27 19:24

    IE8's implementation of the :before and :after pseudo-elements is incorrect. Firefox, Chrome and Safari all implement it according to the CSS 2.1 specification.

    5.12.3 The :before and :after pseudo-elements

    The ':before' and ':after' pseudo-elements can be used to insert generated content before or after an element's content. They are explained in the section on generated text.

    ...

    Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification

    The specification indicates that the content should be inserted before or after the element's content, not the element (i.e. <element>content:before content content:after</element>). Thus in Firefox and Chrome the text-decoration you're encountering is not on the inserted content but rather on the parent anchor element that contains the inserted content.

    I think your options are going to be using the background-image/padding technique suggested in your previous question or possibly wrapping your anchor elements in span elements and applying the pseudo-elements to the span elements instead.

    0 讨论(0)
  • 2020-11-27 19:24

    You can autoselect links to pdf-files by:

    a[href$=".pdf"]:after { content: ... }
    

    IE less than 8 can be enabled to work properly by implementing this link in the head of the html-file:

    <!--[if lt IE 8]><script src="http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js" type="text/javascript"></script><![endif]-->
    

    It works also very good in al IE versions when you use the after-before-content-thing for dosplaying quotation marks.

    0 讨论(0)
  • 2020-11-27 19:24

    Position the content absolutely as follow:

    a {
        position: relative;
        margin: 0 .5em;
        font-weight: bold;
        color: #c00;
    }
    a:before,
    a:after {
        position: absolute;
        color: #000;
    }
    a:before {
        content: '<';
        left: -.5em;
    }
    a:after {
        content: '>';
        right: -.5em;
    }
    

    This works for me in Firefox 3.6, not tested in any other browsers though, best of luck!

    0 讨论(0)
提交回复
热议问题