Основы CSS: стилизация и адаптивность для начинающих

css Верстка
Каскадные таблицы стилей (CSS) – это язык, предназначенный для описания внешнего вида HTML-документов. С помощью CSS мы можем изменять цвета, шрифты, размеры и расположение элементов на веб-странице, что делает её более привлекательной и удобной для пользователей. В данной статье мы подробно рассмотрим основные аспекты использования CSS, чтобы даже новичок мог начать создавать стильные и адаптивные веб-страницы.
Содержание
  1. Определение и назначение CSS
  2. Основы CSS
  3. Базовые понятия: каскадные таблицы стилей, селекторы, свойства и значения
  4. Подключение CSS к HTML
  5. Внутренний стиль (internal stylesheet)
  6. Внешний файл CSS (external stylesheet)
  7. Встраиваемый стиль (inline styles)
  8. Селекторы CSS
  9. Основные селекторы
  10. Универсальный селектор (`*`)
  11. Селекторы имени тегов (`p`, `h1`, `div` и т.д.)
  12. Селекторы классов (`.class`)
  13. Селекторы идентификаторов (`#id`)
  14. Комбинированные селекторы
  15. Селекторы потомков
  16. Селекторы дочерних элементов
  17. Селекторы соседних элементов
  18. Селекторы общих соседей
  19. Псевдоклассы
  20. :hover
  21. :nth-child()
  22. Псевдоэлементы
  23. ::before
  24. ::after
  25. Атрибутные селекторы
  26. Селекторы по наличию атрибута
  27. Селекторы по значению атрибута
  28. Свойства CSS
  29. Шрифты (`font-family`, `font-size`, `font-weight`)
  30. Цвет (`color`, `background-color`)
  31. Отступы и поля (`margin`, `padding`)
  32. Размеры и позиционирование (`width`, `height`, `position`, `top`, `left`)
  33. Границы (`border`, `border-width`, `border-color`)
  34. Текст (`text-align`, `text-decoration`, `line-height`)
  35. Визуальные эффекты (`opacity`, `box-shadow`)
  36. Блочная модель
  37. Макет и позиционирование
  38. Типы отображения (display)
  39. Позиционирование элементов
  40. Плавающие элементы (float)
  41. Анимации и переходы
  42. Переходы (transitions)
  43. Анимации (animations)
  44. Адаптивный дизайн
  45. Медиа-запросы (media queries)
  46. Отзывчивые единицы измерения (em, rem, vw, vh)
  47. Принципы адаптивного дизайна
  48. Каскадность CSS
  49. Приоритет селекторов
  50. Наследование свойств
  51. Важность (`!important`)
  52. Практические примеры
  53. Создание простого макета страницы
  54. Стилизация навигационного меню
  55. Форматирование блоков и стилизация текста
  56. Как настроить стили для адаптивности
  57. Дополнительные ресурсы
  58. Заключение: следующий шаг в изучении CSS

Определение и назначение CSS

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

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

Без CSS веб-страницы выглядели бы скучно и однообразно. CSS добавляет жизнь, красоту и функциональность веб-сайтам.

Основы CSS

Базовые понятия: каскадные таблицы стилей, селекторы, свойства и значения

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

  • Селекторы – это специальные выражения, которые выбирают конкретные элементы на странице, к которым будут применяться стили.
  • Свойства – это характеристики элементов, которые мы можем изменять. Например, цвет текста, размер шрифта, фон страницы.
  • Значения – это конкретные значения, которые мы присваиваем свойствам. Например, «красный», «16px», «белый».

Разберем для примера небольшой CSS код:

p {
    color: blue;
    font-size: 14px;
}

В этом примере p — это селектор, а color и font-size — свойства с соответствующими значениями, которые означают, что все абзацы на странице будут иметь синий цвет текста, а сам текст будет размером в 14 пикселей.

Подключение CSS к HTML

Существует несколько способов подключить CSS к HTML-файлу:

Внутренний стиль (internal stylesheet)

Внутренний стиль размещается внутри тега <style> в заголовке (в разделе <head>)  HTML-документа. Этот способ удобен, если стили применяются только к одной странице или для небольших проектов с небольшим количеством страниц.

Пример:

