CSS Browser Selector
Clever technique to help you on CSS hacks.
Last updated: November 02, 2010 (v0.4.0)
CSS Browser Selector is a very small javascript with just one line which empower CSS selectors. It gives you the ability to write specific CSS code for each operating system and each browser.
EXAMPLE
The JavaScript support is disabled on your browser. Please, enable JavaScript and refresh this page.
The color of this box will change on different os/browsers:
Internet Explorer - yellow
Internet Explorer 7 - orange
Gecko Engine on Windows (Firefox, Mozilla, Camino) - red
Gecko Engine on Linux (Firefox, Mozilla, Camino) - pink
Gecko Engine on Other OS (Firefox, Mozilla, Camino) - gray
Opera - green
Konqueror - blue
Safari - black
Chrome - cyan
If the box is white, and you are using one of browsers above, something is wrong :-/
Help us in this case!
Source of this example:
<style type="text/css">
.ie .example {
background-color: yellow
}
.ie7 .example {
background-color: orange
}
.gecko .example {
background-color: gray
}
.win.gecko .example {
background-color: red
}
.linux.gecko .example {
background-color: pink
}
.opera .example {
background-color: green
}
.konqueror .example {
background-color: blue
}
.webkit .example {
background-color: black
}
.example {
width: 100px;
height: 100px;
}
.no_js { display: block }
.has_js { display: none }
.js .no_js { display: none }
.js .has_js { display: block }
</style>
Screenshots on Browsercam
Chris Preece contributed with some images
DONATE TO SUPPORT
I need to update this script every time a browser is released with new UserAgent string.
This is a little effort, but certainly with your donation I will do it happier :)
DOWNLOAD
http://github.com/rafaelp/css_browser_selector/raw/master/css_browser_selector.js
git clone git://github.com/rafaelp/css_browser_selector.git
USAGE
1. Copy and paste the line below, inside <head> and </head> tag
<script src="css_browser_selector.js" type="text/javascript"></script>
2. Set CSS attributes with the code of each browser/os you want to hack
Examples:
html.gecko div#header { margin: 1em; }
.opera #header { margin: 1.2em; }
.ie .mylink { font-weight: bold; }
.mac.ie .mylink { font-weight: bold; }
.[os].[browser] .mylink { font-weight: bold; } -> without space between .[os] and .[browser]
Available OS Codes [os]:
win - Microsoft Windows (all versions)
vista - Microsoft Windows Vista new
linux - Linux (x11 and linux)
mac - Mac OS
freebsd - FreeBSD
ipod - iPod Touch
iphone - iPhone
ipad - iPad new
webtv - WebTV
j2me - J2ME Devices (ex: Opera mini) changed from mobile to j2me
blackberry - BlackBerry new
android - Google Android new
mobile - All mobile devices new
Available Browser Codes [browser]:
ie - Internet Explorer (All versions)
ie8 - Internet Explorer 8.x
ie7 - Internet Explorer 7.x
ie6 - Internet Explorer 6.x
ie5 - Internet Explorer 5.x
gecko - Mozilla, Firefox (all versions), Camino
ff2 - Firefox 2
ff3 - Firefox 3
ff3_5 - Firefox 3.5
ff3_6 - Firefox 3.6 new
opera - Opera (All versions)
opera8 - Opera 8.x
opera9 - Opera 9.x
opera10 - Opera 10.x
konqueror - Konqueror
webkit or safari - Safari, NetNewsWire, OmniWeb, Shiira, Google Chrome
safari3 - Safari 3.x
chrome - Google Chrome
iron - SRWare Iron
Extra Codes:
js - Will be available when js is enable, so you can show/hide some stuffs
INSPIRATION
Original idea by 37signals.
http://37signals.com/svn/archives2/browser_selectors_in_css.php
EXTRAS
Ruby on Rails Plugin by Reid MacDonald
http://latimes.rubyforge.org/svn/plugins/css_browser_selector/
PHP CSS Browser Selector by Bastian Allgeier
http://bastian-allgeier.de/css_browser_selector/
Wordpress Plugin by Adrian hanft
http://wordpress.org/extend/plugins/browser-specific-css/
Goodies
CHANGELOG
0.4.0 - (November 02, 2010) Adding 'vista', 'j2me', 'ff3_6', 'ipad', 'blackberry' and 'android' codes See commit on Github
0.3.5 - (February 05, 2010) Implementing paulirish suggestion os issue #1
0.3.4 - (September 29, 2009) Fix support of Opera 10.10
0.3.3 - (September 06, 2009) Adding 'iron' code for SRWare Iron browser and 'ff3_5' for Firefox 3.5 because it renders litle bit different from Firefox 3.0x
0.3.2 - (April 22, 2009) Removing 'safari' code for Chrome browser
0.3.1 - (January 04, 2009) 'mobile' selector for j2me devices
0.3.0 - (January 04, 2009) Complete rewrite, now with tests and new OS selectors
0.2.9 - (September 17, 2008) Changes whitespace to \s on regexp to avoid problems on minifier process
0.2.8 - (September 03, 2008) Added 'chrome' browser code for Google Chrome
0.2.7 - (May 21, 2008) Added 'ff2' and 'ff3' browser codes
0.2.6 - (April 11, 2008) Removed unecessary spaces
0.2.5 - (October 5, 2006) Removed permanently ieMac code, bug on Opera 9 detection and now you must use ".[os].[browser]" instead of ".os .browser"
0.2.4 - Added support for opera versions: 'opera8', 'opera9', etc
0.2.3 - Added 'js' code to know when JS is disabled or not
0.2.2 - Added OS codes to be used with browser codes - M@ McCray
0.2.1 - Corrected small javascript bug in IE 5.01 - Daniel Westermann-Clark
0.2.0 - Good refactoring, small and fast script! - Steve Clay
0.1.8 - Added support for Internet Explorer on Mac OS (ieMac) - Jeff Bellsey
0.1.7 - Added 'webkit' as alias of 'safari' and well written syntax with less bytes - Jean Pierre and Micah Snyder
0.1.6 - Striped some spaces to make the file smaller and solved IE for Mac bug - Derek
0.1.5 - Added support for ie6 and appends the class names to be non-destructive - Jesse Scott
0.1.4 - Working on Safari, applewebkit was misspelled, without an p - Alex Wiltschko and Moises Kirsch
0.1.3 - Changed the js a litle to get the html tag by TagName instead of having one id - Chris Warren and Tony Nelson
0.1.2 - Changed from 'safari' to 'applewebkit/' and from 'firefox' to 'gecko/' - glasser
0.1.1 - Initial release (2006-07-19)
LICENSE
http://creativecommons.org/licenses/by/2.5/
AUTHOR
Rafael Lima
http://rafael.adm.br
http://twitter.com/rafaelp
CONTRIBUTORS
Niyaz (http://github.com/niyazpk)
Marcio Trindade (http://github.com/marciotrindade)
rbottarelli (http://github.com/rbottarelli)
Bryan Chow (http://github.com/bryanchow)
Derek Lio (http://github.com/dereklio)
Paul Irish (http://github.com/paulirish)
Preston Badeer
Upekshapriya
André Lopes
Tazio Mirandola - copiaincolla pubblicitĂ
Reid MacDonald (http://geminstallthat.wordpress.com)
Vinicius Braga (http://viniciusbraga.com)
Chris Preece (http://www.mmtdigital.co.uk)
Dominykas
M@ McCray
Daniel Westermann-Clark
Steve Clay (http://mrclay.org/)
Jeff Bellsey
Jean Pierre
Micah Snyder
Derek (http://amphibian.info)
Jesse Scott
Moises Kirsch (http://www.moiblog.com/)
Alex Wiltschko
Chris Warren and Tony Nelson (http://www.imagetrend.com)
glasser
KEYWORDS
css javascript script cascading style sheets cross browser cross-browser browsers bug ie internet explorer konqueror safari opera firefox chrome hack tip trick selector