手写轮播图

效果如下:

主要代码:

<template>
  <section class="container">
    <p class="title">轮播图</p>

    <div class="serveArea">
       <div class="baseContent"> 
            <div class="prev">
                <img src="~/assets/images/solution/financeIns/prev.png"  @click="arrowClick('prev')" />
            </div>
            <div class="carousel">
                <div class="carousel">
                    <div class="carouselItem" v-for="(item, index) in casesList" :key="index">
                        <div class="caseInfo" v-show="activeItem === (index+1)">
                            <div class="infoContent">
                                <p class="casesTitle">{{item.title}}</p>        
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="next">
                <img src="~/assets/images/solution/financeIns/next.png" @click="arrowClick('next')"/>
            </div>
        </div>
    </div>
  </section>
</template>

<script>
export default {
  data(){
    return{
        activeItem:1,
        casesList:[
            {
                title:'轮播图1',
            },
            {
                title:'轮播图2',
            },
            {
                title:'轮播图3',
            },
            {
                title:'轮播图4',
            }
        ]
    }
  },
  async asyncData({$axios}){  

  },
  created(){
  },
  async mounted(){

  },
  methods:{
    arrowClick(val) {    
      if(val === 'next') {
          this.activeItem++
          if(this.activeItem > this.casesList.length){
            this.activeItem = 1
          }
      } else {
        this.activeItem--
        if(this.activeItem <=0){
            this.activeItem = this.casesList.length
        }
      }
    },
  }
}
</script>

样式自己写吧,最好也加一下动画,这样左滑右滑就有动效。

知道了activeItem,就可以与 指示器做关联。

如果要自动播放,就做一个定时器,两秒或三秒自动左滑或右滑。

如果需要框架的轮播图,如Element-ui

可以参考我的另外一篇文章

https://blog.csdn.net/qq_35430000/article/details/118092274?spm=1001.2014.3001.5501

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的前端手写轮播图实现思路: 1. HTML 结构中需要一个容器元素,用来包含轮播图。 2. 在该容器元素中,添加多个轮播项,每个轮播项包含一张图片和一段描述文字。 3. 通过 CSS 设置轮播项的样式,包括宽度、高度、位置等。 4. 在 JavaScript 中获取容器元素和轮播项元素,以及左右切换按钮元素。 5. 通过设置 CSS 样式,将当前显示的轮播项置于最前面。 6. 给左右切换按钮元素添加事件监听器,当点击时,通过 JavaScript 移动轮播项的位置,完成切换。 7. 使用定时器 setInterval() 实现自动轮播,每隔一定时间切换到下一个轮播项。 以下是一个简单的前端手写轮播图代码示例: ```html <div class="carousel-container"> <div class="carousel-item active"> <img src="image1.jpg" alt="image1"> <div class="carousel-caption"> <h3>Image 1</h3> <p>Description 1</p> </div> </div> <div class="carousel-item"> <img src="image2.jpg" alt="image2"> <div class="carousel-caption"> <h3>Image 2</h3> <p>Description 2</p> </div> </div> <div class="carousel-item"> <img src="image3.jpg" alt="image3"> <div class="carousel-caption"> <h3>Image 3</h3> <p>Description 3</p> </div> </div> <div class="carousel-item"> <img src="image4.jpg" alt="image4"> <div class="carousel-caption"> <h3>Image 4</h3> <p>Description 4</p> </div> </div> <div class="carousel-item"> <img src="image5.jpg" alt="image5"> <div class="carousel-caption"> <h3>Image 5</h3> <p>Description 5</p> </div> </div> <div class="carousel-prev"></div> <div class="carousel-next"></div> </div> ``` ```css .carousel-container { position: relative; width: 800px; height: 500px; overflow: hidden; } .carousel-item { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: all 1s ease-in-out; } .carousel-item.active { opacity: 1; } .carousel-item img { width: 100%; height: 100%; object-fit: cover; } .carousel-caption { position: absolute; bottom: 0; left: 0; width: 100%; padding: 20px; background-color: rgba(0, 0, 0, 0.5); color: #fff; font-size: 24px; line-height: 1.5; } .carousel-prev, .carousel-next { position: absolute; top: 50%; transform: translateY(-50%); width: 50px; height: 50px; background-color: rgba(0, 0, 0, 0.5); cursor: pointer; } .carousel-prev { left: 0; } .carousel-next { right: 0; } ``` ```javascript const carouselContainer = document.querySelector('.carousel-container'); const carouselItems = document.querySelectorAll('.carousel-item'); const prevBtn = document.querySelector('.carousel-prev'); const nextBtn = document.querySelector('.carousel-next'); let currentIndex = 0; function showItem(index) { carouselItems.forEach(item => { item.classList.remove('active'); }); carouselItems[index].classList.add('active'); } prevBtn.addEventListener('click', () => { currentIndex--; if (currentIndex < 0) { currentIndex = carouselItems.length - 1; } showItem(currentIndex); }); nextBtn.addEventListener('click', () => { currentIndex++; if (currentIndex > carouselItems.length - 1) { currentIndex = 0; } showItem(currentIndex); }); setInterval(() => { currentIndex++; if (currentIndex > carouselItems.length - 1) { currentIndex = 0; } showItem(currentIndex); }, 5000); ``` 这是一个简单的轮播图实现,具体的实现方式可以根据实际需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值