Почему vw включает полосу прокрутки как часть окна просмотра?
Я пытаюсь создать веб-сайт, который имеет множество ящиков одинаковой ширины и высоты. Например, у меня есть страница, которая имеет 2 одинаковых размера бок о бок.
простым решением было установить ширину и высоту до 50vw. Это отлично работает, пока не появится полоса прокрутки. Я гуглил часами и не могу понять, почему vw и vh включают полосы прокрутки как часть окна просмотра.
вот образец моего выпуск
HTML-код
<div class="container">
<div class="box red"></div>
<div class="box green"></div>
</div>
<div class="lotta-content"></div>
в CSS
body {
margin: 0;
padding: 0;
}
.container {
width: 100vw;
}
.box {
float: left;
width: 50vw;
height: 50vw;
}
.red {
background-color: red;
}
.green {
background-color: green;
}
.lotta-content {
height: 10000px;
}
обратите внимание на нежелательную горизонтальную полосу прокрутки
https://jsfiddle.net/3z887swo/
одним из возможных решений было бы использовать проценты для ширины, но vw для высоты, но это никогда не будет идеальной коробкой, которая не является худшей вещью в мире, но все еще не идеальна. Вот образец
https://jsfiddle.net/3z887swo/1/
кто-нибудь знает, почему vw/vh включает полосы прокрутки как часть окна просмотра? Кроме того, если у кого-то есть лучшее решение, чем мое, я хотел бы его услышать. Я ищу чистое решение CSS. Я скорее не содержать JavaScript.
3 ответов
было бы удобно, если бы блоки просмотра не включали полосы прокрутки, но это размер дисплея (экран) в конце концов. Посмотреть на это решение с псевдо-элемента:
http://www.mademyday.de/css-height-equals-width-with-pure-css.html
также делает квадрат в вашем примере:
https://jsfiddle.net/3z887swo/4/
.box {
float: left;
width: 50%;
}
.box::before {
content: "";
display: block;
padding-top: 100%;
}
Edit - если кому-то интересно, почему это работает (вертикальное заполнение отвечая на ширину исходного элемента)... это в основном, как это определено в спецификации:
процент рассчитывается относительно ширины блока, содержащего сгенерированный блок, даже для "padding-top" и "padding-bottom".
у меня есть другой ответ, и чувствую необходимость поделиться своим разочарование
ПОТОМУ ЧТО ПРОИЗВОДИТЕЛИ СТАНДАРТОВ ГЛУПЫ
(комитеты, в общем, всегда)
один простой обходной путь держит полосу прокрутки всегда вокруг и иметь дело с ним
html,body {margin:0;padding:0}
html{overflow-y:scroll}
(использовать overflow-x
для макета, который использует vh
)
Я считаю, что они серьезно облажался на этом.