Подтвердить что ты не робот

Как 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>
4b9b3361

Ответ 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

Проценты: относятся к ширине вмещающего блока

Ответ 3

Верно, что процент заполнения по отношению к ширине, но, в частности, padding: 100% также можно читать как padding: *width-of-container*px.

Блоки A и C имели ширину 70px. Применение padding: 100% было таким же, как padding: 70px

Ответ 4

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