Ошибки при верстке сайта

Ошибки верстки

Рассмотрим ошибки в верстке сайтов, которые часто допускаются начинающими и опытными верстальщиками.

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

Семантика.

В HTML есть семантические теги, как: header, article, nav, footer, aside, main, data и другие.

Часто при верстке, в место них используют теги div и span. Крайне желательно использовать семантические теги, где это необходимо.

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

<!-- Без использования семантических HTML-тегов -->
<div class="header">
<a class="logo" href="#">LOGOTIP</a>
</div>

<div class="nav">
<a href="#">home</a>
<a href="#">about</a>
<a href="#">contacts</a>
</div>

<div class="sidebar">
<p>left block</p>
</div>

<div class="container">
<h1>Name Article</h1>

<p>Text Article</p>
<p class="data-publication">15 сентября 2002 года</p>
</div>

<div class="footer">
<p>Copy 2022</p>
</div>

<!-- Правильное использование семантических тегов -->
<header>
<a class="logo" href="#">LOGOTIP</a>
</header>

<nav>
<a href="#">home</a>
<a href="#">about</a>
<a href="#">contacts</a>
</nav>

<aside>
<p>left block</p>
</aside>

<article>
<h1>Name Article</h1>

<p>Text Article</p>
<time datetime="2002-09-15">15 сентября 2002 года</time>
</article>

<footer>
<p>Copy 2022</p>
</footer>

Свойства padding/margin.

Начинающие часто путают эти свойства и используют margin там, где нужен padding и наоборот.

Запомните:

  • Padding – внутренний отступ
  • margin – внешний

На примере, для отделения заголовка от текста с картинкой, необходимо использовать margin. И отделять разные по подержанию блоки свойством margin.

Фиксированная высота блоков.

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

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

Это значит не фиксировать высоту.

Ошибки в верстке: фиксированная высота блоков

Межстрочный отступ.

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

Если межстрочный отступ не задан свойством line-height, такой текст с пустым пространством смотрится некрасиво.

Если заголовок на дизайне занимает одну строку – это не заметно, поэтому прописуйте line-height, для текста с большим размером шрифта.

Ошибки верстки: межстрочный отступ

Краткое описание в блоке.

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

На практике это выглядит просто и кода меньше, и читается легче:

<!--НЕПРАВИЛЬНО -->
<p class="dedc">Первый абзац краткого описания</p>
<p class="dedc">Второй абзац краткого описания</p>

<!--ПРАВИЛЬНО -->
<div class="desc">
<p>Первый абзац краткого описания</p>
<p>Второй абзац краткого описания</p>
</div>

Адаптация изображений.

Не редко забывают адаптировать изображения, для блоков.

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

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

Ошибки верстки: неадаптивные изображения в блоках

Избежать эту ошибку можно прописав следующие стили:

.image{
display:block; /*Делаем картинку блочным элементом */
max-width:100%; /*Ширина картинки 100% */
height:auto; /*Высота картинки автоматическая */
}

После этого вставка изображений, с шириной больше блока не страшна.

Большие изображения.

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

Это приводит к замедлению скорости загрузки сайта с излишним расходом интернет-трафика посетителей.

Поэтому, например, для блока шириной в 900 пкс. вставляйте изображение такой ширины.

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

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

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

<!--Неправильно -->
<img src="/img/image_1300.jpg" alt="" />

<!--Правильно -->
<picture>
<source media="(max-width:400px)" srcset="/img/image_400.jpg" />
<source media="(max-width:700px)" srcset="/img/image_700.jpg" />
<img src="/img/image_1300.jpg" alt="" />
</picture>

Теперь картинка будет загружаться, для экрана с шириной 700 пкс. и 400 пкс.

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

Оптимизация изображений

Конвертируйте все изображения в формат WebP. Это позволит существенно уменьшить размер и ускорить загрузку сайта в целом.

Для такой цели используйте сервис от Google https://squoosh.app/.

Выставляйте качество не менее 75 из 100.

Оптимизация изображений для улучшение скорости загрузки сайта

Заголовки и картинки, которые являются ссылками

Зачастую на макете дизайна не видно элемент, как ссылку. Верстальщик просто верстает заголовок, который на самом деле должен вести на полную версию статьи.

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

Использование cursor:pointer

