Блог / Статьи

Полезная информация для вашего хостинга

Как исправить распространенные ошибок CSS

Как исправить распространенные ошибки CSS, которые часто допускают разработчики

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

Кодирование CSS


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

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

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


Разные браузеры имеют разные стандартные стили для элементов. Например, стандартные отступы и заполнения для элемента <body> могут отличаться в Chrome и Firefox. Это может привести к несогласованности в том, как ваш веб-сайт выглядит в разных браузерах.

Пример:
Предположим, у вас есть простой HTML-файл:

<!DOCTYPE html>
<html>
<head>
<title>Тестовая страница</title>
</head>
<body>
<h1>Привет, мир!</h1>
</body>

И у вас есть некоторый CSS:

body {
margin: 0;
padding: 0;
}

h1 {
margin: 0;
padding: 0;
}


Даже с этим CSS <h1> все равно может иметь некоторый отступ в некоторых браузерах, потому что у них есть стандартный стиль для <h1>, который включает в себя отступ.

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

```css
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
```

Этот CSS сбрасывает отступы и заполнения всех элементов на 0 и устанавливает их box-sizing в border-box. Это может помочь устранить несоответствия между браузерами.

Однако это очень простой сброс и может не охватить все элементы и стили. Есть более полные файлы сброса CSS, такие как сброс Мейера, которые вы можете найти в Интернете и использовать в своих проектах.

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

2. Не использование сокращенных свойств


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

Пример:

Предположим, у вас есть следующий CSS:

```css
.box {
margin-top: 10px;
margin-right: 20px;
margin-bottom: 10px;
margin-left: 20px;
}
```

Этот CSS применяет отступы ко всем четырем сторонам элементов с классом "box". Но это довольно длинно.

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

```css
.box {
margin: 10px 20px;
}
```

Это делает то же самое, что и предыдущий CSS. Первое значение - верхний и нижний отступ, а второе значение - правый и левый отступ.

Вот еще один пример с свойством background. Вместо этого:

```css
.box {
background-color: #000;
background-image: url('image.jpg');
background-repeat: no-repeat;
background-position: center;
}
```

Вы можете написать это:

```css
.box {
background: #000 url('image.jpg') no-repeat center;
}
```

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

Однако стоит помнить, что при использовании сокращенного свойства любые неопределенные подсвойства устанавливаются в свои начальные значения. Например, если вы используете сокращенное свойство background и не указываете размер фона, размер фона устанавливается в его стандартное значение "auto".

oshibki1

3. Использование встроенных стилей


Встроенные стили - это объявления CSS, которые применяются непосредственно в ваших HTML-элементах. Хотя они могут показаться удобными для быстрой стилизации, они могут привести к нескольким проблемам:

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

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

Невозможность повторного использования: встроенные стили не подлежат повторному использованию. Если вы хотите применить те же стили к нескольким элементам, вам придется повторять встроенные стили для каждого элемента.

Пример:
Вот пример встроенного стиля:

```html
<h1 style="color: blue; font-size: 2em;">Привет, мир!</h1>
```

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

```html
<head>
<style>
.blue-heading {
color: blue;
font-size: 2em;
}
</style>
</head>
<body>
<h1 class="blue-heading">Привет, мир!</h1>
</body>
```

И вот как это можно сделать с внешним CSS. Сначала создайте файл CSS (давайте назовем его "styles.css"):

```css
.blue-heading {
color: blue;
font-size: 2em;
}
```

Затем свяжите его со своим HTML-файлом:

```html
<head>
<link rel="stylesheet" href="/styles.css">
</head>
<body>
<h1 class="blue-heading">Привет, мир!</h1>
</body>
```

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

4. Неиспользование вендорных префиксов


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

Пример:
Предположим, вы хотите использовать свойство box-shadow, которое является относительно новым дополнением к CSS:

```css
.box {
box-shadow: 10px 10px 5px #888888;
}
```

Этот CSS будет работать в большинстве современных браузеров, но более старые версии некоторых браузеров могут не распознавать свойство box-shadow.

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

```css
.box {
-webkit-box-shadow: 10px 10px 5px #888888; /* Safari и Chrome */
-moz-box-shadow: 10px 10px 5px #888888; /* Firefox */
box-shadow: 10px 10px 5px #888888; /* без префиксов, работает в большинстве современных браузерах */
}
```

Этот CSS применит тень блока в Safari, Chrome, Firefox и большинстве других современных браузеров.

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

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

5. Использование слишком специфичных селекторов


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

Пример:
Предположим, у вас есть следующий CSS:

```css
body div#container ul.nav li a {
color: blue;
}
```

Этот селектор очень специфичен. Он выбирает элемент <a>, который является потомком элемента <li>, который является потомком <ul> с классом "nav", который является потомком <div> с ID "container", который является потомком <body>.

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

```css
.nav a {
color: blue;
}
```

Этот селектор делает то же самое, что и предыдущий, но намного проще. Он выбирает любой элемент <a>, который является потомком элемента с классом "nav".

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

Тем не менее, стоит помнить, что упрощение ваших селекторов также может увеличить вероятность конфликтов имен, когда два элемента имеют одно и то же имя класса, но должны иметь разные стили. Чтобы избежать этого, можно использовать методологии, такие как BEM (Блок, Элемент, Модификатор), для именования ваших классов таким образом, чтобы уменьшить вероятность конфликтов.

