Mnoho webových stránek je založeno na zobrazení mřížky, což znamená, že stránka je rozdělena do sloupců:
Použití mřížkového zobrazení je velmi užitečné při navrhování webových stránek. Usnadňuje umístění prvků na stránku.
Responzivní zobrazení mřížky má často 12 sloupců a má celkovou šířku 100 % a při změně velikosti okna prohlížeče se bude zmenšovat a rozšiřovat.
Příklad: responzivní zobrazení mřížky:
Začněme vytvářet responzivní zobrazení mřížky.
Nejprve se ujistěte, že všechny prvky HTML mají vlastnost box-sizing
nastavenou na border-box
. Tím je zajištěno, že výplň a okraj jsou zahrnuty do celkové šířky a výšky elementy.
Přidejte do svého CSS následující kód:
* {
box-sizing: border-box;
}
Přečtěte si více o vlastnosti box-sizing
v naší kapitole CSS Box Sizing.
Následující příklad ukazuje jednoduchou responzivní webovou stránku se dvěma sloupci:
.menu {
width: 25%;
float: left;
}
.main {
width: 75%;
float: left;
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
* {
box-sizing: border-box;
}
.header {
border: 1px solid red;
padding: 15px;
}
.menu {
width: 25%;
float: left;
padding: 15px;
border: 1px solid red;
}
.main {
width: 75%;
float: left;
padding: 15px;
border: 1px solid red;
}
</style>
</head>
<body>
<div class="header">
<h1>Chania</h1>
</div>
<div class="menu">
<ul>
<li>The Flight</li>
<li>The City</li>
<li>The Island</li>
<li>The Food</li>
</ul>
</div>
<div class="main">
<h1>The City</h1>
<p>Chania is the capital of the Chania region on the island of Crete. The city can be divided in two parts, the old town and the modern city.</p>
<p>Resize the browser window to see how the content respond to the resizing.</p>
</div>
</body>
</html>
Výše uvedený příklad je v pořádku, pokud webová stránka obsahuje pouze dva sloupce.
Chceme však použít responzivní zobrazení mřížky s 12 sloupci, abychom jich měli více kontrolu nad webovou stránkou.
Nejprve musíme vypočítat procento pro jeden sloupec: 100 %/12 sloupců = 8,33 %.
Potom jsme vytvořte jednu třídu pro každý z 12 sloupců, class="col-"
a číslo definování, kolik sloupců má sekce zahrnovat:
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width:
100%;}
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
* {
box-sizing: border-box;
}
.header {
border: 1px solid red;
padding: 15px;
}
.row::after {
content: "";
clear: both;
display: table;
}
[class*="col-"] {
float: left;
padding: 15px;
border: 1px solid red;
}
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
</style>
</head>
<body>
<div class="header">
<h1>Chania</h1>
</div>
<div class="row">
<div class="col-3">
<ul>
<li>The Flight</li>
<li>The City</li>
<li>The Island</li>
<li>The Food</li>
</ul>
</div>
<div class="col-9">
<h1>The City</h1>
<p>Chania is the capital of the Chania region on the island of Crete. The city can be divided in two parts, the old town and the modern city.</p>
<p>Resize the browser window to see how the content respond to the resizing.</p>
</div>
</div>
</body>
</html>
Všechny tyto sloupce by měly být plovoucí doleva a měly by mít odsazení 15 pixelů:
[class*="col-"] {
float: left;
padding: 15px;
border: 1px solid red;
}
Každý řádek by měl být zabalen do <div>
. Počet sloupců uvnitř řádku by vždy mělo být 12:
<div class="row">
<div class="col-3">...</div> <!-- 25% -->
<div class="col-9">...</div> <!-- 75% -->
</div>
Všechny sloupce v řádku jsou plovoucí doleva, a proto jsou vyjmuto z toku stránky a další prvky budou umístěny, jako by sloupce neexistovaly. Abychom tomu zabránili, uděláme to přidat styl, který vyčistí tok:
.row::after {
content: "";
clear: both;
display: table;
}
Chceme také přidat některé styly a barvy, aby to vypadalo lépe:
html {
font-family: "Lucida Sans", sans-serif;
}
.header {
background-color: #9933cc;
color: #ffffff;
padding: 15px;
}
.menu ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.menu li {
padding: 8px;
margin-bottom: 7px;
background-color :#33b5e5;
color: #ffffff;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
.menu li:hover {
background-color: #0099cc;
}
Zkuste to sami →
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
* {
box-sizing: border-box;
}
.row::after {
content: "";
clear: both;
display: table;
}
[class*="col-"] {
float: left;
padding: 15px;
}
.col-1 {width: 8.33%;}
.col-2 {width: 16.66%;}
.col-3 {width: 25%;}
.col-4 {width: 33.33%;}
.col-5 {width: 41.66%;}
.col-6 {width: 50%;}
.col-7 {width: 58.33%;}
.col-8 {width: 66.66%;}
.col-9 {width: 75%;}
.col-10 {width: 83.33%;}
.col-11 {width: 91.66%;}
.col-12 {width: 100%;}
html {
font-family: "Lucida Sans", sans-serif;
}
.header {
background-color: #9933cc;
color: #ffffff;
padding: 15px;
}
.menu ul {
list-style-type: none;
margin: 0;
padding: 0;
}
.menu li {
padding: 8px;
margin-bottom: 7px;
background-color: #33b5e5;
color: #ffffff;
box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24);
}
.menu li:hover {
background-color: #0099cc;
}
</style>
</head>
<body>
<div class="header">
<h1>Chania</h1>
</div>
<div class="row">
<div class="col-3 menu">
<ul>
<li>The Flight</li>
<li>The City</li>
<li>The Island</li>
<li>The Food</li>
</ul>
</div>
<div class="col-9">
<h1>The City</h1>
<p>Chania is the capital of the Chania region on the island of Crete. The city can be divided in two parts, the old town and the modern city.</p>
<p>Resize the browser window to see how the content respond to the resizing.</p>
</div>
</div>
</body>
</html>
Všimněte si, že webová stránka v příkladu nevypadá dobře, když změníte velikost okna prohlížeče na velmi malou šířku. V další kapitole se dozvíte, jak to opravit.