欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

elementPlus中的Autocomplete彈出層錯(cuò)位問題解決分析

 更新時(shí)間:2023年07月25日 14:36:34   作者:水冗水孚  
這篇文章主要介紹了elementPlus中的Autocomplete彈出層錯(cuò)位問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

問題描述

  • 在餓了么UI中有一個(gè)Autocomplete搜索建議輸入框組件,一般這個(gè)組件是用于做遠(yuǎn)程關(guān)聯(lián)搜索的(類似百度一下咱們輸入一個(gè)字,會(huì)提示出相關(guān)的選擇建議)
  • 可是在某些情況下,這個(gè)Autocomplete組件的彈出層部分會(huì)出現(xiàn)錯(cuò)位的情況(Autocomplete組件 = 輸入框部分 + 彈出層部分)
  • 就像下面的這個(gè)效果圖

對(duì)于這樣的錯(cuò)位問題,筆者提供一個(gè)偏向于源頭的寫法,能夠快速解決問題

思路分析

  • 我們知道,就前端而言,彈出層是一個(gè)非?;A(chǔ)的效果功能
  • 目前市面上我們所使用的開源組件庫(kù)的,但凡涉及到彈出層功能的,比如dropdown、Tooltip、Select的彈出層,基本上都是在Popper.js的基礎(chǔ)之上封裝的
  • vue2版本中vue團(tuán)隊(duì)基于Popper.js封裝了一個(gè)vue-popper組件
  • 而餓了么團(tuán)隊(duì)又基于vue-popper組件去封裝成各個(gè)帶有彈出層的組件功能
  • PS:前端組件就是不停的封裝(套殼子)...
  • 筆者也曾經(jīng)基于vue-popper組件封裝了一個(gè)屬于自己的tooltip,大家有空了也可以點(diǎn)擊鏈接去瞅瞅

文章地址:http://www.dbjr.com.cn/javascript/29319297k.htm

  • 既然Autocomplete組件的彈出層出現(xiàn)了錯(cuò)位的問題,那么本質(zhì)上來說,還是源頭上Popper.js的問題
  • 因?yàn)閺棾鰧拥奈恢?,是Popper.js計(jì)算出來的
  • 所以,當(dāng)彈出層位置錯(cuò)位的時(shí)候,我們只需要讓Popper.js重新計(jì)算一下位置就能恢復(fù)正常了
  • Popper.js的源代碼中有監(jiān)聽resize事件,從而計(jì)算出對(duì)應(yīng)的彈出層位置

popper.js的源代碼

筆者去github上扒了一下popper.js的源代碼,簡(jiǎn)單截圖如下:

所以解決方案就有啦...

解決方案

  • 當(dāng)我們的彈出層位置不對(duì)的時(shí)候
  • 我們只需要再次派發(fā)一個(gè)resize事件即可
  • 因?yàn)镻opper.js監(jiān)聽了resize事件,會(huì)自動(dòng)計(jì)算的,相當(dāng)于鉤子函數(shù)
  • 需要讓Popper.js重新計(jì)算一下就能“羅漢歸位”
  • 如何去派發(fā)一個(gè)resize事件呢?很簡(jiǎn)單:

window.dispatchEvent(new Event('resize'))

window.dispatchEvent(new Event('resize'))

window.dispatchEvent(new Event('resize'))

比如以下代碼demo:

const querySearchAsync = (queryString, cb) => {
    setTimeout(() => {
        let apiData = [
            {
                value: '孫悟空',
                id: '111'
            },
            {
                value: '豬八戒',
                id: '222'
            },
            {
                value: '沙和尚',
                id: '333'
            },
        ]
        cb(apiData)
        // 解決el-autocomplete彈出建議層錯(cuò)位問題(poper.js就是監(jiān)聽resize事件重新計(jì)算dom位置的)
        window.dispatchEvent(new Event('resize'))
    }, 340);
}

 注意,要在合適的時(shí)機(jī)去派發(fā)resize事件哦

