Я хочу, чтобы мой div адаптировал его высоту, чтобы всегда было равно ее ширине. Ширина percental. Когда ширина родителя уменьшается, ящик должен уменьшаться, сохраняя его соотношение сторон.
Как это сделать, это CSS?
Я хочу, чтобы мой div адаптировал его высоту, чтобы всегда было равно ее ширине. Ширина percental. Когда ширина родителя уменьшается, ящик должен уменьшаться, сохраняя его соотношение сторон.
Как это сделать, это CSS?
Чтобы достичь того, что вы ищете, вы можете использовать длину окна просмотра vw
.
Вот краткий пример, который я сделал на jsfiddle.
HTML:
<div class="square">
<h1>This is a Square</h1>
</div>
CSS
.square {
background: #000;
width: 50vw;
height: 50vw;
}
.square h1 {
color: #fff;
}
Я уверен, что есть много других способов сделать это, но этот способ казался мне лучшим.
Работает практически со всеми браузерами.
Вы можете попробовать дать padding-bottom
в процентах.
<div style="height:0;width:20%;padding-bottom:20%;background-color:red">
<div>
Content goes here
</div>
</div>
Внешний div создает квадрат, а внутренний div содержит контент. Это решение работало для меня много раз.
Здесь jsfiddle
Это так же просто, как указание нижнего дна того же размера, что и ширина в процентах. Поэтому, если у вас есть ширина 50%, просто используйте этот пример ниже
id or class{
width: 50%;
padding-bottom: 50%;
}
Вот jsfiddle http://jsfiddle.net/kJL3u/2/
Отредактированная версия с отзывчивым текстом: http://jsfiddle.net/kJL3u/394
HTML
<div class='square-box'>
<div class='square-content'>
<h3>test</h3>
</div>
</div>
CSS
.square-box{
position: relative;
width: 50%;
overflow: hidden;
background: #4679BD;
}
.square-box:before{
content: "";
display: block;
padding-top: 100%;
}
.square-content{
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
color: white;
text-align: center;
}
Другой способ - использовать прозрачный 1x1.png с width: 100%
, height: auto
в div
и абсолютно позиционированный контент внутри него:
HTML:
<div>
<img src="1x1px.png">
<h1>FOO</h1>
</div>
CSS
div {
position: relative;
width: 50%;
}
img {
width: 100%;
height: auto;
}
h1 {
position: absolute;
top: 10px;
left: 10px;
}
Вот что я придумал. Вот скрипка.
Во-первых, мне нужны три элемента оболочки как для квадратной формы, так и для центрированного текста.
<div><div><div>Lorem ipsum dolor sit amet, consectetuer adipiscing elit,
sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat
volutpat.</div></div></div>
Это стиль. Он использует два метода: один для квадратных фигур и один для центрированный текст.
body > div {
position:relative;
height:0;
width:50%; padding-bottom:50%;
}
body > div > div {
position:absolute; top:0;
height:100%; width:100%;
display:table;
border:1px solid #000;
margin:1em;
}
body > div > div > div{
display:table-cell;
vertical-align:middle; text-align:center;
padding:1em;
}