CSS dokáží rozlišovat výstupní zařízení (médium).
<style type="text/css" media="screen, projection">
@import url("style.css") screen, projection
<link rel="stylesheet" type="text/css" href="style.css" media="screen, projection" />
Je možné použít v jakémkoli typu zápisu (jak v atributu style, v elementu <style>, tak i v externím CSS souboru).
@media screen, projection {
h2 {color: red;}
p {color: blue;}
}
<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: