亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue?perfect-scrollbar(特定框架里使用非該框架定制庫/插件)

 更新時間:2023年05月23日 11:53:02   作者:阿蛇  
這篇文章主要為大家介紹了vue?perfect-scrollbar在特定框架里使用一款并非為該框架定制的庫/插件如何實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>

正文

其實,如何在特定框架里使用一款并非為該框架定制的庫/插件,只有兩點:

1.熟悉這個框架

2.熟悉這個庫/插件的工作原理

說完廢話。進入正題。

perfect-scrollbar是一款輕量級的滾動插件,具體介紹詳見其官網(wǎng)你只需要知道它絕對不是為了vue設計的,和vue沒半毛錢關系。

那么如何完美的融合其中呢?

以下是我的步驟

PerfectScrollbar在vue的準備工作

首先,安裝包

npm install perfect-scrollbar --save

其次,引入包。為了能夠在項目中信手拈來的使用而不是每個要用的組件都去引入一遍,我們應該在主入口引入并注冊為自定義指令。

//main.js
//引入核心框架
import Vue from 'vue';
//插件的包
import PerfectScrollbar from 'perfect-scrollbar';
//對應的css
import "perfect-scrollbar/css/perfect-scrollbar.css";
/**
 * @description 自動判斷該更新PerfectScrollbar還是創(chuàng)建它
 * @param {HTMLElement} el - 必填。dom元素
 */
const el_scrollBar = (el) => {
    //在元素上加點私貨,名字隨便取,確保不會和已有屬性重復即可,我取名叫做_ps_
    if (el._ps_ instanceof PerfectScrollbar) {
        el._ps_.update();
    } else {
        //el上掛一份屬性
        el._ps_ = new PerfectScrollbar(el, {
            // 要配什么屬性自己看官網(wǎng),此處不會解釋任何其配置項的含義
            suppressScrollX: true,
        });
    }
};
//接著,自定義Vue指令,指令名你自己隨便編一個,我們假定它叫scrollBar
Vue.directive("scrollBar", {
    //使用inserted鉤子函數(shù)(初次創(chuàng)建dom)獲取使用自定義指令處的dom
    inserted(el, binding, vnode) {
        //判斷其樣式是否存在position 并且position為"fixed", "absolute"或"relative"
        //如果不符合條件,拋個錯誤。當然你也可以拋個警告然順便給其position自動加上"relative"
        //為什么要這么做呢,因為PerfectScrollbar實現(xiàn)原理就是對dom注入兩個div,一個是x軸一個是y軸,他們兩的position都是absolute。
        //對css稍有常識的人都知道,absolute是相對于所有父節(jié)點里設置了position屬性的最近的一個節(jié)點來定位的,為了能夠正確定位,我們要給其設置position屬性
        const rules = ["fixed", "absolute", "relative", "sticky"];
        if (!rules.includes(window.getComputedStyle(el, null).position)) {
            console.error(`perfect-scrollbar所在的容器的position屬性必須是以下之一:${rules.join("、")}`)
        }
        //el上掛一份屬性
        el_scrollBar(el);
    },
    //更新dom的時候
    componentUpdated(el, binding, vnode, oldVnode) {
        //vnode.context其實就是vue實例,這里其實無需實例也直接用Vue的靜態(tài)方法
        //故而也可以寫成Vue.nextTick
        vnode.context.$nextTick(
            () => {
                el_scrollBar(el);
            }
        )
    }
})

至此,我們完成了PerfectScrollbar在vue的準備工作

如何調用

用法相當簡單,在要用到的地方直接寫一個v-scrollBar

//具體組件
<template>
    <div class="container">
        <ul class="list" v-scrollBar>
           <li>巴拉巴拉</li>
           <li>炫光舞法</li>
           <!--想象這里有一堆li-->
           <li>天舞臺</li>
        </ul>
    </div>
</template>
<style lang="less" scoped>
.list{
    position:relative;
    /*不寫高度說明高度自適應,既然高度都無限了根本就不會出現(xiàn)滾動條*/
    height:300px;
}
</style>

