vue實(shí)現(xiàn)列表無(wú)縫滾動(dòng)效果
本文實(shí)例為大家分享了vue實(shí)現(xiàn)列表無(wú)縫滾動(dòng)效果的具體代碼,供大家參考,具體內(nèi)容如下
1.安裝
npm install vue-seamless-scroll --save
2.在需要使用的組件中引入進(jìn)行配置
import vueSeamlessScroll from "vue-seamless-scroll";
在components中注入
components: { vueSeamlessScroll },3.使用
<template>
? <div class="seamlessRolling" @click="lookClick($event)">
? ? <vue-seamless-scroll :data="msgData" :class-option="classOption">
? ? ? <ul>
? ? ? ? <li v-for="(item, index) in msgData" :key="index">
? ? ? ? ? <span>{{ item.id }}</span>
? ? ? ? ? <span>{{ item.title }}</span>
? ? ? ? ? <span class="handle" :id="item.id" :data-tit="item.title">查看</span>
? ? ? ? </li>
? ? ? </ul>
? ? </vue-seamless-scroll>
? </div>
</template>
<script>
// 這里可以導(dǎo)入其他文件(比如:組件,工具js,第三方插件js,json文件,圖片文件等等)
// 例如:import 《組件名稱》 from '《組件路徑》'
import vueSeamlessScroll from "vue-seamless-scroll";
export default {
? // import引入的組件需要注入到對(duì)象中才能使用
? components: { vueSeamlessScroll },
? data() {
? ? // 這里存放數(shù)據(jù)
? ? return {
? ? ? msgData: [
? ? ? ? {
? ? ? ? ? id: 1,
? ? ? ? ? name: 1,
? ? ? ? ? title: "無(wú)縫滾動(dòng)001",
? ? ? ? },
? ? ? ? {
? ? ? ? ? id: 2,
? ? ? ? ? name: 2,
? ? ? ? ? title: "無(wú)縫滾動(dòng)002",
? ? ? ? },
? ? ? ? {
? ? ? ? ? id: 3,
? ? ? ? ? name: 3,
? ? ? ? ? title: "無(wú)縫滾動(dòng)003",
? ? ? ? },
? ? ? ? {
? ? ? ? ? id: 4,
? ? ? ? ? name: 4,
? ? ? ? ? title: "無(wú)縫滾動(dòng)004",
? ? ? ? },
? ? ? ? {
? ? ? ? ? id: 5,
? ? ? ? ? name: 5,
? ? ? ? ? title: "無(wú)縫滾動(dòng)005",
? ? ? ? },
? ? ? ],
? ? };
? },
? // 計(jì)算屬性 類似于data概念
? computed: {
? ? classOption() {
? ? ? return {
? ? ? ? step: 1, // 數(shù)值越大速度滾動(dòng)越快
? ? ? ? limitMoveNum: 2, // 開始無(wú)縫滾動(dòng)的數(shù)據(jù)量 this.dataList.length
? ? ? ? hoverStop: true, // 是否開啟鼠標(biāo)懸停stop
? ? ? ? direction: 1, // 0向下 1向上 2向左 3向右
? ? ? ? openWatch: true, // 開啟數(shù)據(jù)實(shí)時(shí)監(jiān)控刷新dom
? ? ? ? singleHeight: 0, // 單步運(yùn)動(dòng)停止的高度(默認(rèn)值0是無(wú)縫不停止的滾動(dòng)) direction => 0/1
? ? ? ? singleWidth: 0, // 單步運(yùn)動(dòng)停止的寬度(默認(rèn)值0是無(wú)縫不停止的滾動(dòng)) direction => 2/3
? ? ? ? waitTime: 1000, // 單步運(yùn)動(dòng)停止的時(shí)間(默認(rèn)值1000ms)
? ? ? };
? ? },
? },
? // 監(jiān)控data中的數(shù)據(jù)變化
? watch: {},
? // 方法集合
? methods: {
? ? lookClick(e) {
? ? ? if (e.target.className == "handle") {
? ? ? ? console.log(e.target.id);
? ? ? ? console.log(e.target.dataset.tit);
? ? ? }
? ? },
? },
? // 生命周期 - 創(chuàng)建完成(可以訪問(wèn)當(dāng)前this實(shí)例)
? created() {},
? // 生命周期 - 掛載完成(可以訪問(wèn)DOM元素)
? mounted() {},
? beforeCreate() {}, // 生命周期 - 創(chuàng)建之前
? beforeMount() {}, // 生命周期 - 掛載之前
? beforeUpdate() {}, // 生命周期 - 更新之前
? updated() {}, // 生命周期 - 更新之后
? beforeDestroy() {}, // 生命周期 - 銷毀之前
? destroyed() {}, // 生命周期 - 銷毀完成
? activated() {}, // 如果頁(yè)面有keep-alive緩存功能,這個(gè)函數(shù)會(huì)觸發(fā)
};
</script>
<style lang='scss' >
//@import url(); 引入公共css類
</style>
<style lang='scss' scoped>
//@import url(); 引入公共css類
* {
? padding: 0;
? margin: 0;
}
.seamlessRolling {
? margin: 0 auto;
? width: 300px;
? height: 200px;
? border: 1px solid rgb(165, 76, 76);
? overflow: hidden;
? ul,
? li {
? ? list-style: none;
? }
? li {
? ? height: 60px;
? ? line-height: 60px;
? ? display: flex;
? ? justify-content: space-around;
? ? .handle {
? ? ? cursor: pointer;
? ? }
? }
}
</style>4.配置項(xiàng)說(shuō)明
data中的msgData為所需要實(shí)現(xiàn)滾動(dòng)的列表數(shù)據(jù),計(jì)算屬性computeds中classOption為滾動(dòng)屬性的配置
5.可能會(huì)遇到的問(wèn)題
vue-seamless-scroll是通過(guò)將要實(shí)現(xiàn)滾動(dòng)的數(shù)據(jù)復(fù)制一遍來(lái)實(shí)現(xiàn)無(wú)縫滾動(dòng),當(dāng)需要給每一條數(shù)據(jù)綁定事件時(shí),如果直接綁定,復(fù)制出的數(shù)據(jù)無(wú)法綁定事件??梢酝ㄟ^(guò)事件委托的方式,給列表元素的父元素綁定事件,通過(guò)事件對(duì)象event,獲取到點(diǎn)擊元素的類名進(jìn)行判斷其是否為需要的元素,將綁定事件所需的id綁定為按鈕id,可以通過(guò)event.target.id獲取。或者將所要傳遞的變量綁定為該按鈕的自定義屬性,如data-tit,通過(guò)event.target.dataset.tit獲取。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue中數(shù)據(jù)字典dicts的簡(jiǎn)單說(shuō)明和用法介紹
這篇文章主要給大家介紹了關(guān)于vue中數(shù)據(jù)字典dicts的簡(jiǎn)單說(shuō)明和用法的相關(guān)資料,如果您想在Vue中使用字典查詢,您可以使用Vue的計(jì)算屬性和方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
基于vue-seamless-scroll實(shí)現(xiàn)無(wú)縫滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了基于vue-seamless-scroll實(shí)現(xiàn)無(wú)縫滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
實(shí)例詳解vue.js淺度監(jiān)聽和深度監(jiān)聽及watch用法
這篇文章主要介紹了vue.js淺度監(jiān)聽和深度監(jiān)聽及watch用法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2018-08-08
Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K)
這篇文章主要介紹了Vue包大小優(yōu)化的實(shí)現(xiàn)(從1.72M到94K),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
vue?使用mescroll.js框架實(shí)現(xiàn)下拉加載和上拉刷新功能
這篇文章主要介紹了vue?使用mescroll.js框架?實(shí)現(xiàn)下拉加載和上拉刷新功能,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
詳解Vue微信授權(quán)登錄前后端分離較為優(yōu)雅的解決方案
這篇文章主要介紹了詳解Vue微信授權(quán)登錄前后端分離較為優(yōu)雅的解決方案,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06
element上傳組件循環(huán)引用及簡(jiǎn)單時(shí)間倒計(jì)時(shí)的實(shí)現(xiàn)
這篇文章主要介紹了element上傳組件循環(huán)引用及簡(jiǎn)單時(shí)間倒計(jì)時(shí)的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
Vue組件簡(jiǎn)易模擬實(shí)現(xiàn)購(gòu)物車
這篇文章主要為大家詳細(xì)介紹了Vue組件簡(jiǎn)易模擬實(shí)現(xiàn)購(gòu)物車,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12

