<div id='app'>
  <div class='slider'>
    <div class='slider-container' ref='sliderContainer'>
      <div class='slider-item'>
        <img src='https://picsum.photos/id/1018/500/300' alt='image1'>
      </div>
      <div class='slider-item'>
        <img src='https://picsum.photos/id/1015/500/300' alt='image2'>
      </div>
      <div class='slider-item'>
        <img src='https://picsum.photos/id/1019/500/300' alt='image3'>
      </div>
      <div class='slider-item'>
        <img src='https://picsum.photos/id/1022/500/300' alt='image4'>
      </div>
      <div class='slider-item'>
        <img src='https://picsum.photos/id/103/500/300' alt='image5'>
      </div>
    </div>
  </div>
</div>
<style>
.slider {
  overflow: hidden;
  width: 500px;
  height: 300px;
}

.slider-container {
  display: flex;
  width: 2500px;
  animation: slider 20s linear infinite;
}

.slider-item {
  flex-shrink: 0;
  width: 500px;
  height: 300px;
}

@keyframes slider {
  from { transform: translateX(0); }
  to { transform: translateX(-2000px); }
}
</style>
<script>
new Vue({
  el: '#app',
  mounted() {
    this.$refs.sliderContainer.style.animationDuration = `${this.duration}s`;
  },
  data() {
    return {
      duration: 20
    };
  }
});
</script>
<h2>代码解析</h2>
<ol>
<li>使用 <code>overflow: hidden</code> 隐藏超出父容器的部分,使得只能看到一个图片;</li>
<li>使用 <code>display: flex</code> 和 <code>flex-shrink: 0</code> 将图片容器排列在一行,不缩小;</li>
<li>使用 <code>animation</code> 属性定义动画,将图片容器从左往右滚动;</li>
<li>使用 <code>@keyframes</code> 定义动画的关键帧;</li>
<li>使用 <code>mounted</code> 钩子函数获取图片容器的引用,设置动画时长;</li>
<li>使用 <code>data</code> 属性定义动画时长,可根据需求自行更改。</li>
</ol>
Vue.js 图片轮播:实现 5 张图片从左到右滚动

原文地址: https://www.cveoy.top/t/topic/lAzd 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录