Не забывайте прописывать к элементам cursor:pointer, для кнопок, блоков видео, заголовков-ссылок и других элементов, по которым у посетителя есть возможность кликнуть.

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

Размер шрифта в элементах формы.

Заданный цвет, размер и семейство шрифта в теге body, не распространяется на текстовые поля формы input и textarea.

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

Размер поля textarea

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

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

textarea{
resize:vertical; /*Изменение поля только по вертикали*/
min-height:150px; /*Минимальная высота 150 пкс, при изменении*/
max-height:500px; /*Максимальная высота 500 пкс, при изменении*/
}

После чело, регулировка размера textarea не будет такой болезненной.

Курсор в текстовом поле — :focus

Задав outline:none, для полей формы отменяет возможность подсветки активного поля. Поэтому стилизуйте состояние фокуса.

На примере изменим фон и цвет рамки активного поля и кнопки, при переходе клавишей «Tab».

input:focus{
background-color:#eee; /*Фоновый цвет*/
border-color:#6b7de3; /*Цвет рамки при фокусе*/
}

Количество блоков

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

Если в дизайне преимуществ 3 и блок сверстан с помощью свойств flexbox, разрешите перенос блоков и задайте нижний отступ.

.container{
flex-wrap:wrap;
}

.container div{
margin-bottom:30px;
}

Декоративные элементы.

На примере видим, что заголовок имеет красную линию, для разделения, которая довольно часто верстается с помощью пустых тегов div, или p.

Такие решение увеличивает код на странице.

Лучшим решением будет прописать псевдо-элементы «before», или «after» к заголовку.

Много подключаемых шрифтов.

Типичная ошибка новиков – подключение более 2-х сторонних шрифтов на сайте. Такие шрифты требуют много ресурсов и замедляют загрузку сайта.

  1. Подключайте максимум 2 сторонних шрифта.
  2. Используйте формат woff и woff2.
  3. Используйте сторонний шрифт размером не более 200 КБ.

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

@font-face{
font-family:Gilroy_ExtraBold;
src:local('Arial,Helvetica,sans-serif'), url(../font/Gilroy_ExtraBold.woff);
font-display:swap;
}

Указывайте при подключении стороннего шрифта font-display:swap; для отображения заданных Вами системных шрифтов, когда сторонний шрифт еще загружается, или не загрузился. На это акцентирует внимание «PageSpeed».

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

Правила CSS в атрибутах и тегах «style»

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

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

Ошибки верстка: CSS-код в атрибутах и тегах style

Обязательные атрибуты

Часто при верстке не указываются обязательные атрибуты. К тому же тегу <img> атрибут alt. Его наличие обязательно, если даже он пустой.

Не забывайте о обязательном наличии заголовка h1 в теге article.

Прозрачность фона

При надобности прозрачности фона блока используйте rgba-формат.

Не делайте прозрачность с помощью opacity, поскольку такой способ сделает прозрачным не только фон блока, но и все дочерние элементы в нем.

Центрирование с помощью padding

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

Отсутствие групировки CSS-свойств

Обязательно групируйте CSS-свойства. Код будет намного читаемый и работать с ним станет легче.

Вот так нужно:

