本人vue新手菜鸡,文章为自己在项目中遇到问题的记录,如有不足还请大佬指正
文章目录
- 实现效果
- 代码展示
- 总结
因为刚接触vue,本想着看看能不能用一些element的组件实现图片的轮播效果,尝试使用过element-UI里的走马灯Carouse,但是达不到想要的效果,最后发现还是原始的html+css样式实现才是最🐂的!
实现效果
真实效果能够实现图片的无缝无限轮转
代码展示
这里进行了图片轮播的两次操作(即代码中的‘复制’),如果只有一次的话无法实现”无限“这个效果,列表播完就会有一段空白的部分。(可能是我太菜了TAT)
<temple>
<el-card style="width: 100%">
<div class="index-section-info info6">
<h3 class="index-title">动态图片</h3>
</div>
<div class="gundongBox">
<div class="gundong">
<div class="topgun">
<div class="scroll-container">
<!-- 初始图片 -->
<div class="smallbox" v-for="(item, index) in images" :key="index">
<img :src="item.url" class="slide-image" />
</div>
<!-- 复制图片以实现无限滚动 -->
<div class="smallbox" v-for="(item, index) in images" :key="index">
<img :src="item.url" class="slide-image" />
</div>
</div>
</div>
</div>
</div>
</el-card>
</temple>
<script>
const images = [
{ url: 'http://localhost:8100/src/assets/main/picture/newPic.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic2.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic3.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic4.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic5.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic6.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic7.gif' },
{ url: 'http://localhost:8100/src/assets/main/picture/newPic8.gif' },
]
</script>
<style lang="scss" scoped>
.gundongBox {
margin-top: 10px;
.gundong {
width: 100%;
margin: 0 auto;
display: flex;
flex-direction: column;
.topgun {
height: 110px;
display: flex;
overflow: hidden;
.scroll-container {
display: flex;
animation: slide 10s linear infinite;
.smallbox {
width: 25%;
display: flex;
img.slide-image {
display: flex;
}
}
}
}
.scroll-container:hover {
cursor: pointer;
animation-play-state: 'paused';
}
}
@keyframes slide {
0% {
transform: translateX(0%);
}
100% {
transform: translateX(-50%); // 滚动一个小框的宽度
}
}
@keyframes moves {
0% {
transform: translateX(-50%);
}
100% {
transform: translateX(0%); // 滚动一个小框的宽度
}
}
}
</style>
总结
暂时没有找到什么更好方法(不用.js的),只能用css的方法显示,如果大佬有什么更好更便捷的实现方式,欢迎讨论指出