<!DOCTYPE html>
<html>
<head>
  <title>Образец встроенного стиля</title>
  <style>
    h1 {
       color: blue;
       font-family: Arial;
    }
    p {
      color: green;
      font-size: 18px;
    }
  </style>
</head>
<body>
    <!-- Ваш контент -->
  <h1>Заголовок</h1>
  <p>Абзац</p>
</body>
</html>

Не рекомендуется для больших проектов, так как код становится неудобным для чтения и поддерживания.

Внешний файл CSS (external stylesheet)

Внешний файл CSS – это отдельный файл с расширением .css, который подключается к HTML-файлу с помощью тега <link> в заголовке HTML-документа.

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

  1. Создайте файл с расширением .css, например, style.css.
  2. Внутри файла style.css напишите свои CSS правила. Например:
    body {
       background-color: #f3f3f3;
       font-family: 'Arial', sans-serif;
    }
    ...
  3. Подключите ваш CSS файл к HTML документу с помощью тега <link>, который обычно размещается внутри <head> вашего HTML файла. Например:
    <!DOCTYPE html>
    <html>
    <head>
        <link rel="stylesheet" href="styles.css">
    </head>
    <body>
        <!-- Ваш контент -->
    </body>
    </html>
  4. После подключения CSS файла, откройте ваш HTML файл в браузере и убедитесь, что стили применяются корректно.

Встраиваемый стиль (inline styles)

Встраиваемый стиль применяется непосредственно к элементу HTML с помощью атрибута style. Этот метод удобен для небольших изменений, когда нужно применить стили к конкретному элементу или переопределить общие стили.

Пример:

<p style="color: red; font-weight: bold;">Это абзац с красным жирным текстом</p>

В этом случае заголовок будет красным и жирным, несмотря на то, что в общих стилях они заданы по-другому.

Не рекомендуется для больших проектов, так как код становится неудобным для чтения и поддерживания.

Лучше всего создавать селекторы класса в таблице стилей, чтобы грамотно применять стили к разным элементам:

.skill {
    color: red;
    font-weight: bold;
}

И затем применять класс к нужным элементам:

<h1 class="skill">Это стиль с классом</h1>

Таким образом, вы можете гибко управлять стилями вашего документа, сохраняя их в отдельных файлах и применяя к разным страницам.

Селекторы CSS

Селекторы CSS используются для выбора HTML-элементов, к которым будут применяться стили. Существует множество типов селекторов, каждый из которых имеет свои особенности и применение.

Основные селекторы

Основные селекторы позволяют выбирать элементы по их тегам, классам или идентификаторам.

Универсальный селектор (`*`)

Универсальный селектор выбирает все элементы на странице. Он используется редко, так как применяет стили ко всем элементам, что может привести к нежелательным результатам. Пример:

* {
   color: blue;
}

Селекторы имени тегов (`p`, `h1`, `div` и т.д.)

Селектор по имени тега выбирает все элементы с данным именем тега. Например, селектор p выбирает все абзацы на странице. Пример:

 p { color: blue; } 

Этот код изменит цвет текста всех абзацев на синий.

Селекторы классов (`.class`)

Селекторы классов выбирают элементы с определенным классом. Классы задаются с помощью атрибута class в HTML, они могут быть присвоены нескольким элементам.

<p class="important">Важный текст</p>
<div class="important">Важный блок</div>

А в CSS обозначаются точкой:

.important {
 font-size: 20px; 
}

Этот код изменит размер шрифта всех элементов с классом important на 20 пикселей.

Селекторы идентификаторов (`#id`)

Селекторы идентификаторов выбирают элемент с определенным идентификатором. Идентификаторы задаются с помощью атрибута id в HTML (<div id="unique">Текст</div>) и обозначаются решеткой в CSS:

 #unique { background-color: yellow; } 

Этот код изменит цвет фона элемента с идентификатором unique на желтый.

Комбинированные селекторы

Комбинированные селекторы позволяют выбирать элементы на основе их взаимного расположения.

Селекторы потомков

Селекторы потомков выбирают элементы, являющиеся потомками другого элемента. Например, селектор div p выбирает все абзацы внутри div:

 div p { color: green; } 

Этот код изменит цвет текста всех абзацев внутри div на зеленый.

Селекторы дочерних элементов

Селекторы дочерних элементов выбирают элементы, являющиеся непосредственными потомками другого элемента. Например, селектор ul > li выбирает все элементы li, которые являются непосредственными потомками ul:

 ul > li { list-style-type: none; } 