/*Без групировки*/
.title{font-size:17px;margin:8px 0;text-align:center;padding:5px;color:#333;}

/*С групировкой*/
.title{color:#333;font-size:17px;text-align:center;padding:5px;margin:8px 0;}

Свойства, отвечающие за стиль текста, затем свойства отступа.

Ошибки в HTML и CSS

Обязательно проверяйте верстку на соответствие стандартам Консорциума Всемирной паутины.

  • Анализ HTML-кода
  • Анализ CSS-кода

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

Плохой показатель в PageSpeed

Сервис PageSpeed разработан Google, для проверки качества сайта и работает на движке Languages.

Для анализа откройте Google «PageSpeed» и вставьте URL-адрес проверяемого сайта. После анализа сервис покажет оценку качества и даст рекомендации, придерживаясь которых Вы гарантированно улучшите качество и ускорите свой сайт.

Помните, наличие максимальной оценки качества в 100 баллов важно для SEO-продвижения. Скорость сайта – подтвержденный фактор определения позиций.

Стремитесь к самой высокой оценки. Это прямой сигнал качественной верстки.

Высокий показатель в PageSpeed как показатель качественной верстки

Итоги.

Нюансов в верстке довольно много. Старайтесь устранять их еще в процессе.

Помните: все начинающие допускают ошибки в верстке и это нормально. Практика и опыт — великое дело. Прилагайте усилия и все получится.

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

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

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘Helvetica Neue’; color: #454545}

Программа обучения: «HTML-верстка: с нуля до первого макета»

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

1. Неправильные имена классов

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

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

Правильно:

.shopping-cart-block

.social-icon

Неправильно:

.korzina-block

.социальные-кнопки

.-3-block

.2-review

.shp-crt

2. Использование идентификатора #id для описания стилей блока

Стиль блока можно задать с помощью класса .class-name или идентификатора #id. Атрибут класса позволяет выбрать группу элементов, а #id — один элемент. Если на странице сайта будет задан один и тот же #id для нескольких элементов, то браузер проигнорирует оформление элемента или вообще не откроет CSS-файл.

Идентификатор #id также используется, чтобы передавать информацию в JavaScript. Поэтому можно запутаться среди разных #id, потому что некоторые используются для скриптов, а другие — для оформления.

Как избежать: использовать имена классов .class-name для описания стилей блока, а #id оставить для JavaScript.

3. Описание стилей для элементов внутри атрибута style

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

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

Как избежать: задавать стили для каждого элемента в СSS-файле.

4. Использование тега абзаца <p> для разметки

Браузер по умолчанию добавляет к <p> некоторые внешние отступы, чтобы параграф текста выглядел отдельным блоком. Чтобы облегчить работу и не добавлять отступы к изображению с помощью стилей, некоторые верстальщики оборачивают его тегом <p>…</p>.

Как избежать: для разметки страницы использовать специальные теги <div> и <span>, прописать нужные стили для этих тегов.

5. Много изображений в высоком разрешении на странице

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

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

6. Не сброшены изначальные настройки

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

Как избежать: сбросить отступы для всех элементов можно с помощью СSS-кода:

*{

margin:0;

padding:0;

}

Либо подключить специальный CSS-файл, внутри которого отступы уже изменены. Например, Normalize.css или CSSreset.css.

7. Использование блочного элемента внутри строчного

В HTML существует два типа элементов: блоки и строки.

С помощью блоковых элементов выстраивается структура страницы. Это <div>, <ul>, <h1>, <h3> и другие элементы. Их свойство по умолчанию — display:block.

Строчные элементы, к которым относятся <span>, <li>, <a>, <label>, используются внутри блоковых. По умолчанию их свойство задается как display:inline.

Неправильно:

<span>

<h1> Заголовок </h1>

<ul>

<li> Пункт 1</li>

<li> Пункт 2</li>

</ul>

</span>

Правильно:

<div>

<h1> Заголовок </h1>

<ul>

<li> Пункт 1</li>

<li> Пункт 2</li>

</ul>

</div>

Если все же нужно использовать блок внутри строчного элемента, то можно поменять свойство у строчного на display:block

8. Отступы между элементами сделаны с помощью тега переноса строки <br/>

Часто с помощью одного или нескольких тегов <br/> создают отступы между элементами, картинками, словами. Этого делать не стоит, потому что тег <br/> должен использоваться внутри тега с текстом <p>…</p>.

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

9. Страница не проверялась валидатором

На сайте w3.org есть специальный валидатор html-файлов. Он проверяет код страницы и выдает незамеченные ошибки: незакрытый тег, пропущенную строку или свойство. Чем меньше ошибок нашел валидатор, тем лучше отобразится страница в браузере и быстрее будет работать сайт.

Чтобы сообщить браузеру, какая версия HTML-разметки используется на странице, нужно использовать тег DOCTYPE.

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

Как избежать: всегда вставлять тег в первую строку страницы. Например, если вы верстаете на HTML пятой версии, объявить тип документа можно так: < !DOCTYPE html >

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ‘Helvetica Neue’; color: #454545}

Читать ещё: «Подборка англоязычных ресурсов для начинающих верстальщиков»

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

Итак, ошибки, которые нужно избегать:

  • Неправильные имена классов;
  • Использование идентификатора #id для описания стилей блока;
  • Описание стилей для элементов внутри атрибута style;
  • Использование тега абзаца <p> для разметки;
  • Много изображений в высоком разрешении на странице;
  • Не сброшены начальные настройки;
  • Использование блочного элемента внутри строчного;
  • Отступы между элементами сделаны с помощью тега переноса строки <br/>;
  • Страница не проверялась валидатором;
  • Не указан тип страницы.

Мнение автора и редакции может не совпадать. Хотите написать колонку для «Нетологии»? Читайте наши условия публикации.

Телеграм Нетологии

Время на прочтение
4 мин

Количество просмотров 43K

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

1. W3C Validator

Рекомендуется проверять HTML и CSS сайта через сервис validator.w3.org. Данный сервис просканирует код и отобразит ошибки, например:

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

2. Вёрстка в формате UTF-8

При вёрстке страницы, надо убедиться, что кодировка файла установлена в UTF-8 (без BOM). Каждый текстовый редактор устанавливает кодировку по-своему.

Файл в формате UTF-8 позволяет использовать нестандартные символы (например, символы различных языков, знак валюты и другие).

Также надо сообщить браузерам, что страница открывается в кодировке UTF-8. Это делается через тег ниже:

<meta charset="utf-8">

3. Одинаковые id у нескольких элементов

Значение атрибута id в HTML-коде не должно повторяться.

<!-- не правильно -->
<div id="block"></div>
<div id="block"></div>

<!-- правильно -->
<div id="block-1"></div>
<div id="block-2"></div>

4. Спрайты

Несколько маленьких картинок рекомендуется соединять в один файл (такой файл называется спрайт). Это уменьшит количество запросов на сайт и улучшит скорость загрузки страницы.

Пример спрайта

image

Пример на JSFiddle

Сейчас также популярно вместо спрайтов использовать шрифты с иконками. Т.е. вместо букв выводятся иконки шестерёнки, смайлика и других иконок. В качестве примера можно привести иконки glyphicons, которые используются в Twitter Bootstrap.

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

5. Много селекторов

Не рекомендуется использовать больше трёх селекторов, т.к. это влияет на производительность сайта.

/* не рекомендуется, большая вложенность */
.page .item .title a {}

/* можно сократить */
.page .item a {}

Браузеры читают CSS справа налево. Т.е. в коде выше, сначала будут выбраны все ссылки, что есть на странице, а потом будут выбраны те ссылки, которые находятся внутри элемента .item.

Если есть возможность, то выборку рекомендуется сокращать до одного селектора:

/* рекомендуется */
.form-submit a {}

/* предпочтительнее примера выше, если есть возможность */
.form-submit-link {}

6. Стили в HTML

HTML предназначен для вывода информации (текст, картинки). Оформления контента (изменить размер, цвет, шрифт) происходит в CSS.

<!-- не правильно -->
<p style="color: red">Ошибка в коде</p>

<!-- правильно -->
<p class="error">Ошибка в коде</p>

7. Неправильное названия классов

Многие верстальщики, когда надо сделать текст зелёным цветом, прикрепляют к нему класс .green.

<p class="message green">Текст сообщения</p>

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

Чтобы избегать подобных ситуаций, не рекомендуется применять классы для смены цвета, выравнивания текста, изменения регистра. Надо называть сами элементы (шапка, подвал, сообщение), и применять к нему свои стили.

<!-- неправильно -->
<p class="message green">Текст сообщения</p>

<!-- правильно -->
<p class="message message-success">Текст сообщения</p>

8. Пиксели в дробных значениях

Некоторые браузеры позволяют указывать пиксели в дробных значениях, например «1.5px». Но это неправильно, т.к. пиксель это неделимая единица. Вместо «1.5px» лучше использовать «1.5em».

p {
    /* не правильно */
    letter-spacing: 1.5px;

    /* правильно */
    letter-spacing: .005em;
}

9. Использование классов вместо id

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

#modal a {
    color: blue;
}

/* цвет ниже не получится переопределить,
   т.к. #modal имеет больший вес, чем у классов */
.modal-header a {
    color: #333;
}

/* в этом случае придётся добавить #modal */
#modal .modal-header a {
    color: #333;
}

