CSS Browser Selector +
Hi-dpi screen Pixel-ratio > 1 and < 2 Pixel-ratio >= 2
Um Auxiliador no Desenvovimento Responsivo Cross-Browser
CSS Browser Selector + é um javascript muito pequeno, que habilita seletores CSS.
Veja o exemplo:
<html lang="pt-br" class="">
-
Melhor parte
- chega de sujeira (hacks)
- todo o código compatível.
-
Auxiliador parecido com Media Queries (CSS3)
Método alternativo de Media Queries para o desenvolvimento de projeto ágil para navegadores mais antigos.
-
Agora você pode escrever código para
- navegador
- versão do navegador
- plataforma
- versão de plataforma
- dispositivos
- versão do dispositivo
- min-width e max-width
- retina
- detecção de orientação da tela (paisagem ou retrato)
Mais Informações:
(http://rafael.adm.br/css_browser_selector)
Versões Experimentais:
(http://github.com/delka/css_browser_selector/)
(http://github.com/verbatim/css_browser_selector/)
Ele identifica
- Navegadores: Firefox; IE; Edge; Opera; Safari; Chrome, Konqueror, Iron
- Versões dos navegadores: (like chrome46, firefox41, ie6, ie7, ie8, ie9, ie10, ie11, ie edge, …)
- Motores de renderização: Webkit; Mozilla; Gecko
- Sistemas Operacionais/Plataformas: Mac; Win: Win10, Win8.1, Win8, Win7, Vista, WinXP, Win2k, WinNT; FreeBSD; Linux/x11
- Dispositivos: Ipod; Ipad; Iphone; WebTV; Blackberry; Android; Windows Phone; J2me; RIM Playbook; mobile (generic)
- Tecnologia habilitada: JS (usado em conjunto com <html class="no-js"> para ainda ter mais controle)
- detecção de max-width e min-width (Método alternativo de Media Queries para o detecçãode largura)
- detecção de retina
- detecção da orientação navegador (Método alternativo de Media Queries para a detecçãode da orientação)
- Detecção de idioma
Contribuidores recentes to 0.5, 0.6, 0.6.2:
-
melhorar e atualizar recursos para o desenvolvimento cross-browser
https://github.com/ridjohansen/css_browser_selector/ -
Detecção IE mais detalhada
https://github.com/kevingessner/css_browser_selector/ -
Detecção do Windows mais detalhada
https://github.com/saar/css_browser_selector -
no-js para js:
http://paulirish.com/2009/avoiding-the-fouc-v3/ -
Detecção do Mac mais detalhada
https://github.com/haraldmartin/css_browser_selector
Histórico de versões
-
v0.81 2015-10-30
Fix IE8 error -
v0.8 2015-10-29
Add support for Windows 8.1 and Windows 10
Add support for Windows Phone OS 7,8,10.
Add IE Edge Support
Save existing html classes
Prevent global variables - wrap code into anonymous function -
v0.71 2014-01-23
Add IE11 detection -
v0.7 2013-04-01
Add support to Hi-dpi displays Selector
Add Pixel Ratio support for 1.5 and 2
Add support to dataURI's Selector -
v0.6.2 2012-09-10
adicionar novos recursos para o desenvolvimento cross-browser
atualizar a largura dispositivos comuns (com base em Bootstrap Twitter)
melhorar continuamente avalia navegador max-width e min-width (auxiliar para mediaqueries-como tela aulas de largura)
melhorar continuamente avalia orientação navegador (auxiliar para mediaqueries-como orientação classes) -
v0.6.1 2012-03-14
iOS versão detecção
beta: detectar se está sendo executado em aplicativo para iPad.
(de: http://stackoverflow.com/questions/4460205/detect-ipad-iphone-webview-via-javascript) -
v0.6.0 2012-01-24
apoio mais detalhada para o Opera, Chrome, Safari (e revisão no suporte ao Firefox)
versão para o Chrome, Blackberry, Android, Mac
detecção de dispositivos Android
alterado como 'mobile' é deterimed para ser adicionado à classe String
detecção de idioma
suporte ao RIM Playbook
avalia continuamente largura do navegador max (em caso de redimensionamento)
avalia continuamente orientação navegador (retrato ou paisagem) -
v0.5.0 2011-08-24
qualquer versão do Firefox
mais versões do Windows (Win8 [provisória], Win2k Win7, Vista, XP,)
mais versões do IE em condições únicas
se "não-js" na aula de HTML: remove e substitui por "js" (<html class="no-js">)
Recursos
-
navigator.userAgent strings:
http://en.wikipedia.org/wiki/User_agent
http://www.useragentstring.com/pages/useragentstring.php
http://www.user-agents.org
http://www.zytrax.com/tech/web/mobile_ids.html -
história da userAgent string:
http://www.nczonline.net/blog/2010/01/12/history-of-the-user-agent-string/ -
lista de idiomas:
http://msdn.microsoft.com/en-us/library/ms533052%28v=vs.85%29.aspx -
Lista dos windows nt
http://en.wikipedia.org/wiki/Windows_NT -
interpretação do userAgent string do blackberry:
http://supportforums.blackberry.com/t5/Web-and-WebWorks-Development/How-to-detect-the-BlackBerry-Browser/ta-p/559862 -
compressão do javascript:
http://minifyjavascript.com -
resoluções de tela
http://responsinator.com/ -
aspect ratio:
http://www.htmlgoodies.com/beyond/webmaster/toolbox/article.php/3889591/Detect-and-Set-the-iPhone--iPads-Viewport-Orientation-Using-JavaScript-CSS-and-Meta-Tags.htm -
Detecção do iOS:
http://stackoverflow.com/questions/4460205/detect-ipad-iphone-webview-via-javascript
Other Versions
-
Ruby on Rails Plugin por Reid MacDonald
http://latimes.rubyforge.org/svn/plugins/css_browser_selector/ -
PHP CSS Browser Selector por Bastian Allgeier
http://bastian-allgeier.de/css_browser_selector/ -
Wordpress Plugin por Adrian hanft
http://wordpress.org/extend/plugins/browser-specific-css/
Exemplo
Navegador, dispositivo, sistema operacional e detecção de Javascript
<style> .ie .exemplo { background-color: yellow; } .ie7 .exemplo { background-color: orange } .gecko .exemplo { background-color: gray; } .win.gecko .exemplo { background-color: red; } .linux.gecko .exemplo { background-color: pink; } .opera .exemplo { background-color: green; } .konqueror .exemplo { background-color: blue; } .webkit .exemplo { background-color: black; } .chrome .exemplo { background-color: cyan; } .exemplo { width: 100px; height: 100px; } .no-js, .no_js, .nojs { display: block; } .js { display: none; } </style>
dataURI Selector
<style> .datauri .example_bg { background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC'); } .no-datauri .example_bg { background-image: url('bg_default.png'); } .datauri .img_default, .no-datauri .img_uri { display: none !important; } </style> <div class="example_bg"> <img class="img_uri" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC" alt="with dataURI" /> <img class="img_default" src="img_default.png" alt="without dataURI" /> </div>
Hi-dpi and Pixel-Ratio Selector
<style> .img_hidpi { display: none; } .no-hidpi .example_bg { background-image: url('bg_default.png'); } .hidpi .img_default, .no-hidpi .img_hidpi { display: none !important; } .retina_1x .example_bg { background-image: url('bg_hidpi_1x.png'); } .retina_2x .example_bg { background-image: url('bg_hidpi_2x.png'); } .retina_2x .img_default, .retina_2x .x1 { display: none !important; } .retina_1x .img_default, .retina_1x .x2 { display: none !important; } or /* http://bjango.com/articles/min-device-pixel-ratio/ */ @media only screen and (min--moz-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-device-pixel-ratio: 1.5) { .example_bg { background-image: url('bg_hidpi_1x.png'); } .img_default, .x2 { display: none; } } @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and ( min--moz-device-pixel-ratio: 2), only screen and ( -o-min-device-pixel-ratio: 2/1), only screen and ( min-device-pixel-ratio: 2), only screen and ( min-resolution: 192dpi), only screen and ( min-resolution: 2dppx) { .example_bg { background-image: url('bg_hidpi_2x.png'); } .img_default, .x1 { display: none; } } </style> <div class="example_bg"> <img class="img_hidpi x2" src="img_hidpi_2x.png" alt="with pixel-ratio >= 2" /> <img class="img_hidpi x1" src="img_hidpi_1x.png" alt="with pixel-ratio > 1 and < 2" /> <img class="img_default" src="img_default.png" alt="with pixel-ratio 1 or default" /> </div>
Media Queries (Largura da tela)
<style> @media (max-width: 767px) { .exemplo { border: 2px solid purple!important; } } /* or */ .minw_0 .exemplo, .maxw_767 .exemplo { border: 2px solid purple!important; } @media (min-width: 768px) and (max-width: 979px) { .exemplo { border: 2px solid green!important; } } /* or */ .minw_768.maxw_979 .exemplo { border: 2px solid green!important; } @media (min-width: 1200px) { .exemplo { border: 2px solid orange!important; } } /* or */ .minw_1200 .exemplo { border: 2px solid orange!important; } </style>
Media Queries (Orientação)
<style> @media (orientation: landscape) { .exemplo { border: 2px solid red!important; } } /* or */ .orientation_landscape .exemplo { border: 2px solid red!important; } @media (orientation: portrait) { .exemplo { border: 2px solid blue!important; } } /* or */ .orientation_portrait .exemplo { border: 2px solid blue!important; } </style>
Licença
http://creativecommons.org/licenses/by/2.5/
Autor original:
Rafael Lima: http://rafael.adm.br
Com base na idéia do site 37signals
http://37signals.com/svn/archives2/browser_selectors_in_css.php
Contribuidores
- Richard Duchatsch Johansen @ridjohansen (http://github.com/ridjohansen)
- William Bruno (http://github.com/wbruno)
- Ihor Zenich (http://github.com/delka)
- 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