JavaRush /Курсы /Модуль 1: Web Core /Улучшение дизайна и UX

Улучшение дизайна и UX

Модуль 1: Web Core
15 уровень , 8 лекция
Открыта

9.1 Улучшение интерактивности с помощью псевдоклассов

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

Рассмотрим несколько примеров, как можно использовать псевдоклассы и псевдоэлементы для этих целей.

1. Наведение курсора

Псевдокласс :hover позволяет изменять стиль элемента, когда пользователь наводит на него курсор. Это особенно полезно для кнопок и ссылок.

Пример: Изменение цвета кнопки при наведении

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

CSS
    
      button {
        background-color: #3498db;
        color: white;
        border: none;
        padding: 10px 20px;
        cursor: pointer;
      }

      button:hover {
        background-color: #2980b9;
      }
    
  
HTML
    
      <button>Click Me</button>
    
  

2. Фокусировка элемента

Псевдокласс :focus используется для стилизации элементов формы, когда они находятся в фокусе. Это помогает пользователям видеть, какой элемент формы они в данный момент заполняют.

Пример: Стилизация поля ввода при фокусе

В этом примере поле ввода получает синюю границу и тень при фокусе, что улучшает видимость активного элемента формы:

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

      input[type="text"]:focus {
        border-color: #3498db;
        box-shadow: 0 0 5px rgba(52, 152, 219, 0.5);
      }
    
  
HTML
    
      <input type="text">
    
  

3. Состояние активного элемента

Псевдокласс :active применяется к элементу в момент его активации (например, при нажатии кнопки мыши).

Пример: Стилизация кнопки в момент нажатия

В этом примере кнопка слегка уменьшается и меняет цвет при нажатии, создавая эффект нажатия:

CSS
    
      button:active {
        background-color: #2c3e50;
        transform: scale(0.98);
      }
    
  
HTML
    
      <button>Click Me</button>
    
  

9.2 Улучшение визуального восприятия с помощью псевдоэлементов

4. Добавление контента: ::before и ::after

Псевдоэлементы ::before и ::after позволяют добавлять контент до и после элемента, не изменяя HTML-код.

Пример: Добавление иконки перед ссылкой

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

CSS
    
      a::before {
        content: "🔗";
        margin-right: 5px;
      }
    
  
HTML
    
      <a href="#">Here</a>
    
  

Пример: Добавление декоративного элемента после абзаца

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

CSS
    
      p::after {
        content: "❦";
        display: block;
        text-align: right;
        color: #e74c3c;
      }
    
  
HTML
    
      <p>Content</p>
    
  

5. Стилизация первой буквы и строки: ::first-letter и ::first-line

Псевдоэлементы ::first-letter и ::first-line позволяют стилизовать первую букву и первую строку текста, создавая типографические эффекты.

Пример: Стилизация первой буквы абзаца

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

CSS
    
      p::first-letter {
        font-size: 2.5em;
        font-weight: bold;
        color: #3498db;
        float: left;
        margin-right: 0.1em;
      }
    
  
HTML
    
      <p>Content</p>
    
  

Пример: Стилизация первой строки абзаца

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

CSS
    
      p::first-line {
        font-weight: bold;
        color: #2ecc71;
      }
    
  
HTML
    
      <p>Content</p>
    
  

9.3 Улучшение доступности с помощью псевдоклассов и псевдоэлементов

6. Состояние элементов формы

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

Пример: Стилизация выбранного чекбокса

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

CSS
    
      input[type="checkbox"]:checked {
        background-color: #2ecc71;
      }
    
  
HTML
    
      <input type="checkbox" checked>
    
  

Пример: Стилизация отключенного поля ввода

В этом примере отключенное поле ввода получает светло-серый фон и текст, что визуально показывает его недоступность:

CSS
    
      input:disabled {
        background-color: #f0f0f0;
        color: #999;
      }
    
  
HTML
    
      <input type="text" disabled>
    
  

Пример: Стилизация некорректного поля ввода

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

CSS
    
      input:invalid {
        border-color: red;
      }

      input:valid {
        border-color: lightgreen;
      }
    
  
HTML
    
      <input type="text" required pattern=".{5,}" placeholder="Enter at least five symbols">
    
  

Пояснения

  • required делает поле обязательным для заполнения.
  • pattern=".{5,}" содержит шаблон, по которому будет проверяться ввод на валидность. В данном случае валидным будет считаться значение, содержащее 5 или более символов.

