前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用vue实现一个轮播图

用vue实现一个轮播图

作者头像
sinnoo
发布2021-07-27 15:31:13
1.3K0
发布2021-07-27 15:31:13
举报
文章被收录于专栏:技术人生

一、首先我们定个三个变量

轮播图数组、当前位置、定时器对象

代码语言:javascript
复制
  data() {
    return {
      data: [
        '../../image/home/banner.jpeg',
        '../../image/home/banner.jpeg',
        '../../image/home/banner.jpeg'
      ],
      currentIndex: 0,
      timer: null,
      islogin: getToken()
    }
  },

二、基本样式

我们定义一个大盒子来包裹,然后子元素一个容纳图片的盒子,一个容纳切换样式的盒子

代码语言:javascript
复制
<template>
  <div class="banner">         
    <div class="item">         
      <img :src="data[currentIndex]">                                                                                                                                                                     
    </div>
    <div class="page" v-if="this.data.length > 1">
      <ul>
        <li @click="gotoPage(prevIndex)">&lt;</li>
        <li v-for="(item,index) in data" @click="gotoPage(index)" :class="{'current':currentIndex == index}">  {{index+1}}</li>
        <li @click="gotoPage(nextIndex)">&gt;</li>
      </ul>                    
    </div>
  </div>
</template> 

目前展示的大概是乱的样子,然后我们来优化样式

三、修复样式

底部进行遮罩样式,分页位于右侧,鼠标滑动显示可点击效果,字体颜色

代码语言:javascript
复制
<style lang="scss" scoped>
.banner {
  position: relative;          
  margin-bottom: 0.7rem;       
    .current {                 
      color: #ff6700;          
    }
    .page {                    
      background: rgba(0,0,0,.5);     
      position: absolute;
      right: 0;                
      bottom: 0;               
      width: 100%;             
        ul{                    
          float: right;        
        }
    }
    ul li {                    
      list-style: none;        
      float: left;             
      width: 30px;             
      height: 40px;            
      line-height: 40px;
      text-align: center;
      cursor: pointer;
      color: rgba(255,255,255,.8);    
      font-size: 14px;
    }
}
.banner img {
  width: 100%;
  max-height: 680px;
}
</style> 

样式处理完,这下就好看多了吧,作为一个后端,对样式并不敏感,所以我喜欢写了基本样式后,用浏览器调试模式进行优化

四、效果实现

这时候我们来处理一些点击事件

4.1用计算属性,获取上页下页的数据

代码语言:javascript
复制
  computed: {                  
    prevIndex() {              
      if (this.currentIndex === 0) {
        return this.data.length - 1
      } else {                 
        return this.currentIndex - 1
      }
    },
    nextIndex() {              
      if (this.currentIndex === this.data.length - 1) {
        return 0               
      } else {                 
        return this.currentIndex + 1
      }
    }
  },

4.2实现点击具体页码的方法

代码语言:javascript
复制
    gotoPage(index) {
      this.currentIndex = index                                                                                                                                                                           
    }

4.3实现定时器方法

代码语言:javascript
复制
    runInv() {                 
      this.timer = setInterval(() => {
        this.gotoPage(this.nextIndex)
      }, 3000)
    },

页面加载的时候需要调用一次

至于鼠标移动上去后,是否定制定时器,个人感觉完全没必要

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档