Jump to content

Как разобраться?


Softlink
 Share

Recommended Posts

Всем привет. Сегодня столкнулся с одной особенностью.

Если указать для родителя, у которого задан display:table вертикальные паддинги, то потомок( с display:table-cell) растягивается на ширину(!), бОльшую, чем 100% родителя. Соответственно, если убрать паддинги, то все становится хорошо.

Наблюдается только в Хроме. Причем самое интересное, что смотрели на другой машине, там в Хроме все нормально. Но у нас разница в версиях браузеров и ОС, у меня v.16.. и W7, а там v.15.. и XP.

Пример прилагаю http://alpatriott.ru/works/primer/width.html

Посмотрите пожалуйста, у кого как отображается. Либо у меня Хром сломался либо это баг какой-то?

Link to comment
Share on other sites

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

Upd. нашел свой пример, подтверждающий наличие проблемы с бордером: http://jsfiddle.net/6X42L/ (можно поменять толщину верхнего бордера и увидеть, как это тут же отражается на ширине, вопреки всякой логике, да и правый-левый бордеры действуют на ширину не так, как везде).

Link to comment
Share on other sites

Тестил у себя в win7 и XP (вторая ОС) - все нормально. (Chrome 16.0.912.63 m)

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

Edited by Svatov
Link to comment
Share on other sites

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

1) почему вертикальные паддинги влияют?;

2) в других браузерах все в порядке;

3) собственно, в самом хроме (15) под XP все нормально;

Link to comment
Share on other sites

Хм, до сего дня я был уверен, что паддинги для таблицы должны игнорироваться, но в спеке про них написано "Applies to: all elements except table-row-group, table-header-group, table-footer-group, table-row, table-column-group and table-column", сама таблица в списке отсутствует, значит, к ней должны применяться. Но вертикальные паддинги бордеры и ширина уж точно пересекаться не должны...

Link to comment
Share on other sites

Возможно спасет заигрывание с box-sizing...

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

Link to comment
Share on other sites

В чем совместимость-то? У IE при нормальном доктайпе уже 10 лет боксовая модель адекватна (если вынести за скобки странности хзлейаута). А такой дикости, как влияние на ширину вертикальных паддингов/бордеров, сколько себя помню (где-то с IE4.01), даже в нем не водилось...

Link to comment
Share on other sites

В чем совместимость-то? У IE при нормальном доктайпе уже 10 лет боксовая модель адекватна (если вынести за скобки странности хзлейаута). А такой дикости, как влияние на ширину вертикальных паддингов/бордеров, сколько себя помню (где-то с IE4.01), даже в нем не водилось...

С таблицами не очень адекватная.

А вертикальные как раз могут влиять из-за 100% высоты body

Можно попробовать отключить (я проверить не могу, у меня все более-менее нормально отображается)

Link to comment
Share on other sites

А вертикальные как раз могут влиять из-за 100% высоты body

Можно попробовать отключить (я проверить не могу, у меня все более-менее нормально отображается)

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

Link to comment
Share on other sites

Теперь окончательно убедился, что дело именно в Хроме 16(...). Кто помнит, я когда-то верстал клавиатуру. Вот на ховере у меня у кнопок появлялся бордер. До 16-го Хрома все было в порядке, бордер появлялся, но ширина оставалась неизменной, т.к. использовал box-sizing:border-box;, теперь он не помогает. Посмотрел, на своей "галерее", которую верстал(там тоже в одном варианте использовал box-sizing), - все в порядке, но там на флоатах все. В итоге методом исключения можно сделать вывод, что в 16-м Хроме любые паддинги и бордеры для элементов с table, table-cell(100%) влияют на ширину блока. Проблему с бордерам можно решить использованием box-shadow(слава богу с ним все нормально работает), а вот с паддингами совсем беда.

Link to comment
Share on other sites

Теперь окончательно убедился, что дело именно в Хроме 16(...). Кто помнит, я когда-то верстал клавиатуру. Вот на ховере у меня у кнопок появлялся бордер. До 16-го Хрома все было в порядке, бордер появлялся, но ширина оставалась неизменной, т.к. использовал box-sizing:border-box;, теперь он не помогает. Посмотрел, на своей "галерее", которую верстал(там тоже в одном варианте использовал box-sizing), - все в порядке, но там на флоатах все. В итоге методом исключения можно сделать вывод, что в 16-м Хроме любые паддинги и бордеры для элементов с table, table-cell(100%) влияют на ширину блока. Проблему с бордерам можно решить использованием box-shadow(слава богу с ним все нормально работает), а вот с паддингами совсем беда.

А покажи плиз работающий пример с box-shadow :rolleyes:

Link to comment
Share on other sites

А покажи плиз работающий пример с box-shadow :rolleyes:

Держи http://jsfiddle.net/Softlink/pQwQL/

Погоди, но ща ваще в примере верхний блок больше по ширине, чем нижний?

Ну так а я про что говорил в предыдущем посте? :) Да, он шире. Шире ровно на толщину бордеров, т.к. box-shadow не учитывается в размерах блока. Вот так они одинаковы http://jsfiddle.net/Softlink/pQwQL/2/

Link to comment
Share on other sites

Softlink,

Погоди, но смотри. Если делать просто вот так, то нижний блок (с тенью) почему-то становится шире верхнего, и именно слева. http://jsfiddle.net/pQwQL/3/ :unsure:

Он шире, да. Но влияние на размер блока и визуальные размеры - это разные вещи. Грубо говоря, тень подвешена на абсолюте :)

Link to comment
Share on other sites

Softlink, Погоди, но смотри. Если делать просто вот так, то нижний блок (с тенью) почему-то становится шире верхнего, и именно слева. http://jsfiddle.net/pQwQL/3/ :unsure:
Обман зрения, не?

Неа

Softlink, Погоди, но смотри. Если делать просто вот так, то нижний блок (с тенью) почему-то становится шире верхнего, и именно слева. http://jsfiddle.net/pQwQL/3/ :unsure:
Он шире, да. Но влияние на размер блока и визуальные размеры - это разные вещи. Грубо говоря, тень подвешена на абсолюте :)

Ааа, теперь ясно, о чём ты. Спасибо. :)

Link to comment
Share on other sites

  • 1 month later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy