#javascript #html #css #layout #responsive-design
#javascript #HTML #css #макет #адаптивный дизайн
Вопрос:
Я работаю над эффектами CSS, в коде я добавляю divs для отображения шариков в теле документа со случайным размером и цветом. Но с помощью кода генерируется дополнительное пространство для прокрутки. Я поражен дополнительной прокруткой, которая генерируется как по горизонтали, так и по вертикали с помощью шариков.
HTML-страница не будет содержать более двух строк.
Пока что мой код для страницы HTML я создал Code Pen
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://kit.fontawesome.com/cae1531884.js" crossorigin="anonymous"></script>
<link href="https://fonts.googleapis.com/css2?family=Montserratamp;family=Rubikamp;display=swap" rel="stylesheet">
<style>
body {
margin: 0;
padding: 0;
font-family: 'Montserrat', sans-serif;
}
.ball {
position: absolute;
border-radius: 100%;
opacity: 0.7;
}
.headings {
font-family: 'Rubik', sans-serif;
}
.container {
height: 100vh;
padding-left: 2rem;
position: relative;
}
.vertical-center {
margin: 0;
position: absolute;
top: 50%;
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
.social-links {
padding: 5px;
color: #121212;
}
</style>
</head>
<body>
<div class="container">
<div class="vertical-center">
<div class="header headings">
<h1>Hello World</h1>
</div>
<div class="content">
<p>Lorem Ipsum</p>
</div>
</div>
</div>
<script>
const colors = ["#3CC157", "#2AA7FF", "#d3d3d3", "#FCBC0F", "#F85F36"];
const numBalls = 50;
const balls = [];
for (let i = 0; i < numBalls; i ) {
let ball = document.createElement("div");
ball.classList.add("ball");
ball.style.background = colors[Math.floor(Math.random() * colors.length)];
ball.style.left = `${Math.floor(Math.random() * 100)}vw`;
ball.style.top = `${Math.floor(Math.random() * 100)}vh`;
ball.style.transform = `scale(${Math.random()})`;
ball.style.width = `${Math.random()}em`;
ball.style.height = ball.style.width;
balls.push(ball);
document.body.append(ball);
}
// Keyframes
balls.forEach((el, i, ra) => {
let to = {
x: Math.random() * (i % 2 === 0 ? -11 : 11),
y: Math.random() * 12
};
let anim = el.animate(
[
{ transform: "translate(0, 0)" },
{ transform: `translate(${to.x}rem, ${to.y}rem)` }
],
{
duration: (Math.random() 1) * 2000, // random duration
direction: "alternate",
fill: "both",
iterations: Infinity,
easing: "ease-in-out"
}
);
});
</script>
</body>
</html>
Комментарии:
1.
But there is extra scroll space being generated with the code.
… Контейнер управляет движением прокрутки. Попробуйтеoverflow-x: auto
2. Это работало для полноэкранного режима, но не работает в режиме мобильного просмотра
3. В мобильном режиме пользователь сможет перетаскивать скрытое содержимое вправо
4. Нет необходимости в этом сенсорном перетаскивании, страница содержит не более 2 строк содержимого html
5. Поскольку контейнер не является проблемой, некоторые другие аспекты вашего кода приводят к нежелательным результатам. Возможно, у вас есть дополнительный закрывающий тег или не закрытый открывающий тег.
Ответ №1:
Вы можете установить для тела width
значение 100vw
(ширина области просмотра) и height
на 100vh
(высота области просмотра), а также скрыть полосу прокрутки, установив для тела overflow
значение hidden
.
body {
height: 100vh;
width: 100vw;
overflow: hidden;
...
}
Комментарии:
1. Это сделает недоступным горизонтальное содержимое.
2. Это работало для полноэкранного режима, но не работает в режиме мобильного просмотра. Я все еще получаю прокрутку для мобильного просмотра
3. Для меня это работает как на мобильном, так и на полноэкранном режиме. Вы удалили какую-либо высоту или ширину? Если это так, я могу попробовать что-то еще. Если нет, я действительно понятия не имею