9.4 Пример полной реализации

CSS
    
      /* Добавление иконки перед ссылкой */

      a::before {
        content: "🔗";
        margin-right: 5px;
      }

      /* Стилизация первой буквы абзаца при наведении курсора */

      p:hover::first-letter {
        font-size: 2.5em;
        font-weight: bold;
        color: #3498db;
      }

      /* Стилизация кнопки */

      button {
        background-color: #3498db;
        color: white;
        border: none;
        padding: 10px 20px;
        cursor: pointer;
      }

      button:hover {
        background-color: #2980b9;
      }

      button:active {
        background-color: #2c3e50;
        transform: scale(0.98);
      }

      /* Стилизация поля ввода при фокусе */

      input[type="text"]:focus,
      input[type="email"]:focus {
        border-color: #3498db;
        box-shadow: 0 0 5px rgba(52, 152, 219, 0.5);
      }

      /* Стилизация выбранного чекбокса */

      input[type="checkbox"]:checked {
        background-color: #2ecc71;
      }

      /* Стилизация отключенного поля ввода */

      input:disabled {
        background-color: #f0f0f0;
        color: #999;
      }

      /* Стилизация некорректного поля ввода */

      input:invalid {
        border-color: #e74c3c;
      }
    
  
HTML
    
      <!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="UTF-8">
          <meta name="viewport" content="width=device-width, initial-scale=1.0">
          <title>Примеры использования псевдоклассов и псевдоэлементов</title>
          <link rel="stylesheet" href="styles.css">
        </head>
        <body>
          <a href="#">Ссылка с иконкой</a>
          <p>Наведи курсор на этот абзац, чтобы увидеть эффект на первой букве.</p>
          <button>Кнопка</button>
          <form>
            <label>
              Введите текст:
              <input type="text" required>
            </label>
            <br>
            <label>
              Введите email:
              <input type="email" required>
            </label>
            <br>
            <label>
              <input type="checkbox" checked> Чекбокс
            </label>
            <br>
            <button type="submit">Отправить</button>
            <button type="button" disabled>Отключенная кнопка</button>
          </form>
        </body>
      </html>
    
  

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

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

1
Задача
Модуль 1: Web Core, 15 уровень, 8 лекция
Недоступна
Иконка перед ссылкой
Иконка перед ссылкой
1
Задача
Модуль 1: Web Core, 15 уровень, 8 лекция
Недоступна
Поле ввода при фокусе
Поле ввода при фокусе
1
Опрос
Псевдоэлементы, 15 уровень, 8 лекция
Недоступен
Псевдоэлементы
Псевдоэлементы
Комментарии (10)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Gans Electro Уровень 4
25 октября 2025
😂 можно сделать так матрешку
Анастасия Уровень 47
23 июля 2025
В последнем примере, есть нюанс: /* Стилизация отключенного поля ввода */ input:disabled { background-color: #f0f0f0; color: #999; } Я так понима, тут очепятка. Надо заменить на button:disabled, чтобы стиль применился к отключенной кнопке(отключенных полей то нет в примере) Так же с примерами input[type="text"]:focus надо прописать outline: none; (почему-то не прописано в примерах), иначе не видно цвета border(т.к. выделяется черным)
Vadim Makarenko Уровень 42
19 июня 2025
Два последних вопроса теста повторяются
Vadim Makarenko Уровень 42
19 июня 2025
Странно, но в задаче с полем ввода в фокусе тень появляется, а рамка просто становится чёрной, не приобретая заданный цвет :(( Собственно в лекции работает также.
Анастасия Уровень 47
23 июля 2025
Не хватает свойства outline: none Который бы убрал стандартну обводку, которая мешает увидеть новые стили, которые мы прописываем. Если всё прописать - всё ок.
Ilona Уровень 23
27 марта 2025
Зачем добавлять задачи, ответы на которые есть в лекции? Надоела эта копипаста....
RayCowperwood Уровень 48
26 мая 2025
не копируй с лекции а пиши сама с головы (тетрадки), зачем подсматривать
Александр Уровень 19
27 октября 2024
color: inherit;
Maxim Kulikov Уровень 48
11 июня 2025
А я задал цвет и иконке и ссылке, это прошло проверку :)
Анастасия Уровень 47
23 июля 2025
Аналогично поступила =)