Как padding-top как процент, связанный с шириной родителя?
Вот пример:
http://jsfiddle.net/QZAd8/1/
Обратите внимание, что все красные divs одинаковы height
и имеют padding-top:100%;
, но у них A и B имеют разные размеры дополнений... и кажется, что ширина родителя меняет это значение (обратите внимание, что C изменяет height
родителя, но это не изменяет дополнение).
Почему добавление, связанное с шириной таким образом?
Изменить: по историческим причинам, а в случае, если jsfiddle уходит, код, который я использовал в моем примере, выглядит следующим образом:
.outer {
background-color: green;
height: 300px;
width: 70px;
float: left;
margin-right: 10px;
}
.middle {
background-color: red;
height: 100px;
width: 50px;
padding-top: 100%;
}
.inner {
background-color: blue;
height: 3px;
width: 100%;
}
<div class='outer'>
<div class='middle'>
A
<div class='inner'>
</div>
</div>
</div>
<div class='outer' style='width:100px'>
<div class='middle'>
B
<div class='inner'>
</div>
</div>
</div>
<div class='outer' style='height:400px'>
<div class='middle'>
C
<div class='inner'>
</div>
</div>
</div>
Ответы
Ответ 1
Из разметки CSS CSS: маржинальная вершина на основе процента увеличивается при увеличении ширины контейнера
В CSS все четыре поля: и отступы: проценты относятся к ширине... хотя это может показаться бессмысленным. Именно такова спецификация CSS, с этим ничего нельзя поделать.
Прямо изо рта лошади:
'padding-top', 'padding-right', 'padding-bottom', 'padding-left'
Value: <padding-width> | inherit
Initial: 0
Applies to: all elements except table-row-group, table-header-group, table-footer-group, table-row, table-column-group and table-column
Inherited: no
Percentages: refer to width of containing block
Media: visual
Computed value: the percentage as specified or the absolute length
Проценты: относятся к ширине вмещающего блока
Ответ 2
Просто потому, что это так, как это должно быть:) http://www.w3.org/TR/CSS2/box.html#propdef-padding-top
Ответ 3
Верно, что процент заполнения по отношению к ширине, но, в частности, padding: 100%
также можно читать как padding: *width-of-container*px
.
Блоки A и C имели ширину 70px
. Применение padding: 100%
было таким же, как padding: 70px
Ответ 4
Высота элемента зависит от его содержимого, которое включает отступы и поля его дочерних элементов, так что это будет цикл, если дочерние элементы зависят от его родительской высоты.