以上就是elementPlus中的Autocomplete彈出層錯(cuò)位問題解決分析的詳細(xì)內(nèi)容,更多關(guān)于elementPlus Autocomplete彈出層錯(cuò)位的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • vue鼠標(biāo)移入添加class樣式,鼠標(biāo)移出去除樣式(active)實(shí)現(xiàn)方法

    vue鼠標(biāo)移入添加class樣式,鼠標(biāo)移出去除樣式(active)實(shí)現(xiàn)方法

    今天小編就為大家分享一篇vue鼠標(biāo)移入添加class樣式,鼠標(biāo)移出去除樣式(active)實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 一文帶你掌握vue3中偵聽器的使用

    一文帶你掌握vue3中偵聽器的使用

    偵聽器和計(jì)算屬性都可以用于偵聽響應(yīng)式數(shù)據(jù)的變化,如果需要在數(shù)據(jù)變化后執(zhí)行操作,修改依賴項(xiàng),那么就應(yīng)該使用偵聽器,下面就跟隨小編一起來學(xué)習(xí)一下vue3中偵聽器的使用吧
    2023-09-09
  • vue移動(dòng)端實(shí)現(xiàn)手機(jī)左右滑動(dòng)入場(chǎng)動(dòng)畫

    vue移動(dòng)端實(shí)現(xiàn)手機(jī)左右滑動(dòng)入場(chǎng)動(dòng)畫

    這篇文章主要為大家詳細(xì)介紹了vue移動(dòng)端實(shí)現(xiàn)手機(jī)左右滑動(dòng)入場(chǎng)動(dòng)畫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • element-ui圖像組件、上傳組件以及分頁(yè)組件實(shí)現(xiàn)代碼

    element-ui圖像組件、上傳組件以及分頁(yè)組件實(shí)現(xiàn)代碼

    工作中碰到需要多圖上傳,在使用element-ui解決過程中碰到一些問題,在這里分享給大家,這篇文章主要給大家介紹了關(guān)于element-ui圖像組件、上傳組件以及分頁(yè)組件實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • 優(yōu)雅地使用loading(推薦)

    優(yōu)雅地使用loading(推薦)

    這篇文章主要介紹了在Vue和React中如何優(yōu)雅地使用loading,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue項(xiàng)目檢測(cè)依賴包是否有使用的問題

    vue項(xiàng)目檢測(cè)依賴包是否有使用的問題

    這篇文章主要介紹了vue項(xiàng)目檢測(cè)依賴包是否有使用的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue 實(shí)現(xiàn)一個(gè)命令式彈窗組件功能

    Vue 實(shí)現(xiàn)一個(gè)命令式彈窗組件功能

    這篇文章主要介紹了vue實(shí)現(xiàn)命令式彈窗組件功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 五分鐘搞懂Vuex實(shí)用知識(shí)(小結(jié))

    五分鐘搞懂Vuex實(shí)用知識(shí)(小結(jié))

    本篇文章主要介紹了五分鐘搞懂Vuex實(shí)用知識(shí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 深入理解Vue.js3中Reactive的實(shí)現(xiàn)

    深入理解Vue.js3中Reactive的實(shí)現(xiàn)

    reactive是Vue 3的Composition API中的一個(gè)函數(shù),它允許你創(chuàng)建一個(gè)響應(yīng)式的數(shù)據(jù)對(duì)象,本文主要介紹了深入理解Vue.js3中Reactive的實(shí)現(xiàn),感興趣的可以了解一下
    2024-01-01
  • vuex中commit和dispatch的區(qū)別解析

    vuex中commit和dispatch的區(qū)別解析

    commit 和dispatch的區(qū)別在于commit是提交mutatious的同步操作,dispatch是分發(fā)actions的異步操作,本文重點(diǎn)給大家講解vuex中commit和dispatch的區(qū)別,感興趣的朋友一起看看吧
    2024-06-06

最新評(píng)論