<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能

        來源:懂視網 責編:小采 時間:2020-11-27 22:14:44
        文檔

        基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能

        基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能:VueSliderShow故名思意,vue的輪播圖組件插件,該插件: 1、支持瀏覽器任意放縮,兼容移動端, 2、支持自動切換,鼠標經過停止切換,分頁/任意頁點擊切換,左右切換, 3、支持文字介紹(超過一行自動省略) 本文講述的是從開發一款基于Vue2x的響應式自適
        推薦度:
        導讀基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能:VueSliderShow故名思意,vue的輪播圖組件插件,該插件: 1、支持瀏覽器任意放縮,兼容移動端, 2、支持自動切換,鼠標經過停止切換,分頁/任意頁點擊切換,左右切換, 3、支持文字介紹(超過一行自動省略) 本文講述的是從開發一款基于Vue2x的響應式自適

        VueSliderShow故名思意,vue的輪播圖組件插件,該插件:

        1、支持瀏覽器任意放縮,兼容移動端,

        2、支持自動切換,鼠標經過停止切換,分頁/任意頁點擊切換,左右切換,

        3、支持文字介紹(超過一行自動省略)

        本文講述的是從開發一款基于Vue2x的響應式自適應輪播組件插件的一個全過程,包含發布到npm,構建自己的npm包,供下載安裝使用的技巧,閱讀本文需要些Vue的語法糖(自定義標簽、計算屬性、父子組件通信等),以及ES6、npm等基礎知識。先來看下Demo

         

        示例源碼地址

        Install

        npm i vueslideshow

        使用示例

        in vue2.x:

        <template>
         //輪播組件的位置
         <div>
         <slider-show :slides="slides" :inv="invTime"></slider-show>
         </div>
        </template>
        <script>
        import sliderShow from 'vueslidershow'
        export default {
         components: {
         sliderShow
         },
         data () {
         return {
         invTime: 2000,
         slides: [
         {
         src: require('../assets/1.jpg'),
         title: '測試測試測試1',
         href: 'detail/analysis'
         }
         ]
         }
         }
        }

        參數說明:

        1.invTime:控制輪播速度

        2.slides:具體的輪播數據數組形式,包含圖片,文字,鏈接三個參數

        3.注意:由于是響應式自適應所以推的圖片必須高度一致

        分割線,下面開始上路,步入主題!!

        寫在前面:vue官網提供了開發插件的介紹,感興趣的老鐵可以先移步官網開發插件,

        創建項目

        0、想必各位老鐵都是有vue和前端經驗的了,這些基礎項目環境和搭建項目,改造初始化的vue項目都是睜眼閉眼的事情了,所以這里都一筆帶過:

        1、vue環境配備,(node、vue-cli)

        2、初始化項目,Vue init webpack vueslideshow。安裝依賴npm install(安裝的時候把vue-router默認一起安裝上去)

        改造初始化項目:

        (0)改造前分析一下我們的需求:一個響應式自適應輪播組件,之所以是組件,是我們希望可以公用的代碼段,支持可動態配置,輪播組件無非就說圖片文字,自動切換,可選擇切換。

        (1)app.vue里清空到如下就好

        <template>
         <div id="app">
         <router-view/>
         </div>
        </template>
        
        <script>
        export default {
         name: 'App'
        }
        </script>

        (2)在components文件夾里,創建index.vue,sliderShow.vue(因為是示例項目,規范上欠佳)讓router文件夾里的index.js啟動頁指向index.vue

        import Vue from 'vue'
        import Router from 'vue-router'
        import Index from '@/components/index'
        
        Vue.use(Router)
        
        export default new Router({
         routes: [
         {
         path: '/',
         component: Index
         }
         ]
        })

        開發項目:

        (1)index.vue作為父組件,通過es6的方式引用輪播組件,聲明使用輪播sliderShow組件,然后給sliderShow組件傳遞兩個 invTime、slides屬性參數,分別是輪播切換時間和數據傳遞,我們這里slides數組,用的是靜態模擬數據,正式環境是通過請求接口請求的數據。

        <template>
         <div>
         <slider-show :slides="slides" :inv="invTime"></slider-show>
         </div>
        </template>
        
        <script>
        import sliderShow from './sliderShow'
        export default {
        components: {
         sliderShow
        },
         data () {
         return {
         invTime: 2000,
         slides: [
         {
         src: require('../assets/1.jpg'),
         title: '測試測試測試1',
         href: 'detail/analysis'
         },
         {
         src: require('../assets/2.jpg'),
         title: '測試測試測試2',
         href: 'detail/count'
         }
         ]
         }
         }
        }

        (2)sliderShow.vue

        模板段代碼讀解(布局這里就略講了),最外層分別有兩個鼠標經過clearInv事件,主要是希望在鼠標經過焦點圖的時候不進行切換方便點圖片跳轉,鼠標移出執行runInv事件繼續自動切換,transition分別去控制兩張圖的出現和消失,左右切換,和點擊具體的分頁切換這里用通用的一個goto()方法轉遞不同值,去判斷具體要展示的數據頁,這個值的計算可以通過vue里的計算屬性。

        <template>
         <div class="slide-show" @mouseover="clearInv" @mouseout="runInv">
         <div class="slide-img">
         <a :href="slides[nowIndex].href" rel="external nofollow" >
         <transition name="slide-fade">
         <img v-if="isShow" :src="slides[nowIndex].src">
         </transition>
         <transition name="slide-fade-old">
         <img v-if="isShows" :src="slides[nowIndex].src">
         </transition>
         </a>
         </div>
         <div class="slide-title"><a>{{ slides[nowIndex].title }}</a></div>
         <ul class="slide-pages">
         <li v-for="(item, index) in slides"
         @click="goto(index)"
         >
         <a :class="{on: index === nowIndex}"></a>
         </li>
         </ul>
         <a @click="goto(prevIndex)" class="callbacks-nav"><</a>
         <a @click="goto(nextIndex)" class="callbacks-nav next">></a>
         </div>
        </template>
        <script>
        export default {
         props: {
         slides: {
         type: Array,
         default: []
         },
         inv: {
         type: Number,
         default: 1000
         }
         },
         data () {
         return {
         nowIndex: 0,
         isShow: true,
         isShows:false
         }
         },
         computed: {
         prevIndex () {
         if (this.nowIndex === 0) {
         return this.slides.length - 1
         }
         else {
         return this.nowIndex - 1
         } 
         },
         nextIndex () {
         if (this.nowIndex === this.slides.length - 1) {
         return 0
         }
         else {
         return this.nowIndex + 1
         }
         }
         },
         methods: {
         goto (index) {
         this.isShow = false
         setTimeout(() => {
         this.nowIndex = index
         this.isShows = true
         }, 10)
        
         },
         runInv () {
         this.invId = setInterval(() => {
         this.goto(this.nextIndex)
         }, this.inv)
         },
         clearInv () {
         clearInterval(this.invId)
         }
         },
         mounted () {
         this.runInv();
         }
        }
        </script>

        ES6邏輯段代碼解讀,sliderShow.vue通過props方式接受父組件里傳遞過來的數據

        props: {
         slides: {
         type: Array,
         default: []
         },
         inv: {
         type: Number,
         default: 1000
         }
         },

        計算屬性,前一頁,這里就控制nowIndex,在當前數據索引里減一,當是第一條數據的時候,我們要跳到最后一條,所以當第一條數據的時候我們這里判斷它并讓他賦值最后一條數據,后一頁和前一頁相似,判斷最后一頁數據,跳到第一頁。

        computed: {
         prevIndex () {
         if (this.nowIndex === 0) {
         return this.slides.length - 1
         }
         else {
         return this.nowIndex - 1
         } 
         },
         nextIndex () {
         if (this.nowIndex === this.slides.length - 1) {
         return 0
         }
         else {
         return this.nowIndex + 1
         }
         }
         },

        通過Index值,從而改變具體數據

        goto (index) {
         this.isShow = false
         setTimeout(() => {
         this.nowIndex = index
         this.isShows = true
         }, 10)
         },

        當頁面加載完后直接執行runInv()方法,然后自動切換,setInterval()/ clearInterval()是js內置的定時器,setInterval()里按照父組件里傳的時間來調用函數的方法,clearInterval()是結束定時器的循環調用函數

        runInv () {
         this.invId = setInterval(() => {
         this.goto(this.nextIndex)
         }, this.inv)
         },
         clearInv () {
         clearInterval(this.invId)
         }
         },
         mounted () {
         this.runInv();
         }

        輪播組件插件就基本上ok了,下面講解一下把這個輪播組件插件放到npm里,構建自己的npm包。

        分割線 npm!!!!!

        構建npm包:

        0、在https://www.npmjs.com創建自己的賬號

        1、新建一個項目文件夾VueSliderShow,把上面的sliderShow.vue文件復制文件。打開cmd進入到VueSliderShow目錄,然后命令行執行:npm init(按流程填寫相關信息,都可以按照自己的實際情況寫),然后會生成一個package.json,例如下面是我這個組件的基本信息

        {
         "name": "vueslideshow",
         "version": "1.0.2",
         "description": "a slider implement by vuejs",
         "main": "index.js",
         "scripts": {
         "test": "echo \"Error: no test specified\" && exit 1"
         },
         "repository": {
         "type": "git",
         "url": "https://github.com/HongqingCao/My-Code/tree/master/VueSliderShow"
         },
         "author": "HongqingCao",
         "license": "ISC"
        }

        2、創建一個index.js

        var sliderShow = require('./sliderShow')
        module.exports = sliderShow

        3、創建一個README.md,描述一下這個組件,可以參考一下我寫的

        # vueslidershow
        > a slider implement by vuejs
        
        >一個vue的響應式自適應輪播圖組件
        
        [Demo](https://github.com/HongqingCao/My-Code/tree/master/VueSliderShow)
        ###### ![實例效果](https://github.com/HongqingCao/My-Code/blob/master/VueSliderShow/VueSlider.gif)
        ## Install
        ``` bash
        npm i vueslideshow
        ```
        ## 應用案例
        #### in vue2.x:
        ```html
        <template>
         <div>
         <slider-show :slides="slides" :inv="invTime"></slider-show>
         </div>
        </template>
        <script>
        import sliderShow from './sliderShow'
        export default {
         components: {
         sliderShow
         },
         data () {
         return {
         invTime: 2000,
         slides: [
         {
         src: require('../assets/1.jpg'),
         title: '測試測試測試1',
         href: 'detail/analysis'
         }
         ]
         }
         }
        }
        ```
        <br>
        ### 參數說明:
         1.invTime,控制輪播速度 
         2.slides,具體的輪播數據數組形式,包含圖片,文字,鏈接三個參數 
         3.由于是響應式自適應所以推的圖片必須高度一致,更友好
        ## License
        [MIT](LICENSE)

        4、命令行npm login,登錄自己的賬號和密碼

         

        5、發布到npm執行命令行: npm publish,成功后你會發現你的npm里已經有一個包了

         

        你可以點擊進入詳情看看

         

        6、嘗試下載安裝在自己項目里:npm i vueslideshow,安裝完后在node_modules就可以看到自己的插件啦

         

        7、應用就如一開始的插件介紹一樣,可以往上看

        最后總結

        從開發到發布一款基于Vue2x的響應式自適應輪播組件插件VueSliderShow,到這里就已經開發完畢,當然里面肯定也有一定的bug在里面,我用了transition去包裹兩個img其實目前是沒用到這個過渡屬性,后期可以各位老鐵自己補一些絢麗的切換動畫,最后再次附上github示例源碼

        以上所述是小編給大家介紹的基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能

        基于Vue2x實現響應式自適應輪播組件插件VueSliderShow功能:VueSliderShow故名思意,vue的輪播圖組件插件,該插件: 1、支持瀏覽器任意放縮,兼容移動端, 2、支持自動切換,鼠標經過停止切換,分頁/任意頁點擊切換,左右切換, 3、支持文字介紹(超過一行自動省略) 本文講述的是從開發一款基于Vue2x的響應式自適
        推薦度:
        標簽: VUE 輪播 插件
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费亚洲视频在线观看| 日本免费人成视频在线观看| 久久ww精品w免费人成| 亚洲精品乱码久久久久久蜜桃| 亚洲中文字幕一区精品自拍| 久久国产精品成人片免费| 亚洲不卡中文字幕无码| 成在人线av无码免费高潮水| 国产精品久免费的黄网站| 国产成人精品日本亚洲18图| 国产免费女女脚奴视频网| 亚洲综合激情另类小说区| 亚洲人成免费网站| 亚洲免费在线播放| 99久久综合精品免费| 久久精品九九亚洲精品| 亚洲视频在线免费观看| 亚洲人成电影在线天堂| 99视频有精品视频免费观看| 91久久亚洲国产成人精品性色| 久久一本岛在免费线观看2020| 亚洲一区二区三区夜色 | 亚洲中文字幕无码一区| 一级免费黄色毛片| 久久精品亚洲乱码伦伦中文| 中国一级特黄的片子免费 | 久久亚洲精品无码AV红樱桃| 午夜视频在线免费观看| 亚洲大尺码专区影院| 丁香花免费高清视频完整版| 亚洲精华国产精华精华液好用| 国产麻豆免费观看91| 看Aⅴ免费毛片手机播放| 国产成人麻豆亚洲综合无码精品| 久久国产精品国产自线拍免费| 亚洲第一成年人网站| 日韩免费一级毛片| 亚洲精品偷拍视频免费观看| 亚洲免费视频网站| 在线精品免费视频| 中文字幕免费观看全部电影|