最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

問(wèn)題描述

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

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

思路分析

  • 我們知道,就前端而言,彈出層是一個(gè)非常基礎(chǔ)的效果功能
  • 目前市面上我們所使用的開(kāi)源組件庫(kù)的,但凡涉及到彈出層功能的,比如dropdownTooltip、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.fzitv.net/javascript/29319297k.htm

  • 既然Autocomplete組件的彈出層出現(xiàn)了錯(cuò)位的問(wèn)題,那么本質(zhì)上來(lái)說(shuō),還是源頭上Popper.js的問(wèn)題
  • 因?yàn)閺棾鰧拥奈恢茫荘opper.js計(jì)算出來(lái)的
  • 所以,當(dāng)彈出層位置錯(cuò)位的時(shí)候,我們只需要讓Popper.js重新計(jì)算一下位置就能恢復(fù)正常了
  • Popper.js的源代碼中有監(jiān)聽(tīng)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)聽(tīng)了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ò)位問(wèn)題(poper.js就是監(jiān)聽(tīng)resize事件重新計(jì)算dom位置的)
        window.dispatchEvent(new Event('resize'))
    }, 340);
}

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

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

相關(guān)文章

  • vue中css如何使用data中的變量

    vue中css如何使用data中的變量

    這篇文章主要介紹了vue中css如何使用data中的變量問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue實(shí)現(xiàn)離線地圖+leaflet+高德瓦片的詳細(xì)代碼

    vue實(shí)現(xiàn)離線地圖+leaflet+高德瓦片的詳細(xì)代碼

    這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)離線地圖+leaflet+高德瓦片的詳細(xì)代碼,Vue Leaflet是一種結(jié)合了Vue框架和Leaflet庫(kù)的前端技術(shù),用于展示和操作天地圖,需要的朋友可以參考下
    2023-10-10
  • vue filter的四種用法小結(jié)

    vue filter的四種用法小結(jié)

    這篇文章主要介紹了vue filter的四種用法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 詳解Vue.js中引入圖片路徑的幾種方式

    詳解Vue.js中引入圖片路徑的幾種方式

    這篇文章主要介紹了Vue.js中引入圖片路徑的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • el-select去掉placeholder屬性的方法

    el-select去掉placeholder屬性的方法

    當(dāng)el-select的disabled屬性為true的時(shí)候不展示“請(qǐng)選擇”字樣,如何去掉el-select 元素的 placeholder 屬性呢,下面小編通過(guò)示例代碼給大家分享el-select如何去掉placeholder屬性,感興趣的朋友一起看看吧
    2023-12-12
  • vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴

    vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴

    這篇文章主要介紹了vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 封裝Vue Element的table表格組件的示例詳解

    封裝Vue Element的table表格組件的示例詳解

    這篇文章主要介紹了封裝Vue Element的table表格組件的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-08-08
  • vue實(shí)現(xiàn)自定義H5視頻播放器的方法步驟

    vue實(shí)現(xiàn)自定義H5視頻播放器的方法步驟

    這篇文章主要介紹了vue實(shí)現(xiàn)自定義H5視頻播放器的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • vite創(chuàng)建的項(xiàng)目如何實(shí)現(xiàn)動(dòng)態(tài)的獲取圖片

    vite創(chuàng)建的項(xiàng)目如何實(shí)現(xiàn)動(dòng)態(tài)的獲取圖片

    在Vite項(xiàng)目中動(dòng)態(tài)獲取圖片,可以創(chuàng)建一個(gè)函數(shù),返回`new URL()`的href,傳入圖片地址和`import.meta.url`,然后將該函數(shù)抽離為公共方法,在定義數(shù)據(jù)時(shí),去掉路徑即可使用
    2026-02-02
  • vue實(shí)例中data使用return包裹的方法

    vue實(shí)例中data使用return包裹的方法

    今天小編就為大家分享一篇vue實(shí)例中data使用return包裹的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08

最新評(píng)論

蓝田县| 连山| 昌都县| 邵东县| 长岭县| 望江县| 平凉市| 西宁市| 张家口市| 金坛市| 中山市| 马尔康县| 聂荣县| 即墨市| 新津县| 兰考县| 天等县| 阳朔县| 建水县| 咸宁市| 新田县| 泌阳县| 宣威市| 瑞金市| 青龙| 卢氏县| 南靖县| 友谊县| 子长县| 宁蒗| 景泰县| 鹿泉市| 马关县| 高唐县| 潜江市| 玉屏| 浠水县| 承德县| 邓州市| 清苑县| 拉萨市|