日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Vue + ts實(shí)現(xiàn)輪播插件的示例

瀏覽:15日期:2022-11-02 13:18:04

背景

最近在學(xué)習(xí) ts,打算用 ts 寫一個(gè)練手項(xiàng)目,參照的網(wǎng)站內(nèi)容是 wanandroid,這個(gè)接觸過android開發(fā)的同學(xué)可能更i了解一些,其實(shí)一開始是打算后臺(tái)全部都自己寫的,不過奈何一個(gè)懶字,所以現(xiàn)在的打算就是自己實(shí)現(xiàn)登錄注冊(cè)簡(jiǎn)單的邏輯。這些都不重要,一開始實(shí)現(xiàn)輪播是打算在 vue 中引入輪播圖 swiper.js,后來想想還是自己寫算了。也當(dāng)作熟悉 ts。先上效果圖(這里沒有動(dòng)態(tài)圖片,各位同學(xué)可以自己實(shí)現(xiàn))

代碼已經(jīng)上傳 git,進(jìn)度比較慢,如果可以各位大佬點(diǎn)個(gè) star。 github.com/jiwenjie/vu…

Vue + ts實(shí)現(xiàn)輪播插件的示例

<!-- vue 實(shí)現(xiàn)輪播圖 --><template> <div : @mouseover='suspend' @mouseout='autoPlay' @blur='suspend' @focus='autoPlay'> <!-- 淡入淡出效果 --> <transition-group tag='ul' :name='animation'> <li v-for='(item, index) in bannerList' :key='item.id' v-show='curIndex === index'> <img :src='http://www.b3g6.com/bcjs/item[nameField]'> </li> </transition-group> <!-- 操作按鈕部分(底部導(dǎo)航器) --> <ul v-if='showPagination'> <li : v-for='(item, index) in bannerList' :key='item.id' @click='jump(item, index)'></li> </ul> <!-- 左側(cè)右側(cè)切換按鈕 --> <template v-if='showBtn'> <div class='common-btn-space pre-btn-space'> <span class='common-btn-span pre-btn-span'></span> </div> <div class='common-btn-space next-btn-space'> <span class='common-btn-span next-btn-span'></span> </div> </template> </div></template><!-- ts 文件拆分 --><script lang='ts'> // 兩種動(dòng)畫背景 import { Component, Prop, Vue } from ’vue-property-decorator’ import swiper from ’./ts/swiper’ @Component({ name: ’Swiper’, mixins: [swiper], }) export default class extends Vue {}</script><!-- 樣式文件拆分 --><style lang='scss' scoped> @import url('./css/swiper.scss');</style>

ts文件

import { Component, Prop, Vue} from ’vue-property-decorator’import { Banner } from ’@/beans/index’ // 首頁banner圖@Component({ name: ’Swiper’, components: {},})export default class IndexPage extends Vue { @Prop({ default: 6000 }) private timeout: number; // 默認(rèn)的切換banner圖的時(shí)長(zhǎng) @Prop({ default: 400 }) private height: number | string; // banner區(qū)域高度 @Prop({ default: () => [] }) private bannerList: Banner[]; // 傳入的圖片數(shù)組 @Prop({ default: ’imagePath’ }) private nameField: string; // 圖片地址對(duì)應(yīng)的字段名 @Prop({ default: true }) private showPagination: boolean; // 是否顯示底部原點(diǎn)分頁器 @Prop({ default: false }) private showBtn: boolean; // 是否顯示左右的切換按鈕 @Prop({ default: ’fade’, validator: function (value) { let arr = [’fade’, ’translate’] return arr.includes(value); } }) private animation: string; // 是否顯示左右的切換按鈕 private timer: any; private curIndex: number = 0; created(): void { this.autoPlay() } // lifecycle hook mounted(): void { } // method private handleSelect() { } // 自動(dòng)播放圖片 private autoPlay() { clearInterval(this.timer)//還是一樣,開啟定時(shí)器之前需要先清除一下,防止bug this.timer = setInterval(this.nextClick, this.timeout as number) } // 切換下一個(gè) banner 圖片 private nextClick() { this.curIndex++; if (this.curIndex >= this.bannerList.length) { this.curIndex = 0; } } // 切換上一個(gè)圖片 private preClick() { this.curIndex++; if (this.curIndex >= this.bannerList.length) { this.curIndex = 0; } } // 暫停的方法 private suspend() { clearInterval(this.timer) } // 點(diǎn)擊底部原點(diǎn)按鈕調(diào)整方法 private jump(bannerItem: Banner, index: number) { this.curIndex = index; } // private animationMethodValidator(): string { // }}

