У меня есть такая ситуация, когда я хочу визуализировать div в виде квадрата, где высота определяет ширину. Пока что единственное решение, которое подходит очень близко, - это использовать изображение размером 1 на 1 пиксель:
<div class = "square">
<img src = "data:image/gif;base64,R0lGODlhA...RAA7">
</div>
.square {
display:inline-flex;
height:100%;
background:darkorange;
}
img {
display:block;
height:100%;
width:auto;
}
Но что бы я ни пытался, при изменении высоты квадрат растягивается по вертикали (больше не квадрат). Вы должны нажать перезагрузить, чтобы снова сделать квадрат. Кажется, это происходит только в Chrome. Хотя в исходный пост предлагается использовать display: inline-flex для .square, похоже, это не работает. Может, я что-то упустил. Какие-либо предложения?
Я сделал этот случай с padding-bottom (%) и пропорциями изображения. Таким образом, вы должны использовать padding-bottom: 100% на .square в вашем случае и position: absolute; остроумие: 100%; высота: 100% на img. jsfiddle.net/0zgh8a4t
Возможный дубликат Поддерживайте соотношение сторон div с помощью CSS
Я обманываю это с помощью некоторого javascript jsfiddle.net/3vjh0s3j.
И это с некоторой css-анимацией jsfiddle.net/aLgd2917.
Спасибо за помощь. Этот вопрос не дублирует Поддерживайте соотношение сторон div с помощью CSS, потому что в этом посте все о соотношении сторон при определенной ширине. У меня есть height, а width нет. Похоже, что только в двух приведенных выше комментариях есть исправление этой проблемы!






не играясь с вашим кодом, у меня есть вопрос, вы пробовали использовать вместо него
width: 100%;height: auto?