oshibki 2

6. Неорганизованный CSS


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

Пример:
Предположим, у вас есть файл CSS с сотнями строк кода, и стили все перемешаны:

```css
h1 {
color: blue;
}

.footer {
background: black;
}

h2 {
color: green;
}

.header {
background: white;
}
```

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

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

```css
/* Header */
.header {
background: white;
}

h1 {
color: blue;
}

h2 {
color: green;
}

/* Footer */
.footer {
background: black;
}
```

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

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

Помимо организации вашего CSS внутри каждого файла, также целесообразно организовать сами файлы CSS. Для больших проектов может быть полезно разбить ваш CSS на несколько файлов (например, один для типографии, один для макета, один для цветов и т. д.) и затем импортировать их все в основной файл таблицы стилей с помощью инструкций @import. Это может упростить управление и поддержку вашего CSS.

7. Не использование CSS-переменных


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

Пример:
Предположим, у вас есть определенный оттенок синего, который вы часто используете в своем CSS:

```css
.header {
background-color: #007BFF;
}

.button {
background-color: #007BFF;
}

.link {
color: #007BFF;
}
```

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

Исправление:
Вы можете использовать CSS-переменную для хранения этого значения цвета:

```css
:root {
--main-color: #007BFF;
}

.header {
background-color: var(--main-color);
}

.button {
background-color: var(--main-color);
}

.link {
color: var(--main-color);
}
```

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

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

oshibki 3

8. Неучёт доступности


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

Пример:
Предположим, у вас есть веб-сайт с светло-серым текстом на белом фоне:

```css
body {
color: #999;
background-color: #fff;
}
```

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

Исправление:

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

```css
body {
color: #333;
background-color: #fff;
}
```

Это намного легче читать, даже для людей с нарушениями зрения.

Помимо контраста цветов, существует много других аспектов доступности, которые следует учитывать в вашем CSS. Вот несколько примеров:

Используйте относительные единицы, такие как em и rem, для размеров шрифта, чтобы пользователи могли изменить размер текста при необходимости.
Избегайте использования CSS для скрытия содержимого, которое должно быть доступно для экранных дикторов. Например, используйте visibility: hidden или opacity: 0 вместо display: none.
Используйте медиа-запросы для создания адаптивного дизайна, чтобы он был пригоден для использования на всех размерах экрана.
Используйте роли и свойства ARIA при необходимости, чтобы предоставить дополнительную информацию технологиям вспомогательного чтения.
Помните, что доступность - это не просто хорошее дополнение, это требование для хорошего веб-дизайна. Создание вашего веб-сайта доступным может улучшить его удобство использования для всех пользователей, а не только для тех, у кого есть ограничения.

9. Не проведение тестирования в нескольких браузерах


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

Пример:
Предположим, вы использовали сетку CSS в дизайне вашего веб-сайта:

```css
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
```

Хотя CSS Grid поддерживается во всех современных браузерах, он может не быть полностью поддерживаемым или вести себя по-разному в более старых версиях некоторых браузеров.

Исправление:
Чтобы убедиться, что ваш веб-сайт выглядит и работает правильно во всех основных браузерах, вы должны протестировать его в каждом из них. Это включает Chrome, Firefox, Safari и Edge. Также существуют инструменты, которые могут помочь вам с тестированием на разных браузерах, такие как BrowserStack и BitBar.

Если вы обнаружите, что определенная функция CSS не поддерживается или ведет себя по-другому в определенном браузере, вы можете использовать запросы функций (правило @supports) для предоставления резервного варианта:

```css
.container {
display: flex;
}

@supports (display: grid) {
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
}
}
```

В этом примере контейнер будет использовать макет flex по умолчанию. Если браузер поддерживает CSS Grid (как определено правилом @supports), он будет использовать сеточный макет.

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

10. Неиспользование адаптивного дизайна


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

Пример:
Предположим, у вас есть веб-сайт с фиксированной шириной:

```css
.container {
width: 1200px;
}
```

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

Исправление:
Чтобы сделать ваш веб-сайт адаптивным, вы можете использовать медиа-запросы для применения разных стилей для разных размеров экранов. Вот как вы можете сделать предыдущий пример адаптивным:

```css
.container {
width: 100%;
max-width: 1200px;
margin: 0 auto;
}
```

В этом примере контейнер будет занимать 100% ширины экрана на более маленьких экранах и будет центрирован с максимальной шириной 1200 пикселей на более крупных экранах.

Вы также можете использовать медиа-запросы для применения совершенно разных стилей для разных размеров экранов. Например:

```css
.container {
width: 100%;
}

@media (min-width: 768px) {
.container {
width: 750px;
margin: 0 auto;
}
}

@media (min-width: 1200px) {
.container {
width: 1170px;
margin: 0 auto;
}
}
```

В этом примере контейнер будет занимать всю ширину на экранах меньше 768 пикселей, 750 пикселей на экранах от 768 пикселей до 1199 пикселей и 1170 пикселей на экранах шириной 1200 пикселей или больше.

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

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