20+ ошибок CSS, которых должен избегать каждый веб-дизайнер

—

от автора

Введение

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

  1. Неиспользование резервных шрифтов

При использовании пользовательских шрифтов в веб-дизайне важно указать резервные шрифты на случай, если пользовательский шрифт не загрузится или не будет поддерживаться браузером пользователя. Резервные шрифты позволяют сохранить читабельность и доступность содержимого для пользователей. Не все шрифты, которые могут понадобиться, доступны на каждом компьютере. Кроме того, иногда по неизвестным причинам шрифт, импортированный из какого-либо банка, например Google Fonts, может не загрузиться. Поэтому всегда предпочтительнее использовать обычные запасные шрифты, похожие на них. Например: шрифт sans-serif.

Неправильный

/* Пример неиспользования запасных шрифтов */ body {   font-family: Roboto; }

Правильно

/* Пример использования запасных шрифтов */ body{ font-family: Roboto, Arial, sans-serif; }

В данном примере основным шрифтом является «Roboto», а в качестве резервных шрифтов, если основной шрифт не загружается или не поддерживается, указаны Arial и sans-serif.

  1. Использование пикселей для всего

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

Неправильный

Использование единиц px повсеместно неактуально. В противном случае каждый пользователь будет видеть элементы одинакового размера, а это ужасно, поскольку у каждого пользователя свой монитор с разным размером экрана.

/* Пример использования px для обозначения размера шрифта*/ body{ font-size: 16px; }

Правильный

Если вместо единиц «px» использовать относительные единицы измерения, такие как ‘rem’ или ’em’, то элементы будут масштабироваться в зависимости от размера экрана монитора.

/* Пример использования EM для размера шрифта */ body{ font-size: 1em; }

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

  1. Усложнение селекторов

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

Неправильный

/* Пример сложного селектора*/ body > div#content .post:nth-child(odd) .post-title a {   color: blue; }

Правильный

/* Пример упрощенного селектора*/ .post-title a {   color: blue; }

В данном примере сложный селектор нацелен на конкретную ссылку в заголовке поста. Однако такой селектор длинный и трудночитаемый, что затрудняет его поддержку. Упрощенный селектор нацелен на ту же ссылку, но он короче и легче читается, что упрощает его поддержку.

  1. Повторение одного и того же кода

Повторение одного и того же кода в CSS может привести к появлению раздутых и сложных в обслуживании таблиц стилей. Вместо этого используйте препроцессоры CSS, такие как SASS или LESS, которые позволяют использовать переменные, миксины и другие возможности для уменьшения дублирования кода.

Неправильный

/* Пример повторения одного и того же кода*/ h1 {   font-size: 24px;   line-height: 1.5;   margin-bottom: 20px; }  h2 {   font-size: 24px;   line-height: 1.5;   margin-bottom: 20px; }

Правильный

/* Пример использования "mixin" для сокращения дублирования кода */ @mixin heading-style {   font-size: 24px;   line-height: 1.5;   margin-bottom: 20px; }  h1 {   @include heading-style; }  h2 {   @include heading-style; }

В данном примере один и тот же код повторяется для элементов h1 и h2. Это может привести к раздуванию таблиц стилей и затруднению их поддержки. Используя миксин, мы можем определить набор стилей и повторно использовать их для различных элементов, сокращая дублирование кода и упрощая сопровождение таблицы стилей.

  1. Использование имени цвета

Хотя использование таких названий цветов, как «красный», «синий» и «зеленый», может быть удобным, оно также может привести к несогласованности в цветовой палитре. Лучше использовать шестнадцатеричные или RGB-значения, чтобы обеспечить согласованность на всем сайте.

Неправильный

/* Пример использования названия цвета */ body{ color: red; }

Правильный