Также не рекомендуется использовать !important, т.к. его вес выше, чем у атрибута id, и его также будет сложно переопределить.

10. Меню

Меню должно быть оформлено как список.

<!-- неправильно -->
<p><a href="#">Главная</a> <a href="#">Новости</a> <a href="#">О компании</a></p>

<!-- правильно -->
<ul>
    <li><a href="#">Главная</a></li>
    <li><a href="#">Новости</a></li>
    <li><a href="#">О компании</a></li>
</ul>

11. Пропущенный alt у картинок

В тегах надо указывать атрибут alt (можно пустой).

<!-- неправильно -->
<img src="pic.jpg">

<!-- правильно -->
<img src="pic.jpg" alt="Картинка">
<img src="pic.jpg" alt="">

12. Теги <h1>

На странице должен быть только один заголовок в теге <h1>. В основном, в этом теге находится название страницы.

13. Транскрипция

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

/* неправильно */
.tovar {}
.stranica {}
.zapros {}

/* правильно */
.product {}
.page {}
.query {}

14. Clearfix

Про clearfix сложно написать в двух словах, но укажу момент, которые многие верстальщики, по моему мнению, делают ошибку.

Класс .clearfix надо указывать в родительском теге, а не ставить рядом.

<!-- неправильно -->
<div>
    <div class="float-left"></div>
    <div class="float-right"></div>
    <div class="clearfix"></div>
