css квадрат полученный по высоте, которая задается в %
Такая задача у меня, нужно сделать из div, а лучше из button, квадрат, но чтобы ширина определялась зная высоту в процентах!!! У меня есть решение наоборот, есть ширина в %, получаем высоту с padding-top, и все работает.
Проведя аналогию с height, задав padding-left такой же процент - ничего не получается, при любых комбинациях, и с padding-right тоже. В интернете было решение задавать размеры в vw ( width:5vw; height:5vw; ) , но мне оно не подходит, хотя идейка не плохая, как мне показалось, кубик становится железный, и не меняет размеры при повороте экрана! Возможно кто знает как это сделать в %-тах.
На картинке изображен результат, если использовать vw, как можно заметить, в горизонтальном экране слишном высокие получаются, а был бы процент, то тогда были бы кнопки высокими вертикально, а горизонтально сплюснутыми! думаю логично, как пример, если бы высота кнопок была 50%, вертикально кнопки будут огромными :0
div {
display: inline-block;
width:20%;
padding-top:20%;
margin-right:2px;
}
<div style="background: #F65314;"></div>
<div style="background: #7CBB00;"></div>
<br>
<div style="background: #00A1F1;"></div>
<div style="background: #FFBB00;"></div>
Ответы (1 шт):
Вариант:
//получаем ширину равную высоте
$(document).ready(function() {
var w = parseFloat($('button').css('height'));
$('button').css('width', w);
//получаем ширину при изменении размера окна
$(window).resize(function() {
var w = parseFloat($('button').css('height'));
$('button').css('width', w);
});
});
body,
html {
height: 100%;
}
button {
display: inline-block;
height: 40%; /*задаем только высоту в процентах*/
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button style="background: #F65314;"></button>
<button style="background: #7CBB00;"></button>
<br>
<button style="background: #00A1F1;"></button>
<button style="background: #FFBB00;"></button>