Этот код уберет маркеры у всех элементов li, которые являются непосредственными потомками ul.

Селекторы соседних элементов

Селекторы соседних элементов выбирают элемент, который непосредственно следует за другим элементом. Например, селектор h1 + p выбирает первый абзац, следующий за заголовком h1:

 h1 + p { margin-top: 0; } 

Этот код уберет верхний отступ у первого абзаца, следующего за заголовком h1.

Селекторы общих соседей

Селекторы общих соседей выбирают все элементы, следующие за другим элементом. Например, селектор h1 ~ p выбирает все абзацы, следующие за заголовком h1:

 h1 ~ p { color: red; } 

Этот код изменит цвет текста всех абзацев, следующих за заголовком h1, на красный.

Псевдоклассы

Псевдоклассы позволяют выбирать элементы на основе их состояния или позиции.

:hover

Псевдокласс :hover применяется к элементу при наведении на него курсора:

 a:hover { color: orange; } 

Этот код изменит цвет текста ссылки на оранжевый при наведении на нее курсора.

:nth-child()

Псевдокласс :nth-child() выбирает элементы на основе их позиции среди родственных элементов. Например, li:nth-child(2) выбирает второй элемент li в списке:

 li:nth-child(2) { font-weight: bold; } 

Этот код сделает текст второго элемента li жирным.

Псевдоэлементы

Псевдоэлементы позволяют создавать и стилизовать части элементов, которые не существуют в HTML.

::before

Псевдоэлемент ::before вставляет содержимое перед элементом:

 p::before { content: "Примечание: "; font-weight: bold; } 

Этот код добавит текст «Примечание: » перед каждым абзацем и сделает его жирным.

::after

Псевдоэлемент ::after вставляет содержимое после элемента:

 p::after { content: " (конец)"; font-style: italic; } 

Этот код добавит текст » (конец)” после каждого абзаца и сделает его курсивом.

Атрибутные селекторы

Атрибутные селекторы позволяют выбирать элементы на основе их атрибутов и значений атрибутов.

Селекторы по наличию атрибута

Селектор [attr] выбирает элементы, у которых есть определенный атрибут. Например, [title] выбирает все элементы с атрибутом title:

 [title] { border-bottom: 1px dotted; } 

Этот код добавит пунктирное подчеркивание ко всем элементам с атрибутом title.

Селекторы по значению атрибута

Селектор [attr=»value»] выбирает элементы с определенным значением атрибута.

Например, возьмем HTML ссылку <a href="https://www.example.ru">Ссылка на сайт</a>, у нее есть атрибут [href], при помощи которого мы можем к примеру изменить все ссылки на оранжевый цвет:

a[href] {
  color: orange;
}

Теперь возьмём текстовый элемент формы: <input type="text" id="name" name="student_name">, он имеет атрибут [type="text"] . Выбираем все текстовые поля ввода:

 input[type="text"] { border: 1px solid #ccc; } 

Этот код добавит серую рамку ко всем текстовым полям ввода.

Селекторы CSS предоставляют мощные инструменты для точного выбора элементов и применения к ним стилей. Понимание и правильное использование селекторов позволяет создавать более гибкие и эффективные стили для веб-страниц.

Свойства CSS

Свойства CSS определяют внешний вид элементов веб-страницы.

Шрифты (`font-family`, `font-size`, `font-weight`)

Данные свойства, позволяют управлять шрифтом текста:

  • font-family: определяет шрифт.
  • font-size: устанавливает размер текста.
  • font-weight: позволяют управлять толщиной текста.

Пример:

p {
   font-family: Arial, sans-serif;
   font-size: 16px;
   font-weight: bold;
}

Цвет (`color`, `background-color`)

Данные свойства позволяют устанавливать цвет текста и фона элемента:

  • color: задаёт цвет текста.
  • background-color: задаёт цвет фона.

Пример:

h1 {
  color: red;
  background-color: yellow;
}

Отступы и поля (`margin`, `padding`)

Свойства margin и padding позволяют устанавливать отступы между элементами и отступы внутри элемента.

Пример:

p {
  margin: 10px;
  padding: 5px;
}

Размеры и позиционирование (`width`, `height`, `position`, `top`, `left`)

Свойства width, height, position, top и left позволяют управлять размерами и позиционированием элементов.

Пример:

div {
  width: 200px;
  height: 100px;
  position: absolute;
  top: 50px;
  left: 100px;
}

Границы (`border`, `border-width`, `border-color`)

Свойства border, border-width и border-color позволяют устанавливать границы элементов.

Пример:

div {
  border: 2px solid red;
}

Текст (`text-align`, `text-decoration`, `line-height`)

Свойства text-align, text-decoration и line-height позволяют управлять выравниванием текста, декорацией и межстрочным пробелом.

Пример:

p {
  text-align: center;
  text-decoration: underline;
  line-height: 1.5;
}

Визуальные эффекты (`opacity`, `box-shadow`)

Свойства opacity и box-shadow позволяют добавлять визуальные эффекты к элементам.

Пример:

div {
  opacity: 0.5;
  box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.5);
}

