Я знаю, что вопрос очень старый, и @Josh Beam решил самую большую разницу, но есть еще один:
Предположим, у вас есть <div>прямой дочерний элемент , <body>который вы хотите заполнить весь видовой экран, так что вы используете width: 100vw; height: 100vh;. Все это работает так же, как и width: 100%; height: 100vh;до тех пор, пока вы не добавите больше контента и не появится вертикальная полоса прокрутки. Поскольку vwучетная запись для полосы прокрутки как часть области просмотра, width: 100vw;будет немного больше, чем width: 100%;. Эта небольшая разница в итоге добавляет горизонтальную полосу прокрутки (требуется, чтобы пользователь видел эту небольшую дополнительную ширину), и, как следствие, высота также будет немного отличаться в обоих случаях.
Это необходимо учитывать при принятии решения о том, какой из них использовать, даже если размер родительского элемента совпадает с размером области просмотра документа.
Пример:
Использование width:100vw;:
.fullviewport {
width: 100vw;
height: 100vh;
background-color: red;
}
.extracontent {
width: 100vw;
height: 20vh;
background-color: blue;
}
<html>
<body>
<div class="fullviewport"></div>
<div class="extracontent"></div>
</body>
</html>
Использование width:100%;:
.fullviewport {
width: 100%;
height: 100vh;
background-color: red;
}
.extracontent {
width: 100%;
height: 20vh;
background-color: blue;
}
<html>
<body>
<div class="fullviewport"></div>
<div class="extracontent"></div>
</body>
</html>