css文件

#swiperDIV { position: relative; display: block; width: 100%;}.img-list { width: 100%; height: 100%; position: relative; margin: 0; padding: 0; z-index: 9;}.img-list li { position: absolute; left: 0; width: 100%; height: 100%;}.img-list img { width: 100%; height: 100%;}.option-list { position: absolute; left: 0; right: 0; bottom: 10px; height: 30px; line-height: 30px; z-index: 99; text-align: center;}.option-list-item { display: inline-block; background-color: rgba(255, 255, 255, .4); width: 10px; height: 10px; border-radius: 50%; margin: 0 3px; cursor: pointer;}.cur-option-style { background-color: #fff;}.common-btn-space { position: absolute; top: 0; bottom: 0; z-index: 99; width: 22px;}.pre-btn-space { left: 20px;}.next-btn-space { right: 20px;}.common-btn-span { display: inline-block; width: 22px; height: 22px; background-color: transparent; cursor: pointer; position: absolute; top: 0; bottom: 0; margin: auto; border-top: 2px solid transparent; border-right: 2px solid transparent; border-bottom: 2px solid red; border-left: 2px solid red;}.pre-btn-span { transform: rotate(45deg);}.next-btn-span { transform: rotate(-135deg);}/* 實(shí)現(xiàn)動(dòng)畫的兩組類(淡入淡出) */.fade-enter-active,.fade-leave-active { transition: opacity .6s;}.fade-enter,.fade-leave-to { opacity: 0;}/* (滾動(dòng)) */.translate-enter { transform: translateX(100%)}.translate-enter-to { transition: all .6s ease; transform: translateX(0);}.translate-leave { transform: translateX(0)}.translate-leave-active { transition: all .6s ease; transform: translateX(-100%)}

很多地方做了配置,包括底部的分頁器,左右兩側(cè)的按鈕。動(dòng)畫目前只實(shí)現(xiàn)了兩種,一種是淡入淡出,一種是平滑滾動(dòng)。

這里我把整個(gè) vue 文件做了拆分。有多種原因,一個(gè)是我司做項(xiàng)目時(shí)整體就是這種拆分,不過我司用的就是正常的 vue 和 js。主要原因就是考慮到頁面復(fù)雜和邏輯交互很多的時(shí)候,一個(gè) vue 文件可能超過萬行,所以做了拆分,這里我也延續(xù)了這種寫法,基本思想其實(shí)就是使用 mixins 引入 ts。還有一個(gè)原因是 ts 在 vue 文件中會(huì)有很多莫名其妙的報(bào)錯(cuò),明明代碼沒問題,但就是有錯(cuò)誤警告。如果提到 ts 文件中就正常,這也是我拆分的一個(gè)原因。

其他的功能可以自己在加,如果有問題可以留言,有錯(cuò)誤希望各位大佬指正。

