最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

用vue寫一個仿簡書的輪播圖的示例代碼

 更新時間:2018年03月13日 10:38:59   作者:AIBBSHINBAJI  
本篇文章主要介紹了用vue寫一個仿簡書的輪播圖的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.先展示最終效果:

2.解決思路

Vue的理念是以數(shù)據(jù)驅(qū)動視圖,所以拒絕通過改變元素的margin-top來實現(xiàn)滾動效果。寫好css樣式,只需改變每張圖片的class即可實現(xiàn)輪播效果。動畫效果交給transition完成??梢詫⑤啿D看成兩個(mainSlide和extraSlide),各個圖片的位置如圖所示:

3.代碼實現(xiàn)

各個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;
  }
}

模板包含兩個輪播圖:

<div id="slider-wrapper" @mouseover="stop" @mouseout="start">
  <!-- 輪播圖1,mainSlide -->
  <div class="main-slide" :style="`background: url(${slideConfig[nowIndex].src})`"></div>
  <!-- 輪播圖2,extraSlide -->
  <div class="extra-slide">
    <div class="extra-slide-item" :class="slideClass(i)" v-for="(v, i) in slideConfig" :key="i" :style="`background: url(${v.src}); background-size: cover`"></div>
  </div>
</div>

scripts部分,設(shè)置一個nowIndex,定時改變nowIndex。所有圖片的class根據(jù)這個nowIndex來變化,這里使用了es6的map類型,詳情點擊:http://m.fzitv.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不能超出圖片列表長度
    resetIndex(i) {
      return i > this.slideLength - 1 ? i - this.slideLength : i
    },
    slideClass(i) {
      let nowIndex = this.nowIndex
      // Map就是key也可以是非字符串的對象,不用Map多寫幾個 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() {
      // 定時改變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: '說明1'
}, {
 src: prefix + 's2.jpg',
 title: '圖2',
 desc: '說明2'
}, {
 src: prefix + 's3.jpg',
 title: '圖3',
 desc: '說明3'
}, {
 src: prefix + 's4.jpg',
 title: '圖4',
 desc: '說明4'
}, {
 src: prefix + 's5.jpg',
 title: '圖5',
 desc: '說明5'
}, {
 src: prefix + 's6.jpg',
 title: '圖6',
 desc: '說明6'
}]
export default slideConfig

使用:

<slider :slideConfig="slideConfig" />

2018/3/12 16:55 : slideConfig已修改成Props,提取slider.vue就可以直接用了

gitHub傳送門:https://github.com/bougieL/jianshuslider

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 如何抽象一個Vue公共組件

    如何抽象一個Vue公共組件

    這篇文章主要介紹了如何抽象一個Vue公共組件,以一個數(shù)字鍵盤組件為例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue Promise解決回調(diào)地獄問題實現(xiàn)方法

    Vue Promise解決回調(diào)地獄問題實現(xiàn)方法

    這篇文章主要介紹了Vue Promise解決回調(diào)地獄問題,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路
    2023-01-01
  • vue使用lodash中debounce(防抖函數(shù))的幾種方法實現(xiàn)

    vue使用lodash中debounce(防抖函數(shù))的幾種方法實現(xiàn)

    本文主要介紹了vue使用lodash中debounce(防抖函數(shù))的幾種方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-02-02
  • Vue3?setup?的作用實例詳解

    Vue3?setup?的作用實例詳解

    setup?用來寫組合式?API,從生命周期的角度,相當于取代了?beforeCreate(),這篇文章主要介紹了Vue3?setup?的作用,需要的朋友可以參考下
    2022-12-12
  • vue.config.js常用配置詳解

    vue.config.js常用配置詳解

    這篇文章主要介紹了vue.config.js常用配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • vue中Axios的封裝和API接口的管理示例詳解

    vue中Axios的封裝和API接口的管理示例詳解

    這篇文章主要介紹了vue中Axios的封裝和API接口的管理,主要目的就是在幫助我們簡化代碼和利于后期的更新維護,本文結(jié)合實例代碼給大家介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • Vue中的請求攔截器和響應攔截器用法及說明

    Vue中的請求攔截器和響應攔截器用法及說明

    這篇文章主要介紹了Vue中的請求攔截器和響應攔截器用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • vue?url跳轉(zhuǎn)解析和參數(shù)編碼介紹

    vue?url跳轉(zhuǎn)解析和參數(shù)編碼介紹

    這篇文章主要介紹了vue?url跳轉(zhuǎn)解析和參數(shù)編碼,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue中如何引入jQuery和Bootstrap

    vue中如何引入jQuery和Bootstrap

    本篇文章主要介紹了vue中如何引入jQuery和Bootstrap,詳細的介紹了引入jQuery和Bootstrap的方法,有興趣的可以了解一下。
    2017-04-04
  • vue渲染時閃爍{{}}的問題及解決方法

    vue渲染時閃爍{{}}的問題及解決方法

    v-if和v-show可能是日常開發(fā)中最常用的兩個指令,雖然看上去兩者功能是類似的,但是兩者還是存在很大區(qū)別的。接下來通過本文給大家分享vue渲染時閃爍{{}}的問題及解決方法,感興趣的朋友一起看看吧
    2018-03-03

最新評論

自治县| 高陵县| 新乡县| 雷州市| 渭源县| 体育| 钟祥市| 托克逊县| 固安县| 娱乐| 瑞昌市| 清水河县| 天津市| 隆回县| 宕昌县| 黎川县| 昌平区| 建德市| 东方市| 应城市| 惠水县| 临夏县| 晴隆县| 曲麻莱县| 巴彦淖尔市| 平安县| 山西省| 凉山| 岐山县| 洛宁县| 辽宁省| 黄平县| 泊头市| 潞西市| 东阳市| 满洲里市| 双鸭山市| 涪陵区| 定日县| 巴林左旗| 福州市|