Блочная модель

Блочная модель описывает структуру HTML-элементов и включает отступы, поля, границы и размеры. Примеры:

div {
    margin: 10px;
    padding: 20px;
    border: 1px solid #ccc;
    width: 100px;
    height: 100px;
}

Макет и позиционирование

Типы отображения (display)

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

  • block: элемент отображается как блочный.
  • inline: элемент отображается как строчный.
  • flex: элемент становится контейнером Flexbox.
  • grid: элемент становится контейнером Grid.

Позиционирование элементов

Свойство position определяет способ позиционирования элемента. Основные значения:

  • static: элемент позиционируется по умолчанию.
  • relative: элемент позиционируется относительно своего нормального положения.
  • absolute: элемент позиционируется относительно ближайшего позиционированного предка.
  • fixed: элемент позиционируется относительно окна браузера.
  • sticky: элемент позиционируется в зависимости от прокрутки.

Плавающие элементы (float)

Свойство float позволяет элементам «плавать» слева или справа от контейнера. Пример:

img {
    float: left;
    margin: 10px;
}

Анимации и переходы

Переходы (transitions)

Переходы позволяют плавно изменять значения свойств. Пример:

button {
    transition: background-color 0.3s;
}
button:hover {
    background-color: #555;
}

Анимации (animations)

Анимации позволяют создавать сложные анимационные эффекты. Пример:

@keyframes example {
    from {background-color: red;}
    to {background-color: yellow;}
}
div {
    animation: example 5s infinite;
}

Адаптивный дизайн

Медиа-запросы (media queries)

Медиа-запросы позволяют применять стили в зависимости от характеристик устройства. Пример:

@media (max-width: 600px) {
    body {
        background-color: lightblue;
    }
}

Отзывчивые единицы измерения (em, rem, vw, vh)

Эти единицы измерения позволяют создавать адаптивные дизайны. Примеры:

  • em: относительно размера шрифта родительского элемента.
  • rem: относительно размера шрифта корневого элемента (обычно <html>).
  • vw: 1% от ширины окна просмотра.
  • vh: 1% от высоты окна просмотра.

Принципы адаптивного дизайна

Адаптивный дизайн позволяет веб-страницам корректно отображаться на различных устройствах и экранах. Основные принципы включают:

  • Использование гибких макетов, основанных на сетках.
  • Применение отзывчивых изображений и медиа.
  • Использование медиа-запросов для изменения стилей в зависимости от устройства.

Каскадность CSS

Каскадность CSS означает, что стили могут накладываться друг на друга. Если одно и то же свойство установлено в нескольких правилах, то применяется правило с более высоким приоритетом.

Приоритет селекторов

Селекторы имеют разный приоритет. Селекторы с более высоким приоритетом переопределяют стили, установленные селекторами с более низким приоритетом.

Например, селектор по идентификатору #id имеет более высокий приоритет, чем селектор по классу .class.

Наследование свойств

Некоторые свойства CSS наследуются от родительских элементов к дочерним элементам. Например, цвет текста наследуется от родительского элемента к дочерним элементам.

Важность (`!important`)

Свойство !important позволяет установить самый высокий приоритет для стиля. Правило с !important переопределяет все другие правила.

Пример:

p {
  color: blue;
}
p {
  color: red !important;
}

В этом примере текст всех абзацев будет красным, так как правило с !important имеет самый высокий приоритет.

Практические примеры