以上就是Vue + ts實(shí)現(xiàn)輪播插件的示例的詳細(xì)內(nèi)容,更多關(guān)于Vue + ts 輪播插件的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Vue
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲精品小说| 国产精品久久| 日韩中文在线电影| 日韩一区电影| 欧美日韩在线播放视频| 午夜久久福利| 天堂va欧美ⅴa亚洲va一国产| 日韩欧美美女在线观看| 最新国产精品久久久| 日韩中文字幕一区二区高清99| 日韩国产一二三区| 精品国产美女a久久9999| 欧美色图一区| 日韩三级久久| 国产成人精品一区二区三区免费| 色综合www| 伊人精品久久| 日产精品一区二区| 亚洲综合精品| 免费精品一区| 不卡在线一区二区| 日本综合视频| 日产精品一区二区| 最新日韩av| 国产精品xxx在线观看| 欧美日韩尤物久久| 日韩高清在线不卡| 超级白嫩亚洲国产第一| 亚洲综合不卡| 国产中文欧美日韩在线| 91久久在线| 精品国产欧美日韩| 国产精品嫩草99av在线| 国产欧美丝祙| av亚洲免费| 免费在线日韩av| 悠悠资源网久久精品| 国产高清日韩| 性色一区二区| 久久中文字幕一区二区三区| 在线观看免费一区二区| 久久久久亚洲精品中文字幕| 亚洲免费高清| 成人午夜亚洲| 日韩va亚洲va欧美va久久| 久久精品亚洲人成影院| 欧美日韩1区2区3区| 好看的亚洲午夜视频在线| 精品视频亚洲| 青草综合视频| 夜夜精品视频| 亚洲精品一级二级| 国产日韩欧美| 综合国产在线| 99久久久久久中文字幕一区| 国产精品久久久久久久久免费高清| 欧美日韩国产综合网| 超碰99在线| 久久影院资源站| 日韩精品一区二区三区免费视频| 国精品一区二区| 精品视频自拍| 国产精品三p一区二区| 亚洲欧洲日韩| 日韩中文字幕av电影| 久久影视一区| 92国产精品| 福利视频一区| 国产在线不卡一区二区三区| 日韩精选在线| 日韩有码av| 亚洲一二av| 视频在线观看国产精品| 国产主播一区| 99成人超碰| 99精品美女| 蜜臀国产一区| 日韩在线看片| 久久黄色影院| 999国产精品视频| 99久久婷婷| 蜜臀av免费一区二区三区| 欧美手机在线| 欧美成人高清| 久久五月天小说| 日本国产精品| 日韩毛片视频| 麻豆精品蜜桃| 午夜影院欧美| 99视频精品| 免费在线视频一区| 免费在线欧美视频| 日本在线不卡视频一二三区| 日本不卡不码高清免费观看| 欧美一级二级三级视频| 国产精品一国产精品k频道56| 国产精品一区亚洲| 精品久久不卡| 欧美日韩水蜜桃| 欧美成人高清| 热久久久久久久| 欧美日韩 国产精品| 美女视频免费精品| 国产精品蜜芽在线观看| 久久久一二三| 99香蕉国产精品偷在线观看| 麻豆精品91| 日韩不卡手机在线v区| 国产精品一区二区中文字幕| 久久伊人亚洲| 欧美二三四区| 亚洲精品1区2区| 日韩中文字幕一区二区高清99| 91嫩草精品| 国产精品a级| 中国字幕a在线看韩国电影| 久久精品导航| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩av不卡在线观看| 国产精品久久久久久妇女 | 国产日韩1区| 美女av一区| 欧美美女一区| 97成人在线| 国产盗摄——sm在线视频| 久久精品中文| 涩涩涩久久久成人精品| 精品亚洲成人| 在线成人直播| 国产欧美激情| 久久亚洲国产| 91精品国产自产观看在线| 日本一区二区高清不卡| 日韩视频在线一区二区三区| 91成人精品在线| 在线一区视频观看| 亚洲综合图色| 亚洲天堂资源| 日韩福利视频网| 久久久水蜜桃av免费网站| 亚洲综合五月| av中文字幕在线观看第一页| 亚洲最新av| 成人免费电影网址| 国产亚洲第一伦理第一区| 成人久久久久| 欧美久久一区二区三区| 久久国产电影| 久久精品一区二区国产| 视频一区二区不卡| 精品一区二区三区中文字幕视频| 亚洲精品电影| 国产精品99视频| 日韩不卡免费视频| 好吊一区二区三区| 久久中文字幕一区二区三区| 鲁大师成人一区二区三区| 黄色在线网站噜噜噜| 欧美日韩网址| 免播放器亚洲| 99久久亚洲精品| 国产一区二区三区黄网站| 日韩欧美另类中文字幕| 欧美日韩国产综合网| 日本一二区不卡| 国产欧美日韩视频在线| 日韩在线观看一区二区| 日韩中文在线电影| 国产欧美一区二区三区国产幕精品 | 成人午夜网址| 蜜桃久久av一区| 亚洲午夜av| 国产69精品久久| 国产精品一区二区三区美女| 日韩中文字幕麻豆| 欧美在线资源| 欧美日韩尤物久久| 久久av网站| 欧美亚洲二区| 日韩综合小视频| 免费一级片91| 一级欧洲+日本+国产| 99精品在线免费在线观看| av资源中文在线| 成人在线视频免费看| 国产精品白丝久久av网站| 无码日韩精品一区二区免费| 午夜在线精品偷拍| 亚洲一区二区三区高清不卡| 99久久亚洲精品蜜臀| 久久婷婷亚洲| 99精品在线| 三级精品视频| 久久国产免费| 欧美一区二区三区高清视频| 亚洲人成在线网站| 日韩国产一区| 久久久久久久久99精品大| 91精品国产自产在线观看永久∴| 日韩不卡在线|