Учебник по HTML и CSS

HTML

CSS

Статьи

Полезное


Полезное

Цвет
Текст
Ссылки
Списки
Изображения
Сайт
Поля и отступы
Слои
Формы
Таблицы

Полезные советы по CSS и HTML

Почему различается явно заданная ширина слоя в разных браузерах?

По спецификации CSS общая ширина слоя складывается из следующих значений: ширина контента (параметр width), толщина границ слева и справа (border), поля (padding) и отступы (margin). Для наглядности рассмотрим следующий код (пример 1).

Пример 1. Слой с заданной шириной

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Ширина слоя</title>
<style type="text/css">
#layer {
width: 400px; /* Ширина слоя в пикселах */
background: #fc0; /* Цвет фона */
margin: 20px; /* Отступы вокруг слоя */
padding: 10px; /* Значения полей */
border: 2px solid #333; /* Параметры рамки */
}
</style>
</head>
<body>
<div id="layer">
Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diem nonummy nibh euismod tincidunt ut lacreet dolore magna aliguam erat volutpat.
</div>
</body>
</html>

В данном случае суммарная ширина слоя в пикселах равна

400 + 20 + 20 + 10 + 10 + 2 + 2 = 464

Удвоенные числа получились из-за того, что параметры margin, padding и border действуют для всех сторон элемента одновременно. Поэтому по горизонтали отступы, поля и границы добавляются сразу слева и справа.

Однако в некоторых браузерах, в частности, Internet Explorer и Opera, за общую ширину слоя берется значение параметра width. Различие подходов приводит к неодинаковому отображению одного и того же документа в разных браузерах. Впрочем, подобное различие проявляется только в том случае, если не указан <!DOCTYPE>. Так что код, приведенный в примере 1, работает корректно во всех браузерах.

Вывод следующий — всегда задавайте полный <!DOCTYPE> и учитывайте, что ширина слоя это не просто параметр width, а сумма значений ширины контента, отступов, полей и границ.





На главную









  • При использовании материалов сайта ссылка на comnew.ru обязательна!