Как сделать, чтобы скроллбар не занимал место?
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Прекрасный пример это соц сеть x.com
, где, как я понял, все элементы центрируются по всей ширине сайта, включая ширину скролла. При изменении заставки профиля https://x.com/settings/profile
скролл пропадает и при этом все элементы не сдвигаются вправо на ширину скролла, а остаются на месте. Мне вот именно этот эффект бы реализовать.
Предполагаю, что они динамически добавляют padding
, но может есть какое-то более простое решение?
Ответы (2 шт):
Можно для body
задать width: 100vw;
, тогда страница будет "под" скроллбаром. При этом, когда появится вертикальный скроллбар, появится также и горизонтальный на величину перекрытия скроллбаром тела страницы (15-20px) - типа чтобы можно было прокрутить и увидеть что там под вертикальным скроллбаром. Чтобы этого избежать, можно для body
задать overflow-x: hidden;
. Если нужно, чтобы страница не прыгала при появлении скролла, то этого вполне хватает.
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
width: 100vw;
height: 2000px;
background-color: #333;
border: 1px solid #f00;
overflow-x: hidden;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
</body>
</html>
Если нужно зарезервировать место на скроллбар, то можно так:
html {
box-sizing: border-box;
height: 100%;
scrollbar-gutter: stable;
padding: 1em calc(3em - (100vw - 100%)) 1em 3em;
text-align: justify;
outline: 1px dotted red;
outline-offset: -1px;
}
body {
margin: 0;
outline: 1px dotted red;
}
<details>
<summary>Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
</summary>
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
</details>
или так:
html {
box-sizing: border-box;
height: 100%;
scrollbar-gutter: stable both-edges;
padding: 1em calc(3em - (100vw - 100%));
text-align: justify;
outline: 1px dotted red;
outline-offset: -1px;
}
body {
margin: 0;
outline: 1px dotted red;
}
<details>
<summary>Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
</summary>
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
Можно ли сделать так, чтобы элементы страницы позиционировались не до скроллбара, а по всей ширине сайта, включая скроллбар? То есть, сделать скроллбар "невидимым" для других элементов.
</details>