</div>

<!-- правильно -->
<div class="clearfix">
    <div class="float-left"></div>
    <div class="float-right"></div>
</div>

15. HTML — язык программирования

Некоторые новички в HTML думают, что HTML это язык программирования. На самом деле HTML не является языком программирования, его можно сравнить с Microsoft Word. Например, чтобы текст сделать жирным, в Word надо нажать на кнопку, а в HTML надо прописать код. Т.е. HTML это просто инструмент, который добавляет текст, картинки, таблицы и другие элементы.

Банальные ошибки верстки сайтов

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

Топ случайных ошибок версти

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

1. Опечатки в коде

Ошибка, от которой никто не застрахован. Так уж устроена вся система верстки сайтов, что пропуск точки с запятой, кавычек, или слеша приводит к полному краху сайта. Особенно, если ошибка будет допущена в одном из шаблонов для CMS.

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

2. Ошибки в именах файлов

Эта проблема характерна для подключения фоновых и обычных изображений, а также для указания ссылок. Важно помнить, что браузеры не любят и воспринимают некорректно:
• кириллицу;
• пробелы;
• знаки пунктуации или специальные символы.
Чтобы вы не оказались в той ситуации, в которой я был, перед тем как заняться этой статьей, советую всегда придерживаться следующих принципов. Все имена файлов прописывать только латинскими буквами, можно использовать транслит. Если в названии файла два или больше слов, то разбивайте их не пробелами, а дефисами или подчеркиваниями. Кстати поисковики тоже любят именно такой формат. Ну а чтобы угодить еще и поисковому роботу, то название файла должно соответствовать его сути, а не представлять собой абракадабру из букв и цифр. При добавлении имени файла в код, задайте его переименование, скопируйте точное название, и затем вставьте в нужное место. Такая примитивная хитрость может существенно упростить вам жизнь.

3. Лишние div

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

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

4. Нарушение принципа блочной верстки

Появление блочной или как еще принято говорить div-ной верстки, существенно облегчило всем жизнь и расширило возможности, в сравнение с предыдущими таблицами. Главный ее принцип в том, что в больший контейнер укладывается меньший, такая себе матрешка. Но на практике в одном блоке может находиться несколько вложенных блочных или линейных контейнеров, из-за чего может возникнуть путаница. Классическая формула «abba», на практике часто превращается в «abbbba» и более сложные формы типа «abccbbccbppa». Чем сложнее данная структура, тем больше вероятность нарушить принцип вложенности и как результат поедет вся архитектура.

Хорошо, что есть современные средства разработки и не нужно больше писать код в блокноте, в них в виде подсказок отображены блоки, и проследить структуру можно. Также если вы ведете разработку непосредственно в интернет на тестовом домене, то на такую ошибку очень быстро укажет валидатор, с точностью до номера строки кода в которой ошибка. А если работаете на виртуальной машине, то просто скопируйте код и вставьте в тот же валидатор, так тоже можно.

5. Единицы измерения

В большинстве случаев, задавая размеры блоков или шрифтов в css файле, мы используем пиксели (px), просто это наиболее удобная единица измерения. Но браузер знает и другие единицы, такие как %, em и ex и как браузер интерпретирует это числовое значение без точно проставленной размерности неизвестно. Такая ошибка опасна еще и тем, что один браузер поймет вас правильно, и при проверке проект будет выглядеть как надо, а вот программа заказчика сделает все по-своему, и у него сайт поплывет. А ведь лишних проблем можно было избежать, просто поставив нужную размерность.

