База по вёрстке: самые основы CSS
easy

База по вёрстке: самые основы CSS

Учимся наводить красоту в веб

В прошлый раз мы познакомились с базовой базой HTML — языка разметки, который задаёт структуру и содержание веб-страниц. Теперь черёд CSS — языка для описания внешнего вида и форматирования HTML-документов.

Что такое CSS

CSS (Cascading Style Sheets, «каскадные таблицы стилей») — это язык стилей, с помощью которого оформляют веб-страницы. Он определяет, как именно должны отображаться элементы HTML, включая макет, цвета, шрифты и другие визуальные аспекты. CSS используют для того, чтобы отделить содержание веб-страницы от её оформления. За счёт этого страницы удобнее изменять и поддерживать.

Представьте, что HTML — это каркас здания, который определяет его структуру: где находятся комнаты, окна и двери. CSS по такой же аналогии — это дизайн интерьера и экстерьера этого здания: цвет стен, стиль мебели, шторы и так далее. И поскольку дизайн не определён каркасом, нам не нужно сносить дом и строить новый, чтобы изменить оформление.

Возьмём для примера главную страницу журнала «Код». Вот как она выглядит благодаря стилям CSS:

База по вёрстке: самые основы CSS

А теперь отключим стили и посмотрим, что получилось. Стало сильно хуже в визуальном плане:

База по вёрстке: самые основы CSS

Синтаксис и структура CSS

CSS — декларативный язык. Это значит, что он не содержит явный код для стилизации, а описывает, как следует стилизовать элементы веб-страницы. Мы не программируем шаги для достижения желаемого результата, а указываем, что должно получиться.

Структура CSS включает комментарии, селекторы, свойства и значения. В коде они указываются в таком же порядке. Комментарии оформляются и выглядят так: /* комментарий */. Они используются для объяснения и деления кода на логические блоки. Комментарии не обязательны, но мы будем их использовать, чтобы было понятнее.

Селектор, свойство и значение образуют правило. Правило, в свою очередь, содержит блок деклараций — одно или несколько свойств и их значений в фигурных скобках. Каждая декларация состоит из пары «свойство: значение», разделённой точкой с запятой:

/* комментарий */
селектор {
  свойство: значение;
}

Теперь копнём поглубже.

Как подключить стили CSS к HTML

Самый простой способ передать информацию о стилях браузеру, чтобы он отобразил страницу так, как мы хотим, — это прописать стили прямо в HTML-документе. Но в реальном мире веб-разработки необходимо хранить код HTML, CSS и JavaScript в отдельных файлах — так проще и удобнее поддерживать проекты. Мы будем учиться сразу делать правильно. Сохраним CSS-код в файл styles.css в ту же папку, в которой лежит HTML-документ, и подключим стили в него:

<link rel="stylesheet" href="styles.css">

Эта строка сообщает браузеру, к какому файлу ему обращаться, чтобы знать, как оформлять страницу. Стили всегда подключаются в блоке «головы» страницы:

<!DOCTYPE html>
<html lang="ru" >
<head>
    <meta charset="UTF-8">
    <title>Пример HTML-документа</title>
    <!-- подключаем стили -->
    <link rel="stylesheet" href="styles.css">
</head>

CSS-свойства

Свойства CSS определяют атрибуты стиля, которые нужно применить к элементам HTML. Они управляют различными аспектами внешнего вида:

  • font-family, font-size, font-weight, font-style — свойства шрифта;
  • color, background-color, border-color — свойства цвета;
  • text-align, text-decoration, text-transform — свойства текста;
  • display, float, position, margin, padding — свойства макета;
  • background-image, background-repeat, background-position — свойства фона.

CSS-значения

Значения CSS определяют желаемые настройки стиля для свойств. Это могут быть отдельные значения, числа, цветовые коды, ключевые слова или более сложные выражения. Вот несколько примеров значений:

  • font-family: Arial, sans-serif,
  • color: #ff0000,
  • background-image: url(image.png),
  • margin: 10px 20px,
  • text-align: center.

На практике это работает так. Допустим, мы делаем свой список задач в браузере и для этого создали страницу для дальнейшей работы. Если не использовать стили, то браузер возьмёт все значения шрифтов, отступов и прочего оформления по умолчанию и получится что-то такое:

База по вёрстке: самые основы CSS

А теперь дадим этой странице немного стиля и посмотрим, что поменяется:

/*Задаём общие параметры для всей страницы: шрифт и отступы*/
body {
  text-align: center;
  margin: 10;
  font-family: Verdana, Arial, sans-serif;
  font-size: 16px;
}
/* Настраиваем внешний вид поля ввода*/
input {
  display: inline-block;
  margin: 20px auto;
  border: 2px solid #eee;
  padding: 10px 20px;
  font-family: Verdana, Arial, sans-serif;
  font-size: 16px;
}
/*Закончили со стилями*/
База по вёрстке: самые основы CSS

Типографика и цвета

Основные аспекты типографики включают шрифты, размеры, интервалы и стили текста. Семейство шрифтов font-family определяет список шрифтов, которые будут использоваться для текста. Обычно указываются несколько шрифтов на случай, если первый недоступен. Например, такие значения говорят, что нужно использовать шрифты Arial или Sans Serif:

font-family: Arial, sans-serif;

Размер шрифта font-size определяет, какого размера должен быть текст. Такое значение сообщает, что шрифт должен быть размером 16 пикселей:

font-size: 16px;

Стиль шрифта font-style определяет стиль шрифта, например курсив, как в этом примере:

font-style: italic;

Толщина шрифта font-weight определяет толщину текста. Например, можно задать жирный шрифт:

font-weight: bold;

