#html #css #layout #overflow
#HTML #css #макет #переполнение
Вопрос:
У меня нет способа объяснить это, кроме как сослаться на следующий пример на JS Fiddle — в нем последнее СИНЕЕ поле не расширяется до 100% ширины, как ожидалось, после того, как я введу атрибут overflow: hidden.
У меня создалось впечатление, что overflow: hidden повлияет только на аспекты видимости и не повлияет на макет. Кто-нибудь может объяснить, что происходит в этом примере?
Редактировать:Эта проблема, похоже, ограничена браузерами webkit (например, Chrome)
Комментарии:
1. В каком браузере вы видите эти проблемы? Для меня это выглядит нормально в FF
2. я вижу, на что он указывает в chrome. так что, вероятно, webkit
3. Примечание: у вас не должно быть нескольких элементов с одинаковым идентификатором, например, blue и red. Однако это не вызывает эту проблему, которую я вижу в Chrome / Lin.
4. я думаю, что есть некоторые проблемы с вашими стилями. во-первых, вы не можете использовать 2 идентификатора дважды (используйте классы). во-вторых, я не думаю, что вы очищаете свои значения с плавающей точкой здесь
5. Похоже, что это не относится к Chrome (/ Win), по крайней мере, с версии 20.
Ответ №1:
Это потому, что overflow: hidden
, среди прочих свойств, вводит новый контекст форматирования блока.
Вы можете прочитать об эффектах в этой замечательной статье: Магия переполнения: скрытое
ОБНОВЛЕНИЕ: я переписал ваш jsFiddle во что-то, что работает (протестировано в Chrome). Вместо определения margin-left
на #red
и #blue
(которые действовали бы по-другому из-за overflow: hidden
), я поставил margin-right
на #yellow
.
Комментарии:
1. @bazmegakapa- Потрясающе- спасибо за руководство и переписывание