Ширина DIV'a должна включать в себя padding?

14 views
Skip to first unread message

Петров Николай

unread,
Dec 4, 2007, 5:06:36 AM12/4/07
to HTML...@googlegroups.com
Вопрос знатокам web-стандартов: если я указываю например ширину элемента в 200px, плюс ставлю padding:20px, то в соответствии со стандартами ширина этого элемента (от границы до границы) должна быть 200px или 240px?

Сейчас ИЕ показывает такой блок шириной в 200px, а область для текста в 160px, в то время как FF и опера считают шириной DIVa именно область, оставшуюся для текста.

Рис. 1. Поле слева от текста

Andrew Fatman

unread,
Dec 4, 2007, 5:15:56 AM12/4/07
to HTML...@googlegroups.com
По стандартам должна быть 240px.

У вас или IE версии меньше, чем 6, или указан некорректный DOCTYPE.

Александр

unread,
Dec 4, 2007, 5:16:23 AM12/4/07
to HTML...@googlegroups.com
Надо уравнять шансы * {padding:0;margin:0;}
Называеться обнуление или сбросом.

04.12.07, Петров Николай <petr...@gmail.com > написал(а):
Вопрос знатокам web-стандартов: если я указываю например ширину элемента в 200px, плюс ставлю padding:20px, то в соответствии со стандартами ширина этого элемента (от границы до границы) должна быть 200px или 240px?

Сейчас ИЕ показывает такой блок шириной в 200px, а область для текста в 160px, в то время как FF и опера считают шириной DIVa именно область, оставшуюся для текста.

Рис. 1. Поле слева от текста







--
----------------------------------------------
Со мной можно связаться:
email: ak...@phpcom.ru, beshk...@gmail.com
icq: 273433
jabber: beshk...@gmail.com

Andrew Fatman

unread,
Dec 4, 2007, 5:38:09 AM12/4/07
to HTML...@googlegroups.com
On 12/4/07, Александр <beshk...@gmail.com> wrote:
Надо уравнять шансы * {padding:0;margin:0;}
Называеться обнуление или сбросом.

И какое отношение это имеет к исходному сообщению?




 

Александр

unread,
Dec 4, 2007, 5:41:08 AM12/4/07
to HTML...@googlegroups.com
Что бы отступы одинаковы были.

Mironov Pavel

unread,
Dec 4, 2007, 5:51:44 AM12/4/07
to HTML...@googlegroups.com
Повторюсь: для кроссбраузерности, никогда, слышите, никогда не указывайте одному элементу высоту/ширину и соответствующий padding! Решается использованием внутреннего элемента (у предка ширина/высота, у элемента - padding, или наоборот)

IE не будет следовать стандартам, как бы нам этого не хотелось.

On 12/4/07, Петров Николай <petr...@gmail.com > wrote:
ICQ: 771655

Петров Николай

unread,
Dec 4, 2007, 5:51:48 AM12/4/07
to HTML...@googlegroups.com
Понятно. Оказывается последняя Опера (9.23) проходит тест ACID2 http://www.webstandards.org/files/acid2/test.html, хотя еще относительно недавно (неск. месяцев назад) я проверял, и Опера не проходила его.

Понятно теперь почему автор htmlbook.ru пользуется Оперой.

А если по теме - да, действительно. Приведенный мной в пример DIV в Опере и ФФ шириной равен 240px.
Как-то не хочется делать два дива - первым задавать жесткую ширину, а вторым (вложенным) задавать отступ от желаемой ширины (хотя я раньше так и делал).

Знал я летом CSS хак, который заставляет ИЕ схавать CSS правило, написанное специально для ИЕ, да забыл. Пока не нашел. Там перед правилом прописывается какой-то символ, не то _.div {width:200;}   не то  [.div {width:200;} ]    я не помню короче.

Насчет DOCTYPE мысль интересная... у меня его вообще нет. Щас попробую поставлю посмотрю что будет.

