上一篇
html滚图片
- 行业动态
- 2025-04-30
- 3674
HTML实现滚图片可借助CSS动画或JS轮播,通过控制
实现HTML图片滚动的常见方法
基础滚动结构(使用<marquee>HTML已废弃<marquee>
标签,但部分低版本浏览器仍支持,推荐使用CSS/JS实现更可控的效果。
属性 说明 behavior 滚动方向(scroll
/slide
) direction 滚动轴向(left
/right
) scrollamount 滚动速度(像素/步长) scrolldelay 延迟时间(毫秒) loop 是否循环(true
/false
) width/height 容器尺寸
<!-不推荐使用 -->
<marquee behavior="scroll" direction="left" scrollamount="5">
<img src="image1.jpg" alt="滚动图片">
</marquee>
CSS动画实现水平滚动
通过animation
属性控制图片序列滚动,需配合关键帧动画。

.scroll-container {
width: 400px;
overflow: hidden;
white-space: nowrap; / 防止换行 /
}
.scroll-list {
display: flex;
animation: scroll 10s linear infinite;
}
@keyframes scroll {
0% { transform: translateX(0); }
100% { transform: translateX(-100%); }
}
.scroll-item {
width: 200px; / 单张图片宽度 /
flex-shrink: 0;
}
<div class="scroll-container">
<div class="scroll-list">
<img class="scroll-item" src="img1.jpg" alt="图片1">
<img class="scroll-item" src="img2.jpg" alt="图片2">
<!-可添加更多图片 -->
</div>
</div>
JavaScript控制轮播
通过定时器实现自动轮播,支持触屏滑动(需额外处理)。
const images = document.querySelectorAll('.carousel img');
let current = 0;
function switchImage() {
images[current].classList.remove('active');
current = (current + 1) % images.length;
images[current].classList.add('active');
}
setInterval(switchImage, 3000); // 每3秒切换
<div class="carousel">
<img class="active" src="img1.jpg" alt="轮播图1">
<img src="img2.jpg" alt="轮播图2">
<img src="img3.jpg" alt="轮播图3">
</div>
.carousel {
position: relative;
width: 600px;
height: 400px;
}
.carousel img {
position: absolute;
width: 100%;
opacity: 0;
transition: opacity 0.5s;
}
.carousel img.active {
opacity: 1;
}
使用第三方库(Swiper.js)
集成成熟轮播库,支持多种交互和响应式布局。
<!-引入Swiper样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.css">
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide"><img src="img1.jpg" alt=""></div>
<div class="swiper-slide"><img src="img2.jpg" alt=""></div>
<div class="swiper-slide"><img src="img3.jpg" alt=""></div>
</div>
<!-分页器 -->
<div class="swiper-pagination"></div>
</div>
<script src="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.js"></script>
<script>
new Swiper('.swiper-container', {
loop: true, // 循环模式
autoplay: { delay: 3000 }, // 自动播放
pagination: { el: '.swiper-pagination' }, // 底部导航
});
</script>
常见问题与解决方案
Q1:如何让滚动无缝循环?
A:需保证容器总宽度为图片宽度×数量,例如3张图片时:
.scroll-list {
width: calc(200px 3); / 单张宽度×总数 /
}
同时设置animation
终点为translateX(-100%)
,使最后一张接第一张。
Q2:移动端触摸滑动卡顿怎么办?
A:
- 禁用默认行为:
overflow: hidden
的容器需添加-webkit-overflow-scrolling: touch
; - 使用
requestAnimationFrame
优化JS动画; - 对图片进行压缩,减少单
HTML已废弃<marquee>
标签,但部分低版本浏览器仍支持,推荐使用CSS/JS实现更可控的效果。
属性 | 说明 |
---|---|
behavior | 滚动方向(scroll /slide ) |
direction | 滚动轴向(left /right ) |
scrollamount | 滚动速度(像素/步长) |
scrolldelay | 延迟时间(毫秒) |
loop | 是否循环(true /false ) |
width/height | 容器尺寸 |
<!-不推荐使用 --> <marquee behavior="scroll" direction="left" scrollamount="5"> <img src="image1.jpg" alt="滚动图片"> </marquee>
CSS动画实现水平滚动
通过animation
属性控制图片序列滚动,需配合关键帧动画。
.scroll-container { width: 400px; overflow: hidden; white-space: nowrap; / 防止换行 / } .scroll-list { display: flex; animation: scroll 10s linear infinite; } @keyframes scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } } .scroll-item { width: 200px; / 单张图片宽度 / flex-shrink: 0; }
<div class="scroll-container"> <div class="scroll-list"> <img class="scroll-item" src="img1.jpg" alt="图片1"> <img class="scroll-item" src="img2.jpg" alt="图片2"> <!-可添加更多图片 --> </div> </div>
JavaScript控制轮播
通过定时器实现自动轮播,支持触屏滑动(需额外处理)。
const images = document.querySelectorAll('.carousel img'); let current = 0; function switchImage() { images[current].classList.remove('active'); current = (current + 1) % images.length; images[current].classList.add('active'); } setInterval(switchImage, 3000); // 每3秒切换
<div class="carousel"> <img class="active" src="img1.jpg" alt="轮播图1"> <img src="img2.jpg" alt="轮播图2"> <img src="img3.jpg" alt="轮播图3"> </div>
.carousel { position: relative; width: 600px; height: 400px; } .carousel img { position: absolute; width: 100%; opacity: 0; transition: opacity 0.5s; } .carousel img.active { opacity: 1; }
使用第三方库(Swiper.js)
集成成熟轮播库,支持多种交互和响应式布局。
<!-引入Swiper样式 --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.css"> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide"><img src="img1.jpg" alt=""></div> <div class="swiper-slide"><img src="img2.jpg" alt=""></div> <div class="swiper-slide"><img src="img3.jpg" alt=""></div> </div> <!-分页器 --> <div class="swiper-pagination"></div> </div> <script src="https://cdn.jsdelivr.net/npm/swiper/swiper-bundle.min.js"></script> <script> new Swiper('.swiper-container', { loop: true, // 循环模式 autoplay: { delay: 3000 }, // 自动播放 pagination: { el: '.swiper-pagination' }, // 底部导航 }); </script>
常见问题与解决方案
Q1:如何让滚动无缝循环?
A:需保证容器总宽度为图片宽度×数量,例如3张图片时:
.scroll-list { width: calc(200px 3); / 单张宽度×总数 / }
同时设置animation
终点为translateX(-100%)
,使最后一张接第一张。
Q2:移动端触摸滑动卡顿怎么办?
A:
- 禁用默认行为:
overflow: hidden
的容器需添加-webkit-overflow-scrolling: touch
; - 使用
requestAnimationFrame
优化JS动画; - 对图片进行压缩,减少单