6. Ошибки классов и идентификаторов

Очень простая, но не всегда легко находимая ошибка, т.к. надо поднимать файлы html и сравнивать их с css. Мы знаем, что для блоков с общими свойствами задаются классы (class), а для уникальных контейнеров присваивается уникальный идентификатор (id). Все очень просто, но в html эти блоки мы помечаем соответствующими словами class/id, а в css используем обозначение для класса «.» и «#» для id. Все тоже максимально просто, вот только перепутать два знака не составляет труда. Если будет нестыковка между файлами html и css, то браузер просто не поймет что нужно делать и мы не получим ожидаемого результата.

Совет вместо выводов

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

Верстка – процесс весьма кропотливый. Пусть HTML/CSS и не являются языками программирования, освоить CSS – в разы сложнее, чем освоить тот же Python. Причина – в том, что если Питон развивался логично и постепенно, то CSS развивался в условиях непримиримой войны между браузерами, каждый из которых пытался пропихнуть свои стандарты. Добавьте сюда кодировки, изменения HTML от W3C и позднее «накручивание» DOM для высокоуровневых языков – получите ад, бардак и хаос. Из него растут типичные ошибки начинающего верстальщика, не успевшего в этом хаосе сориентироваться – неправильное использование id, использование style, попытка решения проблем через !important, invisible text для отступов и так далее.

1. Неправильные имена классов

2. Описание стилей внутри < style >

3. Символы, не предназначенные для верстки

4. Использование ID для идентификации

5. Очень большие картинки

6. Использование HTML для верстки в целом

7. Неправильное использование заголовков

8. Использование !important

9. Не прописаны альты в < img >

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

1. Неправильные имена классов

Правильная верстка в CSS организуется через классы – вы указываете классы для элементов, и когда вы меняете что-то в классе, изменения применяются ко всем элементам этого класса. Идея пришла из объектно-ориентированного подхода к программированию, и самое прекрасное, что классы дают – это принцип DRY, Don’t Repeat Yourself, «Не повторяй себя». Если у вас на сайте 50 одинаковых кнопок, без классов вам пришлось бы менять цвет кнопки 50 раз, когда заказчик захочет кислотно-зеленую кнопку «КУПИТЬ» вместо красной. С классами вам нужно поменять всего одно значение.

С классами связано множество ошибок начинающих верстальщиков, но самая распространенная – это бессмысленные (и беспощадные) имена классов: .knopka, .vtoraya-knopka-sleva, .vyrovnyat, .ne-trogat – вы и сами можете придумать/найти множество таких примеров. Конкретно эти плохи по двум причинам:

  1. Ничего не понятно (но очень интересно).
  2. Транслит.

Транслит – это всегда плохо, потому что он вырвиглазный и его невозможно читать. Но если мы подберем адекватные имена на английском (.button, .second-button-on-the-left, .align, .do-not-touch), то хорошо все еще не станет, потому что назначение классов не прояснилось. В основном эта проблема бьет по программистам, которые затем будут писать js-код, но если вы расплодите кучу бессмысленных названий, то вам потом самим будет сложно понять, что вам нужно подправить: .button3, .button12 или .button-on-top-final-red-v2.

Давайте понятные имена: .shopping-cart-buy-button, .header-logo, .search-page-backgr. И по возможности группируйте классы в .css-файле, чтобы их было проще искать.

2. Описание стилей внутри < style >

Забудьте про прописывание стиля в этом тэге. Функция была добавлена еще до появления CSS и оставлена в HTML для обратной совместимости – чтобы очень старые сайты не сломались. Описывать разметку в < style > нельзя, потому что ломаются приоритеты и при отладке сложно найти ошибку – особенно если искать ее будете не вы. Вся верстка должна быть исключительно в .css-файле – этот принцип в программировании называется инкапсуляцией, и за его применение другие верстальщики (которые будут разбираться с вашей разметкой) скажут вам огромное спасибо.

3. Символы, не предназначенные для верстки

