Квадрат Div, размер ширины на основе 100% высоты
Я пытаюсь создать адаптивный квадрат с размером ширины, основанным на (100%) высоте элемента. Я считаю, что невозможно использовать только CSS.
Ширина квадрата должна быть равна высоте (100% большого контейнера. Большой контейнер - более 100% экрана). Соотношение должно быть ширина = высота, чтобы сохранить квадрат.
9 ответов
Хорошо, здесь решение.
<div id="square" style="background-color:black;height:100%">test</div>
$(window).ready(updateWidth);
$(window).resize(updateWidth);
function updateWidth()
{
var square = $('#square');
var size = square.height();
square.css('width',size);
}
Вы можете сделать это с помощью крошечного встроенного изображения. Нет JS, нет лишних файлов.
.container {
height: 150px;
width: 100%;
text-align: center;
background: #acd;
}
.square {
display: inline-block;
height: 100%;
background: #691;
}
<div class="container">
<div class="square">
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" height="100%">
</div>
</div>
Взгляните... наимущество.
Это свойство делает создание квадратного div на основе высоты самым простым способом. Вот пример кода:
Вот несколько ссылок, которые помогут вам понять свойство соотношения сторон:
Я думаю, что это может быть хорошим решением для вас. Кросс-браузер работает.
http://absolide.tumblr.com/post/7317210512/full-css-fluid-squares
Хорошо, чтобы выделить это хорошее правило CSS:
Если вертикальные отступы (и поля) указаны в процентах (%), то размер равен проценту ширины содержащего элемента.
Для решения, предназначенного только для CSS (когда вы определяете размер относительно размера экрана), используйте единицы просмотра. Например:
@media screen and (orientation:landscape) {
.box{
height: 100vh;
width: 100vh;
}
}
@media screen and (orientation:portrait) {
.box{
height: 100vw;
width: 100vw;
}
}
(Вы можете уменьшить его до 98 единиц, чтобы избежать прокрутки)
Прекрасно работает с элементами div, которые должны занимать точную пропорцию места на экране.
Поскольку квадрат имеет одинаковую ширину и высоту, и вы знаете ширину квадрата, вы можете применить то же значение к высоте.
Если вы можете использовать JS, попробуйте следующее: (jQuery)
var wiDth = $('div').css('width'); // get width
$('div').css('height', wiDth); // apply that value to the height
Попробуйте это здесь: http://jsfiddle.net/afzaal_ahmad_zeeshan/vpGUK/
Вы можете сделать это с помощью JavaScript. Я предполагаю, что у вас есть контейнер Div большего размера, в котором вы хотите квадрат, высота которого равна высоте контейнера. HTML-код выглядит следующим образом:
<div id="container">
<div id="square" style="height:100%;">
</div>
</div>
В javascript вы просто сделаете:
<script>
var container = document.getElementById("container");
var square = document.getElementById("square");
square.style.width = container.style.height;
window.onresize=function(){
square.style.width = container.style.height;
};
<script>
надеюсь, это поможет
Поместите это на свой <script src="http://code.jquery.com/jquery-1.10.2.js"></script>
и попробуйте с jquery:
var totalHeight = 0;
$("#yourContainer").children().each(function(){
totalHeight += $(this).height;
});
$("#yourContainer").css('width', totalHeight + 'px');
Вы можете присвоить контейнеру ширину и высоту следующим образом
.container{
width: '100vh',
height: '100vh',
}
Он создаст квадратный div со 100% высотой и шириной = высотой.