/* Пример использования цветового кода*/ body{ color: #ff0000; }

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

  1. ошибки z-index

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

Неправильный

/* Пример ошибок при использовании z-index */ .menu {   position: relative;   z-index: 10; }  .modal {   position: absolute;   z-index: 5; }

Правильный

/* Пример исправления ошибок z-index */ .menu {   position: relative;   z-index: 2; }  .modal {   position: absolute;   z-index: 3; }

В данном примере значения z-индекса установлены неверно, что приводит к неправильному наложению элементов. Чтобы исправить ситуацию, можно подкорректировать значения z-индекса, чтобы обеспечить идеальное наложение элементов и исключить их неожиданное перекрытие.

  1. Неиспользование сокращений

Использование сокращенных CSS-свойств позволяет значительно сократить объем кода, что делает таблицы стилей более читабельными и удобными. Например, можно использовать сокращенное свойство margin вместо того, чтобы писать отдельные свойства для margin-top, margin-right, margin-bottom и margin-left.

Неправильный

/* Пример отказа от использования сокращений */ .container{ margin-top: 10px; margin-right: 20px; margin-bottom: 30px; margin-left: 40px; }

Правильный

/* Пример использования сокращений*/ .container{ margin: 10px 20px 30px 40px; }

В данном примере отказ от использования сокращений может сделать код длиннее и труднее для чтения. Использование сокращений делает код более лаконичным и удобным для чтения.

  1. Чаще использовать !important

Использование декларации !important в CSS может переопределить другие стили и привести к непредвиденным последствиям. Лучше по возможности избегать использования !important и использовать более конкретные селекторы или вообще избегать конфликтов в CSS.

Неправильный

/* Пример более частого использования !important */ .color {   color: red !important; }  .background-color {   background-color: blue !important; }

Правильный

/* Пример использования специфики вместо !important */ body .color {   color: red; }  #header .background-color {   background-color: blue; }

В данном примере использование !important может усложнить сопровождение и переопределение кода. Использование specificity вместо !important гарантирует, что стили будут применены правильно и при необходимости могут быть переопределены.

  1. Использование встроенного CSS

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

Неправильный

<!-- Пример использования встроенного CSS --> <p style="color: red;">This text is red.</p>

Правильный

<!-- Пример использования внешнего CSS --> <head>   <link rel="stylesheet" href="style.css"> </head> <p class="red-text">This text is red.</p>

В данном примере встроенный CSS может усложнить сопровождение и переопределение кода. Использование внешнего CSS обеспечивает последовательное применение стилей на всех страницах и позволяет легко изменять их при необходимости.

  1. Отсутствие организации CSS

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

Неправильный

/* Пример отсутствия организации CSS */ .menu {   /* menu styles */ }  .modal {   /* modal styles */ }  .footer {   /* footer styles */ }  .header {   /* header styles */ }

Правильный

/* Пример организации CSS */ /* Header styles */ .header {   /* header styles */ }  /* Menu styles */ .menu {   /* menu styles */ }  /* Modal styles */ .modal {   /* modal styles */ }  /* Footer styles */ .footer {   /* footer styles */ }

В данном примере отсутствие упорядочивания CSS может сделать код более удобным для чтения и сопровождения. Упорядочивание CSS по разделам или элементам может сделать код более удобным для чтения и сопровождения.

  1. Непоследовательное именование

Непоследовательные соглашения об именовании в CSS могут затруднить поддержку и обновление таблиц стилей. Чтобы сделать CSS более читаемым и удобным для сопровождения, используйте последовательные соглашения об именовании, например BEM (Block, Element, Modifier) или SMACSS (Scalable and Modular Architecture for CSS).

Неправильный

/* Пример непоследовательного именования */ .menu {   /* menu styles */ }  .main-menu {   /* main menu styles */ }  .secondary-menu {   /* secondary menu styles */ }

Правильный

/* Пример последовательного именования */ .primary-menu {   /* primary menu styles */ }  .secondary-menu {   /* secondary menu styles */ }

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

  1. Использование правила @important в CSS

Использование правила @important может отменить все остальные стили и привести к нежелательным последствиям. Лучше использовать конкретизацию и каскад для указания конкретных элементов в HTML.

Неправильный

/* Пример использования @important в CSS */ .header {   color: red !important; }

Правильный

/*Пример использования специфики вместо @important */ body .header {   color: red; }

В данном примере использование @important в CSS может усложнить сопровождение и переопределение кода. Использование специфики вместо @important гарантирует, что стили будут применены правильно и могут быть переопределены при необходимости.

  1. Использование идентификаторов вместо классов

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

Неправильный

/* Пример использования id вместо class */ #header {   /* header styles */ }  #menu {   /* menu styles */ }

Правильный

/* Пример использования класса вместо id */ .header {   /* header styles */ }  .menu {   /* menu styles */ }

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

  1. Использование одной таблицы стилей для всех элементов

Использование одной таблицы стилей для всех страниц сайта может привести к разбуханию и замедлению загрузки. Для повышения производительности лучше использовать несколько таблиц стилей и загружать только необходимые стили для каждой страницы.

Неправильный

/* Пример использования одной таблицы стилей для всего */ /* Style for header */ header {   /* header styles */ }  /* Style for menu */ nav {   /* menu styles */ }  /* Style for body */ body {   /* body styles */ }  /* Style for footer */ footer {   /* footer styles */ }

Правильный

/* Пример использования одной таблицы стилей для всего */ /* Style for header */ header {   /* header styles */ }  /* Style for menu */ nav {   /* menu styles */ }  /* Style for body */ body {   /* body styles */ }  /* Style for footer */ footer {   /* footer styles */ }

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

  1. Неиспользование сброса CSS

Сброс CSS — это набор правил CSS, используемых для сброса стилей по умолчанию, применяемых веб-браузерами. Использование сброса CSS позволяет обеспечить согласованность стилей в различных браузерах и устройствах.

Неправильный

/* Пример простого CSS без сброса */ * {   margin: 0;   padding: 0; }

Правильный

/* Пример простого сброса настроек CSS */ * {   margin: 0;   padding: 0;   box-sizing: border-box; }

Это CSS-правило устанавливает значение margin и padding для всех HTML-элементов равным 0 и устанавливает свойство box-sizing в border-box. Таким образом, размер элемента вычисляется на основе его содержимого, подложки и границы, а не полей.

  1. Неиспользование семантического HTML

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

Неправильный

<ul>   <li><a href="#">Home</a></li>   <li><a href="#">About</a></li>   <li><a href="#">Contact</a></li> </ul>

Правильный

/* Пример использования семантического HTML */ <header>   <nav>     <ul>       <li><a href="#">Home</a></li>       <li><a href="#">About</a></li>       <li><a href="#">Contact</a></li>     </ul>   </nav> </header>

В данном примере элемент header используется для определения заголовка веб-страницы, элемент nav — для определения набора навигационных ссылок, а элементы ul и li — для определения неупорядоченного списка ссылок.

  1. Использование слишком большого количества глобальных стилей

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

Неправильный

body {   font-family: Arial, sans-serif; }  p {   font-size: 16px; }  a {   color: #333; }

Правильный

/* Пример использования слишком большого количества глобальных стилей*/ * {   font-family: Arial, sans-serif;   font-size: 16px;   line-height: 1.5;   color: #333;   background-color: #fff; }

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

  1. Неиспользование CSS-комментариев

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

Неправильный

/* Стилизация для моей страницы */ body {   background-color: #f0f0f0;   font-family: Arial, sans-serif; }  .header {   margin: 10px 0; }

Правильный

/* Пример использования CSS-комментариев */ /* Цвет фона и семейство шрифтов для всей страницы */ body {   background-color: #f0f0f0;   font-family: Arial, sans-serif; }  /* Отступ для секции заголовка */ .header {   margin: 10px 0; }

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

  1. Неиспользование префиксов поставщика

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

Неправильный

.box {   -webkit-transform: rotate(45deg);   -ms-transform: rotate(45deg);   transform: rotate(45deg); }

Правильный

/* Пример использования префиксов поставщиков */ .box {   -webkit-transform: rotate(45deg);   -moz-transform: rotate(45deg);   -ms-transform: rotate(45deg);   -o-transform: rotate(45deg);   transform: rotate(45deg); }

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

  1. Не используется отзывчивый дизайн

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

Неправильный

.container {   width: 960px; }  .image {   width: 400px; }  .text {   width: 500px; }

Правильный

/* Пример использования отзывчивого дизайна */ .container {   width: 100%;   max-width: 1200px;   margin: 0 auto; }  @media only screen and (min-width: 768px) {   .container {     width: 80%;   } }

В данном примере элементу контейнера задана ширина 100% и максимальная ширина 1200px. Свойство margin используется для центрирования элемента контейнера. Медиазапрос также используется для применения различных стилей, когда ширина экрана больше или равна 768px. В этом случае элементу-контейнеру присваивается ширина 80%.

  1. Неиспользование медиазапросов

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

Неправильный

.box {   background-color: #ccc;   width: 300px;   height: 300px; }  .box:hover {   background-color: #999; }

Правильный

/* Пример использования медиазапросов*/ .box {   background-color: #ccc;   width: 300px;   height: 300px; }  .box:hover {   background-color: #999; }  @media (max-width: 768px) {   .box {     width: 100%;     height: auto;   } }

В данном примере для элемента box задан цвет фона #f00. Медиазапрос также используется для применения другого цвета фона, если ширина экрана больше или равна 768px. В этом случае для элемента box задается цвет фона #0f0.

  1. Отсутствие оптимизации производительности CSS

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

Неправильный

.box {   background-color: #ccc;   border: 1px solid #999;   padding: 10px; }

Правильный

/* Пример оптимизации производительности CSS */ .box {   background-color: #ccc;   border: 1px solid #999;   padding: 10px;   transition: background-color 0.3s ease-in-out; }  .box:hover {   background-color: #999; }

В данном примере CSS-правила написаны эффективно с использованием класса container для задания максимальной ширины и поля и класса box для задания границы и подложки. Селектор-потомок используется для применения свойства margin-bottom ко всем абзацам внутри элемента box.

  1. Неправильное использование модели box

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

Неправильный

.box {   width: 300px;   height: 300px;   padding: 20px;   border: 1px solid #999;   margin: 10px; }

Правильный

/* Пример правильного использования коробочной модели */ .box {   width: calc(300px - 2 * 20px - 2 * 1px - 2 * 10px);   height: calc(300px - 2 * 20px - 2 * 1px - 2 * 10px);   padding: 20px;   border: 1px solid #999;   margin: 10px; }

В этом примере элементу box задана ширина 300px. Для padding, border и margin также установлены значения 10px, 1px solid #ccc и 20px соответственно. Это гарантирует, что общая ширина элемента box будет правильно рассчитана на основе его содержимого, padding, border и margin.

Заключение

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


ссылка на оригинал статьи https://habr.com/ru/articles/747734/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *