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

elementPlus中的Autocomplete彈出層錯位問題解決分析

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

問題描述

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

對于這樣的錯位問題,筆者提供一個偏向于源頭的寫法,能夠快速解決問題

思路分析

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

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

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

popper.js的源代碼

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

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

解決方案

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

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彈出建議層錯位問題(poper.js就是監(jiān)聽resize事件重新計算dom位置的)
        window.dispatchEvent(new Event('resize'))
    }, 340);
}

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

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

相關文章

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

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

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

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

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

    vue移動端實現(xiàn)手機左右滑動入場動畫

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

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

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

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

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

    vue項目檢測依賴包是否有使用的問題

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

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

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

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

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

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

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

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

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

最新評論