Jednoduché jednosloupcové layouty webových stránek v CSS

V této lekci si budeme procvičovat vytváření jednoduchých jednosloupcových layoutů webových stránek. Pojďme například vytvořit takovýto layout:

Pojďme k realizaci. Každý layout obvykle začíná obecným divem s názvem wrapper, který obsahuje celý zbytek webu:

html<div id="wrapper">
  
</div>

V našem případě bude wrapper zarovnán na střed obrazovky:

css#wrapper {
  width: 800px;
  margin: 50px auto;
}

Bude mít také ohraničení:

css#wrapper {
  width: 800px;
  margin: 50px auto;
  border: 1px solid black;
}

Nyní vytvořme hlavní strukturu stránky. Bude se skládat z menu a hlavního obsahu - contentu:

html<div id="wrapper">
  <div id="menu">
    
  </div>
  <div id="content">
    
  </div>
</div>

Přidejme obsah našich bloků:

html<div id="wrapper">
  <div id="menu">
    <a href="#">link text 1</a>
    <a href="#" class="active">link text 2</a>
    <a href="#">link text 3</a>
    <a href="#">link text 4</a>
    <a href="#">link text 5</a>
  </div>
  <div id="content">
    <h1>Proin tristique lorem</h1>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
  </div>
</div>

Nyní můžeme přidat styl našim blokům. Pojďme přidat styl menu:

css#menu {
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
  background-color: #484848;
}
#menu a {
  margin: 0 5px;
  padding: 15px 25px;
  text-decoration: none;
  color: #fff;
  font: bold 14px Arial;
}
#menu a:hover, #menu a.active {
  color: #484848;
  background-color: #fff;
}

A nyní přidejme styly prvkům obsahu:

css#content {
  padding: 0 30px 20px;
}
#content h1 {
  text-align: center;
  margin-top: 0;
  margin-bottom: 10px;
}
#content p {
  padding: 0 10px;
  margin-bottom: 5px;
  font: 18px/1.3 Arial;
  text-align: justify;
}

Nyní můžeme spojit celý kód dohromady:

html<div id="wrapper">
  <div id="menu">
    <a href="#">link text 1</a>
    <a href="#" class="active">link text 2</a>
    <a href="#">link text 3</a>
    <a href="#">link text 4</a>
    <a href="#">link text 5</a>
  </div>
  <div id="content">
    <h1>Proin tristique lorem</h1>
    <p>
      ...
    </p>
    <p>
      ...
    </p>
  </div>
</div>
css#wrapper {
  width: 800px;
  margin: 50px auto;
  border: 1px solid black;
}

#menu {
  display: flex;
  justify-content: center;
  margin-bottom: 20px;
  background-color: #484848;
}
#menu a {
  margin: 0 5px;
  padding: 15px 25px;
  text-decoration: none;
  color: #fff;
  font: bold 14px Arial;
}
#menu a:hover, #menu a.active {
  color: #484848;
  background-color: #fff;
}

#content {
  padding: 0 30px 20px;
}
#content h1 {
  text-align: center;
  margin-top: 0;
  margin-bottom: 10px;
}
#content p {
  padding: 0 10px;
  margin-bottom: 5px;
  font: 18px/1.3 Arial;
  text-align: justify;
}

Rada 1

Nejpohodlnější je zadávat odsazení shora dolů. Například máme menu a obsah, a mezi nimi - prázdný prostor. Je zřejmé, že tento prostor může být vytvořen spodním odsazením menu, horním odsazením obsahu, nebo jejich současným působením. V tomto případě je lepší nastavit spodní odsazení menu, a obsahu odebrat výchozí padding a margin pro h1.

Rada 2

Potomci by neměli vytvářet odsazení mezi rodiči. Například máme menu. Spodní odsazení tohoto menu může být vytvořeno buď margin divu s menu, nebo margin odkazů. Je lepší zvolit první variantu, protože odkazy by neměly působit přes hlavu rodiče.

Rada 3

Nechť mezi dvěma prvky je odsazení a v tomto případě vizuálně není rozdíl, co zvolit pro odsazení - margin nebo padding. V tomto případě zvolte margin, protože právě ten by měl vytvářet odsazení mezi prvky.

Praktické úkoly

Задание 1
Задание 2
Задание 3