Style External Links with CSS
Styling external links is a common practice on most informational sites likes Wikipedia. As a user, it's nice to know when you're being sent to another resource. Many sites do the external links check on the server side, adding a `rel=external` attribute value or `external` class to external links. In some cases that isn't possible or plausible. After trolling around the interwebs, I found the following useful CSS snippet for styling external links:
/* long version */
a[href^="http://"]:not([href*="mysite.com"]),
a[href^="https://"]:not([href*="mysite.com"]),
a[href^="//"]:not([href*="mysite.com"]), {
}
/* shorter version! */
a[href*="//"]:not([href*="mysite.com"]) {
/* external link styles, use :before or :after if you want! */
}
First you have to qualify the start of the link, then qualify the domain. Internal links wont match and external links wont match the comparison. A useful snippet and something to keep in your library in case you need it!
![Send Text Messages with PHP]()
Kids these days, I tell ya. All they care about is the technology. The video games. The bottled water. Oh, and the texting, always the texting. Back in my day, all we had was...OK, I had all of these things too. But I still don't get...
![Responsive Images: The Ultimate Guide]()
Chances are that any Web designers using our Ghostlab browser testing app, which allows seamless testing across all devices simultaneously, will have worked with responsive design in some shape or form. And as today's websites and devices become ever more varied, a plethora of responsive images...
![Use Elements as Background Images with -moz-element]()
We all know that each browser vendor takes the liberty of implementing their own CSS and JavaScript features, and I'm thankful for that. Mozilla and WebKit have come out with some interesting proprietary CSS properties, and since we all know that cementing standards...
![jQuery Countdown Plugin]()
You've probably been to sites like RapidShare and MegaUpload that allow you to download files but make you wait a specified number of seconds before giving you the download link. I've created a similar script but my script allows you to animate the CSS font-size...
What if there is a link in my website like http://external.com/?referer=mysite.com ?
You add can another pattern match for whichever referer pattern you use:
a[href*="?referer"] { /* external styles */ }Thanks for the snippets :)
David, you can do the same with shorter selector:
[href*="//"]:not([href*="mysite.com"]) { }Thanks for the code :)
Nice snippets, I love this but how about browser compatibility?
So, what styles are typically used for external websites? A change in font color? Background color?
Is have used this slidely different for my wordpress site:
/* show external links differently */ a[href^="http://"]:not([href*="mydomain.com"]):before{ content: " "; width: 16px; height: 16px; background: no-repeat url('images/link.gif'); padding-right: 1.2em; }How to ignore Links With images?
example: http://jsfiddle.net/Ridermansb/NRw97/1/
@Riderman You don’t. CSS is designed to to be applied in one traversal of the DOM tree. This limits it to selectors that are based solemnly on what was before (higher up) in the dom tree. You cannot select on what comes after/deeper in the DOM tree in CSS.
In your example you are trying to style an a element based on the fact, that an img element is deeper in the tree.
Solution: use a css-class for such a elements that should ignore the styling done through the [href=??] matching selectors.
a.no-external-link-style {
/*undo styling through a[href*=”//”]:not([href*=”mysite.com”]) */
}
@Riderman Use JS / jQuery to add a class to links that wrap images, then add a css rule that removes or hides your
:before, based on that class. I’m using:after, and FontAwesome..jQuery('a img').parent().addClass('linked-img');a[href*="//"]:not([href*="mysite.com"]):after { font-family: FontAwesome; content: "\f08e"; font-size: 13px; color: #ccc; padding-left: 7px; } a.linked-img:after { display: none; }