Давайте рассмотрим несколько практических примеров применения CSS.

Создание простого макета страницы

Пример простого макета страницы с использованием Flexbox:

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Простой макет</title>
    <style>
        body {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            height: 100vh;
            margin: 0;
            font-family: Arial, sans-serif;
            overflow-x: hidden;
        }
        header, footer {
            background-color: #333;
            color: white;
            padding: 10px;
            width: 100%;
            text-align: center;
        }
        main {
            flex: 1;
            display: flex;
            align-items: center;
        }
    </style>
</head>
<body>
    <header>Заголовок</header>
    <main>Основное содержимое</main>
    <footer>Подвал</footer>
</body>
</html>

Результат:

Простой макет с использованием flexbox

Стилизация навигационного меню

Добавим в пример выше, в секцию <header> навигационное меню (место слова Заголовок):

<nav>
        <ul>
            <li><a href="#">Главная</a></li>
            <li><a href="#">О нас</a></li>
            <li><a href="#">Услуги</a></li>
            <li><a href="#">Контакты</a></li>
        </ul>
    </nav>

и стилизуем его:

nav {
    background-color: #333;
    padding: 10px;
}
nav ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
    display: flex;
    justify-content: space-around;
}
nav ul li {
    margin: 0 10px;
}
 nav ul li a {
    color: white;
    text-decoration: none;
    padding: 5px 10px;
    display: block;
}
nav ul li a:hover {
    background-color: #555;
}

Результат:

Простой макет с использованием flexbox с меню

Форматирование блоков и стилизация текста

Добавим вместо основного содержимого немного блоков с текстовым наполнением:

<div class="container">
        <div class="top-block">
          <h1>Заголовок</h1>
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quisquam quaerat, aut expedita ab quis commodi, illo temporibus, necessitatibus repellat ducimus deleniti aperiam, sit pariatur reprehenderit minima aliquam voluptas ut nisi.</p>
        </div>
        <div class="content-block">
          <h2>Подзаголовок</h2>
          <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ipsam dolores rerum ipsa quas eum tempora incidunt ut. In corporis et fugiat aliquam, ea, dolorem esse sit reiciendis sint, consequuntur quaerat.</p>
        </div>  
       </div>

И стилизуем его:

.container {
    font-family: Arial, sans-serif;
    font-size: 18px;
    line-height: 1.5;
    color: #555;
    width: 100%;
    max-width: 1320px;
    margin: 0 auto;
    padding: 0 15px;  
    display: inline-block;
}
h1, h2, h3, h4 {
    text-align: center;
}
h1 {
    font-size: 37px
}
h2 {
    font-size: 32px
}
.top-block {
    padding: 3rem;
    text-align: center;
    background-color: lightgray;
    border: 1px solid #555;
}
.content-block {
    margin-top: 2rem;  
}

Результат:
Простой макет с использованием flexbox с меню блокаи и текстом

Как настроить стили для адаптивности

Для создания адаптивных страниц, которые корректно отображаются на разных устройствах, используются медиазапросы:

@media (max-width: 768px) {
    body {
        font-size: 14px;
    }
    header {
        padding: 10px;
    }
}

В данном примере стили будут изменяться при ширине экрана менее 768 пикселей, что улучшит восприятие страницы на мобильных устройствах.

Дополнительные ресурсы

Чтобы углубиться в изучение CSS, рекомендуем использовать следующие ресурсы:

  • Онлайн-курсы: Khan Academy, Codecademy, FreeCodeCamp
  • Документация MDN: https://developer.mozilla.org/ru/docs/Web/CSS
  • Книги: «CSS: The Definitive Guide» Эрика Мейера, «CSS Secrets» Патрика Кэтлинга.

Заключение: следующий шаг в изучении CSS

Мы рассмотрели основные принципы работы с CSS: от подключения стилей к HTML до адаптивного дизайна. Теперь, когда вы понимаете основы, можно переходить к изучению более продвинутых тем, таких как анимации, использование препроцессоров (например, SASS) и CSS-фреймворков (например, Bootstrap). Помните, что практика – ключ к успеху, поэтому старайтесь регулярно применять полученные знания.

Продолжайте учиться и экспериментировать, и вы обязательно достигнете успеха в веб-разработке!

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( Пока оценок нет )
Web-Revenue.ru
Добавить комментарий