Кросс-браузерный метод для подгонки дочернего элемента div по ширине - PullRequest
56 голосов
/ 06 июля 2011

Я ищу решение, которое бы поместило ребенка div в родительские width.

Большинство решений, которые я видел здесь , не совместимы с различными браузерами (например. display: table-cell; не поддерживается в IE <=8).

image showing intended result with a child div being the full size of it's parent, with inner padding

Ответы [ 6 ]

64 голосов
/ 06 июля 2011

Решение состоит в том, чтобы просто не объявлять width: 100%.

По умолчанию установлено значение width: auto, которое для элементов уровня блока (например, div) в любом случае займет доступное «полное пространство» (отличается от того, как это делает width: 100%).

См .: http://jsfiddle.net/U7PhY/2/

На всякий случай из моего ответа еще не ясно: просто не устанавливайте width для ребенка div.

Вместо этого вы можете быть заинтересованы в box-sizing: border-box.

17 голосов
/ 31 октября 2014

Вы можете использовать box-sizing свойство css, его кроссбраузер (т.е. 8+ и все реальные браузеры) и довольно хорошее решение для таких случаев:

#childDiv{
   box-sizing: border-box;
   width: 100%; //or any percentage width you want
   padding: 50px;
}

Fiddle

1 голос
/ 06 июля 2011

Если вы хотите использовать это пространство для заполнения ... тогда вот что:

http://jsfiddle.net/qD4zd/

Все цвета являются фоновыми.

1 голос
/ 06 июля 2011

Вам даже не нужно width: 100% в вашем детском div:

http://jsfiddle.net/DanielDZC/w2mev/1/

1 голос
/ 06 июля 2011

В вашем изображении вы помещаете прокладку снаружи ребенка. Это не вариант. Отступ добавляет ширину элемента, поэтому, если вы добавите отступ и зададите ему ширину 100%, он будет иметь ширину 100% + заполнение. Для того, что вы хотите, вам просто нужно добавить дополнение к родительскому div или добавить поле к внутреннему div. Поскольку элементы div являются элементами уровня блока, они автоматически расширяются до ширины родительского элемента.

1 голос
/ 06 июля 2011

Если вы положите position:relative; на внешний элемент, внутренний элемент будет располагаться в соответствии с этим.Тогда width:auto; на внутреннем элементе будет такой же, как ширина внешнего.

...