Unicode/UTF обладает множеством интересных символов для отображения, сюда входят пиктограммы, смайлики и invisible text. Будьте с ними очень аккуратны – разные шрифты могут по-разному «относиться» к отображению этих символов, некоторые браузеры тоже воспринимают их некорректно. Если прямо совсем хочется их использовать – хотя бы сбросьте стандартную верстку браузера через * {} и протестируйте верстку на нескольких устройствах.

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

4. Использование ID для идентификации

Использование ID для «точечного» задания стиля – это удобно, но делать так тоже не стоит. JS активно взаимодействует с ID и может менять идентификаторы элементов для своих внутренних целей. Если js-код поменяет ID, которому вы прописали стиль – верстка слетит. Лучше напишите пару лишних строчек кода для класса.

5. Очень большие картинки

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

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

6. Использование HTML для верстки в целом

Самая частая проблема – использование /br для верстки, сюда же относится прописывание стиля в < class > и < p > для создания отступов или пустого пространства. HTML – язык разметки, он показывает браузеру, где и какие элементы должны находиться. Как эти элементы выглядят и как делят между собой пространство – вопрос к языку стилей CSS. Вот им вы и должны пользоваться для решения этих проблем. А если у вас половина разметки будет в CSS, а половина в HTML, то при достижении определенного порога сложности проекта вы вдруг обнаружите, что при любом внесенном изменении все ломается.

7. Неправильное использование заголовков

Заголовки показывают и браузеру, и поисковым роботам, где находится основной контент. H1 должен быть в единичном экземпляре, h2 должны быть вложены в h1, h3 должны быть вложены в h2 и так далее.

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

8. Использование !important

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

Еще один важный момент – если вам нужно использовать более одного !important в разметке, это почти всегда означает, что вы плохо эту самую разметку продумали. Сядьте и задайте себе вопрос: «Почему мне приходится использовать !important здесь?» Ответом на вопрос почти всегда будет плохо продуманная система классов, то есть плохая архитектура. С самых первых шагов в верстке приучайте себя продумывать архитектуру классов и селекторов – это сэкономит вам кучу времени в дальнейшем.

9. Не прописаны альты в < img >

Вам alt в <img> может быть и не нужен, но он очень нужен SEO-специалистам и js-программистам.

Пропишите хотя бы пустой alt.

10. Злоупотребление div

Если вам нужно создать контейнер – используйте div, который для этого и предназначен. Если вам нужно вывести текст – используйте span, который для этого предназначен. Не нужно мудрить и использовать div для текста и span для блоков – когда верстка станет более сложной, будет больше шансов, что что-то сломается. Если вам прямо очень сильно нужно использовать span для блока – пропишите для него display:block.

Правильное ревью верстки

Провести самостоятельное ревью верстки довольно сложно – глаз «замыливается», и вы можете пропустить очевидную ошибку. Есть один инструмент, который может вам помочь – валидатор от W3-консорциума, расположен тут: https://validator.w3.org/. Он показывает основные ошибки в HTML, хотя для CSS code-review подходит так себе. Лучший способ сделать ревью – найти другого верстальщика и отдать страницу на ревью ему.

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

FAQ

  • Что такое DOM? Document Object Model – это модель, описывающая взаимодействие элементов на странице. На основе всех элементов строится дерево, с помощью которого js-программист может быстро получить доступ к нужному элементу. DOM строится на ID, классах и тэгах, и чем более логично они будут прописаны на странице, тем проще будет писать код для скриптов.
  • Можно ли взломать сайт через ошибки в HTML/CSS? Как ни странно, можно – через cross-site scripting. О том, как от этого защититься, можно почитать здесь: https://www.w3.org/TR/CSP2/. 

Подведем итоги

Тезисно:

  • выбирайте содержательные имена классов;
  • не описывайте стили внутри < style >;
  • с осторожностью используйте invisible text и другие редкие символы Unicode;
  • старайтесь избегать использования id для идентификации;
  • сжимайте картинки;
  • не используйте HTML для верстки;
  • расставляйте заголовки логично, более низкие вложены в более высокие;
  • избегайте !important, продумывайте структуру верстки заранее;
  • прописывайте альты в < img >, даже пустые;
  • используйте < div > для блоков и < span > для текста.

Понравилась статья? Поделить с друзьями:
  • Ошибки при ведении инстаграма
  • Ошибки при верстке книги
  • Ошибки при ведении трудовых книжек
  • Ошибки при ведении телефонных переговоров
  • Ошибки при ведении медицинской документации