Обзор
Сегодня столкнулся с интересным вопросом:"Как реализовать прямоугольник, ширина которого адаптивна, а высота равна половине ширины".
После просеивания поисковых систем и собственных проб и ошибок я обнаружил, что с помощьюpadding-bottom
является идеальным решением.
решение
Сначала мы должны понять,padding-top/bottom
а такжеmargin-top/bottom
рассчитываются относительно ширины родительского элемента, мы можем использовать это свойство для достижения наших целей.
код показывает, как показано ниже:
<div class="scale"></div>
.scale {
width: 100%;
height: 0;
padding-bottom: 50%;
}
Ключевым моментом этого является то, чтоheight: 0;
а такжеpadding-bottom: 50%;
.
Мы устанавливаем высоту элемента с помощьюpadding
распространяться, потому чтоpadding
Он рассчитывается в соответствии с шириной родительского элемента, поэтому высота становится относительной шириной родительского элемента.height
Установите на 0, чтобы полностью задать высоту элемента.padding
Быть ответственным за.
наконецpadding-bottom
Значение установлено наwidth
половина значения, вы можете добиться высоты половины ширины и адаптивности.
Улучшать
Недостаточно написать так, потому что элементheight
Если он равен 0, высота не может быть установлена нормально, когда в элементе есть дочерние элементы. Поэтому нам нужно использоватьposition: absolute;
. код показывает, как показано ниже:
<div class="scale">
<div class="item">
这里是所有子元素的容器
</div>
</div>
.scale {
width: 100%;
padding-bottom: 56.25%;
height: 0;
position: relative; //
}
.item {
width: 100%;
height: 100%;
background-color: aquamarine;
position: absolute; //
}
продолжать улучшать
Решил проблему с дочерними элементами, теперь давайте посмотрим на сам элемент. Поскольку нашим первоначальным требованием является соотношение сторон2:1
, этого лучше добиться, но тогда спрос захочет16:9
соотношение сторон, а ширина не 100%, то рассчитывайте такpadding-bottom
Было хлопотно, когда. Как это решить?
В это время нам нужно установить другой родительский элемент во внешнем слое и передать управление шириной этому родительскому элементу.
код показывает, как показано ниже:
<body>
<div class="box">
<div class="scale">
<div class="item">
item
</div>
</div>
</div>
</body>
/* box 用来控制宽度 */
.box {
width: 80%;
}
/* scale 用来实现宽高等比例 */
.scale {
width: 100%;
padding-bottom: 56.25%;
height: 0;
position: relative;
}
/* item 用来放置全部的子元素 */
.item {
width: 100%;
height: 100%;
background-color: aquamarine;
position: absolute;
}
Таким образом, это может быть решено идеально.
В этой статье используетсяmdniceнабор текста