真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖

這篇文章主要介紹了怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖文章都會(huì)有所收獲,下面我們一起來(lái)看看吧。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)與策劃設(shè)計(jì),沂水網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:沂水等地區(qū)。沂水做網(wǎng)站價(jià)格咨詢:028-86922220

1.先展示最終效果:

怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖

2.解決思路

Vue的理念是以數(shù)據(jù)驅(qū)動(dòng)視圖,所以拒絕通過(guò)改變?cè)氐膍argin-top來(lái)實(shí)現(xiàn)滾動(dòng)效果。寫好css樣式,只需改變每張圖片的class即可實(shí)現(xiàn)輪播效果。動(dòng)畫效果交給transition完成。可以將輪播圖看成兩個(gè)(mainSlide和extraSlide),各個(gè)圖片的位置如圖所示:

怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖

3.代碼實(shí)現(xiàn)

各個(gè)slide的樣式:

$width: 800px;   // 容器寬度
$height: 300px;   // 容器高度
$bWidth: 500px;   // 大圖片寬度
$sWidth: $width - $bWidth; // 小圖片寬度
$sHeight: $height / 2; // 小圖片高度
#slider-wrapper{
  width: $width;
  height: $height;
  margin: 0 auto;
  cursor: pointer;
  background: #ddd;
  border-radius: 5px;
  box-shadow: 0 1px 6px rgba(0,0,0,0.117647), 0 1px 4px rgba(0,0,0,0.117647);
  display: flex;
  overflow: hidden;
  div{
    display: inline-block;
  }
}
.main-slide{
  width: $bWidth;
  height: $height;
  float: left;
  transition: all .4s ease;
}
.extra-slide{
  width: $sWidth;
  position: relative;
  .extra-slide-item{
    position: absolute;
    width: $sWidth;
    height: $sHeight;
    left: 0;
    transition: .4s ease-out;
  }
  .extra-slide-top{
    top: -$sHeight;
  }
  .extra-slide-middle-first{
    top: 0;
    z-index: 2
  }
  .extra-slide-middle-second{
    top: $sHeight;
    z-index: 2
  }
  .extra-slide-bottom{
    top: $height
  }
  .extra-slide-hide{
    display: none!important;
  }
}

模板包含兩個(gè)輪播圖:


  
  
          
  

scripts部分,設(shè)置一個(gè)nowIndex,定時(shí)改變nowIndex。所有圖片的class根據(jù)這個(gè)nowIndex來(lái)變化,這里使用了es6的map類型,詳情點(diǎn)擊:https://www.jb51.net/article/111734.htm

export default {
  name: 'slider',
  data: function() {  
    return {
      slideInterval: null,
      nowIndex: 0,
      slideLength: this.slideConfig.length
    }
  },
  props: {
    slideConfig: {
      type: Array
    }
  },
  methods: {
    // 限制index不能超出圖片列表長(zhǎng)度
    resetIndex(i) {
      return i > this.slideLength - 1 ? i - this.slideLength : i
    },
    slideClass(i) {
      let nowIndex = this.nowIndex
      // Map就是key也可以是非字符串的對(duì)象,不用Map多寫幾個(gè) if else 也可以
      let map = new Map([
        [this.resetIndex(nowIndex), 'extra-slide-top'],
        [this.resetIndex(nowIndex + 1), 'extra-slide-middle-first'],
        [this.resetIndex(nowIndex + 2), 'extra-slide-middle-second'],
        [this.resetIndex(nowIndex + 3), 'extra-slide-bottom']
      ])
      // 圖片的class根據(jù)nowIndex的變化而變化
      return map.get(i) ? map.get(i) : 'extra-slide-hide'
    },
    start() {
      // 定時(shí)改變nowIndex
      this.slideInterval = setInterval(() => {
        this.nowIndex = this.nowIndex > this.slideLength - 2 ? 0 : this.nowIndex + 1
        console.log(this.nowIndex)
      }, 2000)
    },
    stop() {
      clearInterval(this.slideInterval)
      this.slideInterval = null
    }
  },
  mounted() {
    this.start()
  },
  destroyed() {
    this.stop()
  }
}

slideConfig,組件的props:

const prefix = '/src/assets/'
const slideConfig = [{
 src: prefix + 's1.jpg',
 title: '圖1',
 desc: '說(shuō)明1'
}, {
 src: prefix + 's2.jpg',
 title: '圖2',
 desc: '說(shuō)明2'
}, {
 src: prefix + 's3.jpg',
 title: '圖3',
 desc: '說(shuō)明3'
}, {
 src: prefix + 's4.jpg',
 title: '圖4',
 desc: '說(shuō)明4'
}, {
 src: prefix + 's5.jpg',
 title: '圖5',
 desc: '說(shuō)明5'
}, {
 src: prefix + 's6.jpg',
 title: '圖6',
 desc: '說(shuō)明6'
}]
export default slideConfig

使用:

關(guān)于“怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站標(biāo)題:怎么使用vue寫一個(gè)簡(jiǎn)書的輪播圖
網(wǎng)站URL:http://weahome.cn/article/pjocio.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部