左右滑动(Horizontal Scrolling)是一种网页设计效果,允许用户通过鼠标滚轮、触摸板或者手指滑动来水平滚动页面内容。这种效果通常用于展示超出视口宽度的内容,如长图、多列布局或者横向排列的项目。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Horizontal Scrolling</title>
<style>
.scroll-container {
width: 100%;
overflow-x: auto;
white-space: nowrap;
}
.scroll-item {
display: inline-block;
width: 200px;
height: 200px;
background-color: lightblue;
margin-right: 10px;
}
</style>
</head>
<body>
<div class="scroll-container">
<div class="scroll-item"></div>
<div class="scroll-item"></div>
<div class="scroll-item"></div>
<div class="scroll-item"></div>
<div class="scroll-item"></div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Horizontal Scrolling with JS</title>
<style>
.scroll-container {
width: 100%;
overflow-x: auto;
white-space: nowrap;
}
.scroll-item {
display: inline-block;
width: 200px;
height: 200px;
background-color: lightblue;
margin-right: 10px;
}
</style>
</head>
<body>
<div class="scroll-container" id="scrollContainer">
<div class="scroll-item"></div>
<div class="scroll-item"></div>
<div class="scroll-item"></div>
<div class="scroll-item"></div>
<div class="scroll-item"></div>
</div>
<script>
const container = document.getElementById('scrollContainer');
let isDown = false;
let startX;
let scrollLeft;
container.addEventListener('mousedown', (e) => {
isDown = true;
startX = e.pageX - container.offsetLeft;
scrollLeft = container.scrollLeft;
});
container.addEventListener('mouseleave', () => {
isDown = false;
});
container.addEventListener('mouseup', () => {
isDown = false;
});
container.addEventListener('mousemove', (e) => {
if (!isDown) return;
e.preventDefault();
const x = e.pageX - container.offsetLeft;
const walk = (x - startX) * 3; // scroll-fast
container.scrollLeft = scrollLeft - walk;
});
</script>
</body>
</html>
will-change
属性来提示浏览器提前优化。touchstart
、touchmove
和touchend
,并相应地处理滑动逻辑。overflow-x: auto
或overflow-x: scroll
,并且子元素的总宽度超过了父容器的宽度。通过以上方法,可以有效地实现和优化左右滑动效果。
领取专属 10元无门槛券
手把手带您无忧上云