🔍 Начните печатать, чтобы искать по книге или перейти к нужной странице по номеру
Удобно листать не только прокруткой, но и клавишами‑стрелками:
Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.
Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.
Знакомство с ХТМЛ и ЦСС
Модули
Расстановка
Страницы
Спецэффекты
Контроль качества
Публикация
Как работать с верстальщиком
Эта книга — пошаговая инструкция по вёрстке сайтов на языках ХТМЛ и ЦСС. Вы узнаете не только как сверстать сайт, но и как опубликовать его в интернете, настроить красивый шаринг в соцсети и подключить системы аналитики.
Отдельный раздел книги посвящён работе с верстальщиком: как ставить задачи, получать предсказуемый результат и правильно принимать и внедрять вёрстку.
Знакомство с ХТМЛ и ЦСС
Модули
Расстановка
Страницы
Спецэффекты
Контроль качества
Публикация
Как работать с верстальщиком
Если с элементом связаны несколько наборов стилей, они дополнят друг друга. Эта особенность помогает меньше повторяться в коде, писать универсальные классы и использовать их в разных местах страницы.
Например, чтобы сверстать вынос, не нужно дублировать стили абзаца в отдельном классе. Достаточно указать только особенности выноса — увеличенный кегль и цвет.
<p>…</p>
<p class="liftOut">…</p>
p {
font-family: Helvetica, sans-serif;
}
.liftOut {
font-size: 125%;
color: red;
}
Если с элементом связаны несколько наборов стилей, они дополнят друг друга. Эта особенность помогает меньше повторяться в коде, писать универсальные классы и использовать их в разных местах страницы.
Например, чтобы сверстать вынос, не нужно дублировать стили абзаца в отдельном классе. Достаточно указать только особенности выноса — увеличенный кегль и цвет.
<p>…</p>
<p class="liftOut">…</p>
p {
font-family: Helvetica, sans-serif;
}
.liftOut {
font-size: 125%;
color: red;
}
Иногда к элементу относятся несколько наборов стилей, в которых есть одинаковые свойства. В этом случае браузер сравнит «важность» стилей и применит свойство из более важных стилей.
Браузер определяет важность по множеству условий, но на старте достаточно запомнить два главных правила.
Чем ниже стили написаны в коде, тем они важнее при прочих равных:
<p>…</p>
p {
color: red;
}
/*
Написанные ниже стили абзаца
перебьют написанные выше
*/
p {
color: blue;
}
Стили для классов важнее стилей для тегов:
<p class="large">…</p>
/*
Цвет из класса перебьёт цвет из тега,
даже если те стоят ниже в коде
*/
.large {
color: crimson;
}
p {
color: blue;
}
Конфликты и наслоение стилей часто вызывают проблемы у начинающих разработчиков. Например, можно написать стили для элемента, а потом забыть и дописать другие стили для этого же элемента ниже в коде. Начнутся конфликты, элемент будет выглядеть непредсказуемо.
Если элемент вдруг выглядит не так, как он описан в стилях, — первым делом убедитесь, что к нему не применяются какие‑нибудь дополнительные стили из других мест. Это можно легко сделать при помощи веб‑инспектора, мы изучим его в следующих главах.
Важность свойств на языке разработчиков называется специфичностью.
Специфичность. МДН
Иногда к элементу относятся несколько наборов стилей, в которых есть одинаковые свойства. В этом случае браузер сравнит «важность» стилей и применит свойство из более важных стилей.
Браузер определяет важность по множеству условий, но на старте достаточно запомнить два главных правила.
Чем ниже стили написаны в коде, тем они важнее при прочих равных:
<p>…</p>
p {
color: red;
}
/*
Написанные ниже стили абзаца
перебьют написанные выше
*/
p {
color: blue;
}
Стили для классов важнее стилей для тегов:
<p class="large">…</p>
/*
Цвет из класса перебьёт цвет из тега,
даже если те стоят ниже в коде
*/
.large {
color: crimson;
}
p {
color: blue;
}
Конфликты и наслоение стилей часто вызывают проблемы у начинающих разработчиков. Например, можно написать стили для элемента, а потом забыть и дописать другие стили для этого же элемента ниже в коде. Начнутся конфликты, элемент будет выглядеть непредсказуемо.
Если элемент вдруг выглядит не так, как он описан в стилях, — первым делом убедитесь, что к нему не применяются какие‑нибудь дополнительные стили из других мест. Это можно легко сделать при помощи веб‑инспектора, мы изучим его в следующих главах.
В ХТМЛ есть два основных типа элементов.
Блочные элементы занимают всю доступную ширину родителя и по умолчанию располагаются как этажи друг над другом, но могут раскладываться и по сетке. Примеры блочных элементов: заголовки, абзацы и списки.
Строчные элементы занимают ровно столько места, сколько нужно их содержимому, выстраиваются друг за другом и переносятся как строки. Например, так ведут себя слова, ссылки и картинки в тексте. Строчные элементы обычно помещаются внутри блочных.
Можно изменить тип элемента: заставить слово вести себя как блок, а заголовок — как слово в строке. За это отвечает свойство display: значение block делает элемент блочным, а inline — строчным. Бывают и другие значения display, мы познакомимся с ними дальше в книге.
В ХТМЛ есть два основных типа элементов.
Блочные элементы занимают всю доступную ширину родителя и по умолчанию располагаются как этажи друг над другом, но могут раскладываться и по сетке. Примеры блочных элементов: заголовки, абзацы и списки.
Строчные элементы занимают ровно столько места, сколько нужно их содержимому, выстраиваются друг за другом и переносятся как строки. Например, так ведут себя слова, ссылки и картинки в тексте. Строчные элементы обычно помещаются внутри блочных.
Можно изменить тип элемента: заставить слово вести себя как блок, а заголовок — как слово в строке. За это отвечает свойство display: значение block делает элемент блочным, а inline — строчным. Бывают и другие значения display, мы познакомимся с ними дальше в книге.
У элементов бывают внутренние и внешние отступы.
Внутренние отступы от границ элемента до содержимого называют «падингами». Их задают свойством padding для разных сторон:
p {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
}
Фон элемента распространяется на падинги, это удобно при вёрстке карточек и плашек:
p {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
font-size: 120%;
background: #f3f3f3;
}
Внешние отступы от границ элемента до соседних элементов называют «маржинами». Их задают свойством margin для разных сторон:
p {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
font-size: 120%;
background: #f3f3f3;
margin-bottom: 32px;
}
Вертикальные маржины могут быть только у блочных элементов.
Маржины и падинги можно и нужно комбинировать.
Поместим абзацы из примера и заголовок внутрь карточки с подложкой. Чтобы не задавать каждому элементу отступы до края карточки, укажем внутренние отступы самой карточке. А элементам укажем только вертикальные отступы друг от друга:
<div class="card">
<h3>How doth the little crocodile</h3>
<p>...</p>
<p>...</p>
</div>
.card {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
background-color: #f3f3f3;
}
h3 {
margin-bottom: 24px;
}
p {
margin-top: 0;
margin-bottom: 18px;
}
/* Обнуляем нижний отступ для последнего абзаца */
p:last-child {
margin-bottom: 0;
}
Нет строгих правил и требований, когда использовать падинг, а когда маржин. Но лучше использовать свойства по их назначению: для внутренних и внешних отступов соответственно. Такую вёрстку будет проще понимать другим разработчикам.
У элементов бывают внутренние и внешние отступы.
Внутренние отступы от границ элемента до содержимого называют «падингами». Их задают свойством padding для разных сторон:
p {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
}
Фон элемента распространяется на падинги, это удобно при вёрстке карточек и плашек:
p {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
font-size: 120%;
background: #f3f3f3;
}
Внешние отступы от границ элемента до соседних элементов называют «маржинами». Их задают свойством margin для разных сторон:
p {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
font-size: 120%;
background: #f3f3f3;
margin-bottom: 32px;
}
Вертикальные маржины могут быть только у блочных элементов.
Маржины и падинги можно и нужно комбинировать.
Поместим абзацы из примера и заголовок внутрь карточки с подложкой. Чтобы не задавать каждому элементу отступы до края карточки, укажем внутренние отступы самой карточке. А элементам укажем только вертикальные отступы друг от друга:
<div class="card">
<h3>How doth the little crocodile</h3>
<p>...</p>
<p>...</p>
</div>
.card {
padding-left: 10px;
padding-right: 10px;
padding-top: 20px;
padding-bottom: 30px;
background-color: #f3f3f3;
}
h3 {
margin-bottom: 24px;
}
p {
margin-top: 0;
margin-bottom: 18px;
}
/* Обнуляем нижний отступ для последнего абзаца */
p:last-child {
margin-bottom: 0;
}
Нет строгих правил и требований, когда использовать падинг, а когда маржин. Но лучше использовать свойства по их назначению: для внутренних и внешних отступов соответственно. Такую вёрстку будет проще понимать другим разработчикам.
У некоторых ЦСС‑свойств есть краткая запись. Это способ оптимизировать и сократить код, заменить несколько свойств одним.
Например, краткая запись падинга одним свойством описывает отступы сразу для всех сторон. Такая же краткая запись работает для маржина.
.example {
padding-top: 10px;
padding-right: 5px;
padding-bottom: 20px;
padding-left: 5px;
padding: 10px 5px 20px 5px; /* Верх, право, низ, лево */
padding: 10px 5px 20px; /* Верх, право-лево, низ */
padding: 10px 5px; /* Низ-верх, право-лево */
padding: 5px; /* Все отступы */
}
Можно описать базовые стили краткой записью, а в особых случаях указать отличия.
p {
margin: 0 18px 24px 0;
}
.lead {
margin-bottom: 24px; /* Меняем только нижний маржин */
}
.noIndent {
margin: 0; /* Меняем краткую запись целиком, все маржины обнулятся */
}
/* И наоборот: краткая запись переопределит все маржины */
h1 {
margin-top: 8px;
margin-bottom: 18px;
}
.pageTitle {
margin: 27px 0 36px;
}
Краткая запись. МДН
У некоторых ЦСС‑свойств есть краткая запись. Это способ оптимизировать и сократить код, заменить несколько свойств одним.
Например, краткая запись падинга одним свойством описывает отступы сразу для всех сторон. Такая же краткая запись работает для маржина.
.example {
padding-top: 10px;
padding-right: 5px;
padding-bottom: 20px;
padding-left: 5px;
padding: 10px 5px 20px 5px; /* Верх, право, низ, лево */
padding: 10px 5px 20px; /* Верх, право-лево, низ */
padding: 10px 5px; /* Низ-верх, право-лево */
padding: 5px; /* Все отступы */
}
Можно описать базовые стили краткой записью, а в особых случаях указать отличия.
p {
margin: 0 18px 24px 0;
}
.lead {
margin-bottom: 24px; /* Меняем только нижний маржин */
}
.noIndent {
margin: 0; /* Меняем краткую запись целиком, все маржины обнулятся */
}
/* И наоборот: краткая запись переопределит все маржины */
h1 {
margin-top: 8px;
margin-bottom: 18px;
}
.pageTitle {
margin: 27px 0 36px;
}
Краткая запись. МДН