Andrew Fatman

unread,
Dec 4, 2007, 6:03:18 AM12/4/07
to HTML...@googlegroups.com
Про DOCTYPE
http://www.alistapart.com/stories/doctype/

по-русски: http://www.webmascon.com/topics/coding/25a.asp


On 12/4/07, Петров Николай <petr...@gmail.com> wrote:

Петров Николай

unread,
Dec 4, 2007, 6:18:03 AM12/4/07
to HTML...@googlegroups.com
А, с Доктайпом все-таки у меня все нормально, он у меня есть, просто Firebug его не показывает при инспектировании.

А решил я проблему довольно просто:

.menu {width:118px;_width:153px;padding:5px 0px 0px 35px;}

Короче - ширина дива для ФФ и Оперы 118+35=153

width:118px; - понимаются всеми браузерами
_width:153px; - понимается только ИЕ, и это правило должно стоять обязательно после общего правила.

С паддингом все понятно - он одинаковый для всех.

Вуаля!



On Dec 4, 2007 1:51 PM, Mironov Pavel <miron...@gmail.com> wrote:
Повторюсь: для кроссбраузерности, никогда, слышите, никогда не указывайте одному элементу высоту/ширину и соответствующий padding ! Решается использованием внутреннего элемента (у предка ширина/высота, у элемента - padding, или наоборот)

IE не будет следовать стандартам, как бы нам этого не хотелось.


А что если сделать так как я написал выше?


Andrew Fatman

unread,
Dec 4, 2007, 6:50:12 AM12/4/07
to HTML...@googlegroups.com
Если у вас IE6 и старше, и указан правильный DOCTYPE, то и в IE, и в
нормальных браузерах должны быть блоки одинаковой ширины:
width+padding.

А подобные хаки используются (использовались?) для IE5.


On 12/4/07, Петров Николай <petr...@gmail.com> wrote:

Петров Николай

unread,
Dec 4, 2007, 7:32:53 AM12/4/07
to HTML...@googlegroups.com
Короче прикол - поставил я этот доктайп:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

и сайт развалился на куски!
а заверстали мы под такой:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

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

Поучительно. Спасибо.

Andrew Fatman

unread,
Dec 4, 2007, 7:47:27 AM12/4/07
to HTML...@googlegroups.com
Почитайте про quirks mode.

Вот неплохо написано по-русски: http://neveragainblog.com.ua/archives/70

On 12/4/07, Петров Николай <petr...@gmail.com> wrote:

Mironov Pavel

unread,
Dec 4, 2007, 7:57:37 AM12/4/07
to HTML...@googlegroups.com
Если я не ошибаюсь, то с таким "доктайпом" - будет работать, как и без него вообще =) в режиме совместимости.
Ссылка у Andrew Fatman.

On 12/4/07, Петров Николай <petr...@gmail.com> wrote:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



--
Pavel 'saintd' Mironov
miron...@gmail.com
ICQ: 771655

Петров Николай

unread,
Dec 13, 2007, 8:46:22 AM12/13/07
to HTML...@googlegroups.com
Народ, а у меня еще вопрос по таблицам: у таблиц слева между границами тегов <table> и <tr> во всех браузерах появляется неопознанный отступ примерно в 10px.

если в стилях этой таблице поставить border-collapse: collapse; то тогда это расстояние как-бы схлопывается, а в Опере оно почему-то перемещается из левого края таблицы в правый край...

Очень долго парился, пытаясь заставить оперу показать таблицу так-же как ФФ и ИЕ, но ничего не получилось...

Вот стили, которые применены к таблице (из файербага):

.MainText {
color:black;
font-family:Arial;
font-size:12px;
margin-bottom:8px;
padding:0px 0px 0px 15px;
width:800px;
}

table {
margin:0pt;
padding:0pt;
}

table {
border-spacing:0pt;
}


Может кто сталкивался?
Reply all
Reply to author
Forward
0 new messages