是不是很簡單,只要在要用到滾動條的那個ul上面加一個v-scrollBar即可,其余什么都不用操心。

最后,還要注意一下兼容性

據(jù)perfect-scrollbar官網(wǎng)描述。它對ie的支持僅完美支持ie11,然后ie10勉強能用

那么vue是支持到ie9的。我們至少要讓他在ie9上能用

那么現(xiàn)在的這個狀態(tài)直接在ie9上試試。

應該會得到一個類似于Uncaught TypeError: Cannot read property 'add' of undefined的報錯。

perfect-scrollbar 源碼

那么我們打開perfect-scrollbar的源碼看看

有.add的地方就這兩處 都是classList的方法

再來安裝一個包

npm install classlist-polyfill --save

然后在引入perfect-scrollbar包之前(其實在它被實例化之前就行)引入它

//main.js 頭部引包部分改一下
//引入核心框架
import Vue from 'vue';
//classList的墊片
import "classlist-polyfill";
//插件的包
import PerfectScrollbar from 'perfect-scrollbar';
//對應的css
import "perfect-scrollbar/css/perfect-scrollbar.css";

至此大功告成

以上就是vue perfect-scrollbar(特定框架里使用非該框架定制庫/插件)的詳細內容,更多關于vue使用perfect-scrollbar的資料請關注腳本之家其它相關文章!

相關文章

  • Vue3計算屬性是如何實現(xiàn)的

    Vue3計算屬性是如何實現(xiàn)的

    這篇文章主要介紹了Vue3計算屬性是如何實現(xiàn)的,對于任何包含響應式數(shù)據(jù)的復雜邏輯,我們都應該使用計算屬性,更多相關內容需要的小伙伴可以參考一下
    2022-08-08
  • 如何使用vite搭建vue3項目詳解

    如何使用vite搭建vue3項目詳解

    Vite 是一個面向現(xiàn)代瀏覽器的更輕,更快的web應用開發(fā)工具,下面這篇文章主要給大家介紹了關于如何使用vite搭建vue3項目的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • electron實現(xiàn)靜默打印的示例代碼

    electron實現(xiàn)靜默打印的示例代碼

    這篇文章主要介紹了electron實現(xiàn)靜默打印的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • vue實現(xiàn)兩列水平時間軸的示例代碼

    vue實現(xiàn)兩列水平時間軸的示例代碼

    本文主要介紹了vue實現(xiàn)兩列水平時間軸的示例代碼,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Element el-menu中NavMenu的用法

    Element el-menu中NavMenu的用法

    今天封裝一個導航欄的組件,使用的Element的NavMenu組件。遇到一個問題,本文主要介紹了Element el-menu中NavMenu的用法,感興趣的可以了解一下
    2023-04-04
  • vue過渡和animate.css結合使用詳解

    vue過渡和animate.css結合使用詳解

    本篇文章主要介紹了vue過渡和animate.css結合使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue使用axios跨域請求數(shù)據(jù)問題詳解

    vue使用axios跨域請求數(shù)據(jù)問題詳解

    這篇文章主要為大家詳細介紹了vue使用axios跨域請求數(shù)據(jù)的問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 在Vue3中使用provide和inject進行依賴注入的代碼詳解

    在Vue3中使用provide和inject進行依賴注入的代碼詳解

    在現(xiàn)代前端開發(fā)中,Vue.js已經(jīng)成為了非常流行的框架之一,它提供了極大的靈活性和可維護性,今天我們要探討的是Vue?3中的provide和inject功能,這是一種用于在組件樹中進行依賴注入的方法,需要的朋友可以參考下
    2024-06-06
  • Vue+Koa+MongoDB從零打造一個任務管理系統(tǒng)的詳細過程

    Vue+Koa+MongoDB從零打造一個任務管理系統(tǒng)的詳細過程

    這篇文章主要介紹了Vue+Koa+MongoDB從零打造一個任務管理系統(tǒng),本文通過圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • vue里面的el-select綁定默認值方式

    vue里面的el-select綁定默認值方式

    這篇文章主要介紹了vue里面的el-select綁定默認值方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09

最新評論