Цвета в CSS используются для определения цвета текста, фона, границ и других элементов. Цвет текста указывается с помощью свойства color, а цвет фона элемента — с помощью свойства background-color.

Указывать цвета можно разными способами:

  • стандартным именем, например color: blue;,
  • шестнадцатеричным кодом HEX — color: #ff0000;,
  • значениями RGB (красный, зелёный и синий) — color: rgb(255, 0, 0);,
  • значениями RGBA, где к RGB добавляется прозрачность — color: rgba(255, 0, 0, 0.5);,
  • значениями HSL (оттенок, насыщенность и светлость) — color: hsl(0, 100%, 50%);,
  • значениями HSLA, где к HSL добавляется прозрачность — color: hsla(0, 100%, 50%, 0.5);.

CSS-селекторы

CSS-селектор — это часть CSS-правила, которая указывает, к каким элементам HTML будут применяться заданные стили. Если проще, они идентифицируют элементы: «такой элемент должен отображаться вот так». Простые селекторы указывают на элементы на основе их имён:

  • h1, p, ul, a, img — селекторы тегов;
  • .highlight, .button, .image-container — селекторы классов;
  • #main-content, #header, #footer — селекторы идентификаторов;
  • * — универсальный селектор, который выбирает все элементы;
  • type="text" — селектор атрибута (в данном случае текста).

Сложные селекторы объединяют простые и позволяют более точно выбирать элементы на основе их отношений, состояния или атрибутов. Возьмём пример с селекторами из статьи про соседние и родственные селекторы. Суть в том, что мы отформатируем текст на странице с их помощью так, чтобы первые абзацы после подзаголовков были красными, а остальные не менялись:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Соседние селекторы</title>
  <style type="text/css">
    body {
      font-family: Arial;
      font-size: 16px;
    }
    /*  используем соседний селектор  */
    h2 + p {
      color: red;
    }
  </style>
</head>
<body>
  <h1>Что такое спринты в программировании</h1>
  <h2>Ситуация</h2>
  <!-- это будет красным -->
  <p>У команды разработчиков есть большой проект, где нужно сделать много разных вещей:</p>
  <!-- а это — нет -->
  <p>— придумать архитектуру всего сервиса,<br>
  — написать серверную часть,<br>
  — сделать вёрстку и дизайн для мобильных приложений,<br>
  — выпустить сайт, который может делать то же самое, что и приложения,<br>
  — предусмотреть интеграцию с другими сервисами,<br>
  — сделать авторизацию через популярные соцсети.</p>
  <p>Времени на всё — 6 месяцев, и кажется, что этого достаточно. Но это может быть обманчиво, потому что команда расслабляется, каждый начинает делать что-то своё, а за месяц до финала выясняется, что вместе эти отдельные части работать не будут. Например, сервер не отдаёт данные в нужном формате для веб-страницы, приложения хранят данные только у себя и не умеют отправлять их на сервер, а авторизация в соцсетях работает только на Андроиде.</p>

  <h2>Что такое спринт</h2>
  <p>Спринт — это небольшой фиксированный отрезок времени, в который команда делает какую-то ограниченную часть проекта. Например, команда может двигаться двухнедельными спринтами, с каждым спринтом добавляя в проект новые возможности. </p>
  <p>Задача спринта — чтобы по его итогу что-то работало. Например, если мы взяли в спринт единую авторизацию в сервисе, то к концу спринта она должна работать и быть протестированной. Нельзя к концу спринта сказать «Ой, ну ничего, в следующий раз доделаем». К концу спринта должно быть готово.</p>
</body>
</html>
База по вёрстке: самые основы CSS

Блочная модель и макет

Блочная модель, или Box Model, рассматривает каждый элемент как прямоугольную коробку, состоящую из областей (изнутри наружу):

  • content — область, в которой располагается какой-то контент (текст, изображение и так далее).
  • padding — внутренний отступ, то есть пространство между содержимым и границей элемента. Он прозрачный и увеличивает размер элемента.
  • border — граница, то есть линия, которая окружает элемент и обрамляет padding.
  • margin — внешний отступ, то есть пространство между границей элемента и соседними. Как и padding, он прозрачный, но не влияет на размер элемента.

Макет, или Layout, — это способ размещения и выравнивания элементов на веб-странице. Вот основные модели компоновки макета:

  • стандартный поток,
  • флексбокс,
  • сетка,
  • позиционирование,
  • обтекание.

Стандартный поток документа, или Normal Flow, — это базовый способ размещения элементов, при котором блочные элементы располагаются один под другим, а строчные элементы — один за другим в строке. Блочные элементы <div>, <p>, <h1> и так далее располагаются вертикально. В блочные элементы помещаются встроенные, например <span>, <a>, <strong>. Они располагаются горизонтально и занимают только необходимую ширину.

Флексбокс, или flexbox, использует пространство более эффективно и выравнивает элементы в контейнере. С помощью флексбокса создают гибкие и адаптивные макеты.

Сетка, или grid, позволяет создавать сложные макеты с использованием строк и столбцов и точно определять размещение элементов.

Позиционирование — способ управления расположением элементов относительно их нормального потока или других элементов.

Обтекание, или flex, используется для обтекания элементов текстом и создания многостолбцовых макетов. С появлением флексбокса и позиционирования такой способ используют всё реже.

Что дальше

Дальше будет продолжение про CSS — препроцессоры, флексбоксы и прочие классные штуки, которые позволяют сделать практически любую красоту на странице. Подпишитесь, чтобы не пропустить продолжение наших материалов по вёрстке.

Обложка:

Алексей Сухов

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Соцсети:

Юлия Зубарева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
easy