<link rel="stylesheet" type="text/css" media="screen and (min-width: 960px), projection and (min-width: 960px)" href="screen-projection-960.css" />
@media screen and (min-width: 960px), projection and (min-width: 980px) { …STYLES… }
stylesheets[screen and (min-width: 480px) and (max-width: 760px)][] = design/screen-480-760.css stylesheets[screen and (min-width: 960px)][] = design/screen-960.css
Nativní podpora: IE9+, Firefox 3.5+, Safari 3+, Chrome, Opera 7+, iOS Safari 3.2+, Opera Mini 5+, Opera Mobile 10+, Android Browser 2.1+
Device | CSS px | Actual px | Device pixel ratio | dpi |
---|---|---|---|---|
iPhone 2,3 | 320x480 | 320x480 | 1 | |
iPhone 4 | 320x480 | 640x960 | 2 | 192 |
iPhone 5 | 320x568 | 640x1136 | 2 | 192 |
iPad mini, 1, 2 | 768x1024 | 768x1024 | 1 | |
iPad 3, 4 | 768x1024 | 1536x2048 | 2 | 192 |
Android 2.3 | 1.5 | 144 | ||
Android 4.1 | 2 | 192 | ||
Windows 8 Phone | ||||
Interenet Explorer on Windows Phone 8 | 96 ??? | |||
Opera Mini | ||||
Firefox OS | ||||
Firefox for Mobile (Fennec) | ||||
Google Nexus 7 | 1.3 | 124.8 | ||
Playbook |
Příklad Media Queries pro Tablet:
@media (min-width: 44em) { /* ...STYLES... */}
Příklad Media Queries pro Tablet s Retina displejem:
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 1.25), (min-width: 44em) and (min-resolution: 120dpi) { /* ...STYLES... */}
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 1.3), (min-width: 44em) and (min-resolution: 124.8dpi) { /* ...STYLES... */}
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 1.5), (min-width: 44em) and (min-resolution: 144dpi) { /* ...STYLES... */}
@media (min-width: 44em) and (-webkit-min-device-pixel-ratio: 2), (min-width: 44em) and (min-resolution: 192dpi) { /* ...STYLES... */}
Smartphone | Tablet | Desktop | TV | ||||
---|---|---|---|---|---|---|---|
Rozlišení zařízení (velikost okna aplikace) [px] | 320x480 portrait | 480x320 landscape | 768x1024 portait | 1024x768 landscape | 1280x960(1024) | 1680 | 3456 |
Bod zlomu (break point) | 320 | 480 | 650, 700, 704, 740, 767, 768 | 979, 980, 1024 | 1025, 1120, 1200, 1220 | 3456 | |
Maximální šířka objektu (při 10px okraji) | 300 | 460 | 720 | 960 | 1200 | 3436 | |
Šířka sloupce při gridu 12 (max. šířka/12) | (320) | (480) | 60 | 80 | 100 | ||
Téma Omega 3 | global | global | >=740 (narrow) |
740-840 (narrow landscape) >=980 (normal) =1024 (normal landscape) |
>=1220 | ||
Téma Omega 4 | >=44em (16px * 44em ~ 704px) |
>=70em (16px * 70em ~ 1120px) |
|||||
Téma AdaptiveTheme | <=320 | 321-480 | 481-768 | 796-1024 | >=1025 | ||
Bootstrap | <=480 | <=767 | 768-979 | >=1200 | |||
Foundation | |||||||
templatemonster.com | 320 | 480 | 768 | 980 |
Podporu je možné rozšířit pomocí JavaScript knihovny css3-mediaqueries.js i na IE 5+, Firefox 1+ and Safari 2 (umožňuje navíc i podporu průhlednosti u PNG obrázků).
Poznámky:
Pro rychlé vytvoření responzivního rozvržení je možné použít generátory nebo využít některého z frameworků např.:
Mé požadavky:
Zajímavé zdroje informací:
Techniky vytváření vzhledu:
CSS:
Optimalizace:
Pro sjednocení vzhledu (vykreslení) všech prvků napříč moderními prohlížeči je vhodné použít normalize.css (pro zastaralé prohlížeče je nutné použít dnes již "zavržený" reset.css).
Normalize.css:
Většina mobilní prohlížečů přizpůsobí stránku (pomocí změny měřítka "scale") tak, aby se celá vešla na obrazovku (=>téměř nečitelný text). Pro zamezení tohoto chování je tedy třeba do hlavičky vložit níže uvedený meta tag (umožňuje změnu šířky při natočení):
<meta name="viewport" content="width=device-width, initial-scale=1">
Více viz např. developer.mozilla.org/en-US/docs/Mozilla/Mobile/Viewport_meta_tag
Tip: Alternativou k výše uvedeném tagu muže být CSS @viewport
Pružné (flexibilní) obrázky a multimédia:
img, embed, object, video { display: block; /* IE (display: block; | width: auto; | width: 100%;) */ max-width: 100%; height: auto; vertical-align: top; /* optional */ -ms-interpolation-mode: bicubic; }
Tip: Responsive images – how to prevent reflow
Responzivní tabulky
<script> $(function () { $('.footable').footable({ breakpoints: { phone: 749, tablet: 969 } }); }); </script>
<script> $(function () { $('.footable').footable({ breakpoints: { phone: 749, tablet: 969 } }).bind({ 'footable_breakpoint' : function(e) { console.log(e.breakpoint); } }); }); </script>
U mobilních telefonů je možné zakázat funkci automatického zvětšení písma, ovšem sníží se tím čitelnost textu:
html { /*-webkit-text-size-adjust: none;*/ }
Dostatečná velikost aktivního prvku (položka navigace, tlačítko, formulářový prvek atd.):
Základní HTML5 struktura (layout) stránky:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>HTML 5 dokument</title> <meta name="description" content="Základní šablona HTML 5 dokumentu" /> <meta name="keywords" content="html,dokument,šablona" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> <link rel="stylesheet" type="text/css" href="style.css" /> </head> <body> <header id="header"> <p>Site Name</p> </header> <nav> <ul id="main-nav"> <li><a href="#">Home</a></li> </ul> </nav> <main> <h1>Page Title</h1> <section> <h2>Section Title <article class="post"> <h3>Atricle Title ... </article> </section> <section> <h2>Section Title <article class="post"> <h3>Atricle Title ... </article> </section> </main> <aside id="sidebar"> <section class="block"> ... </section> </aside> <footer id="footer"> ... </footer> </body> <html>
Element main byl přidán až v HTML5.1:
main {display: block;}
<script>document.createElement('main');</script>
V HTML5 je možné vynechat atribut type:
Tipy: Vyhněte se nejobvyklejším chybám v HTML5
Využijte výhod validních podmíněných komentářů (IE Conditional Stylesheets vs CSS Hacks) přímo pro element <html>:
<!--[if IEMobile 7]><html class="ie iem7"><![endif]--> <!--[if lte IE 6]><html class="ie lt-ie9 lt-ie8 lt-ie7"><![endif]--> <!--[if (IE 7)&(!IEMobile)]><html class="ie lt-ie9 lt-ie8"><![endif]--> <!--[if IE 8]><html class="ie lt-ie9"><![endif]--> <!--[if (gte IE 9)|(gt IEMobile 7)]><html class="ie"><![endif]--> <!--[if !IE]><!--><html><!--<![endif]-->
IE8- můžete nechat v jednosloupcovém "mobilním" vzhledu viz Leaving Old Internet Explorer Behind nebo podporu Media Queries zpřístupníte pomocí JavaScriptu.
X-UA-Compatible zpřístupňuje poslední dostupný Internet Explorer mód:
<meta http-equiv="x-ua-compatible" content="ie=edge,chrome=1" />
<!--[if lte IE 9]> <meta http-equiv="x-ua-compatible" content="ie=edge" /> <![endif]-->
Pro podporu media queries v IE8- je třeba použít media-queries.js (nabízí více možností ovšem na úkor výkonu) nebo respond.js:
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]-->
Pro podporu nových HTML5 prvků (header, nav, article, aside, section, footer atd.) v IE8- je nutné k dokumentu připojit html5shiv (pouze pro IE8-) nebo Modernizr (nabízí více možností):
<!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script> <![endif]-->
Tipy: