Vue | 使用Antd Popover氣泡卡片組件時(shí)第一次觸發(fā)時(shí)展示的位置偏移問題

需求

需求很簡單,就是需要當(dāng)用戶鼠標(biāo)懸停在按鈕上時(shí)展示一個(gè)二維碼圖片:


實(shí)現(xiàn)效果圖

剛好這個(gè)項(xiàng)目在用Antd開發(fā),然后就順理成章的翻到了他們的Popover組件:

Popover

點(diǎn)擊/鼠標(biāo)移入元素,彈出氣泡式的卡片浮層。

何時(shí)使用

當(dāng)目標(biāo)元素有進(jìn)一步的描述和相關(guān)操作時(shí),可以收納到卡片中,根據(jù)用戶的操作行為進(jìn)行展現(xiàn)。

看起來很簡單,那我就直接安裝文檔調(diào)用應(yīng)該就行了吧?

<template>
  <a-popover placement="top">
    <template slot="content">
      <img width="100px" src="/public/img/store_QrCode.png" alt="">
    </template>
    <div class="topBanner-btnArea detail-btn detail-top-btn">
      <span><a-icon type="shopping-cart" /> | 立即購買</span>
    </div>
  </a-popover>
</template>

看起來是沒什么問題的,那么讓我們看看效果:


實(shí)現(xiàn)效果1

嗯???為什么第一次觸發(fā)的時(shí)候會顯示在元素的正中間??

這個(gè)問題出現(xiàn)的毫無頭緒,為了修正它上上下下試了各個(gè)父級元素的布局相關(guān),發(fā)現(xiàn)都不行;而且這里彈出的氣泡實(shí)際是在獨(dú)立的一塊iframe里通過js生成的,所以也沒辦法直接修改它的樣式。

瞎試了半天也不能找到頭緒,最后決定回歸文檔。首先是在Popover文檔底部的一行小字去到Tooltip組件看到了相關(guān)的全部api,然后再在全部api里看到有一個(gè)overlayStyle參數(shù)可以設(shè)定氣泡的樣式(注意這個(gè)overlayStyle的參數(shù)類型是Object)。

解決方案

反復(fù)分析發(fā)現(xiàn)問題出在初次渲染的時(shí)候組件未能正確的估計(jì)到圖片的大小,所以會默認(rèn)按照文字顯示,導(dǎo)致氣泡出現(xiàn)在偏移的位置。

那么相應(yīng)的在組件初次加載的時(shí)候就給它指定好寬高即可解決問題。

<template>
  <a-popover placement="top" :overlayStyle="{
    'width': '132px', // 估算好的大小
    'height': '135px', // 高度也應(yīng)該是132px,另外2px是底部小三角箭頭的高度
    }">
    <template slot="content">
      <img width="100px" src="../../../public/img/store_QrCode.png" alt="">
    </template>
    <div class="topBanner-btnArea detail-btn detail-top-btn">
      <span><a-icon type="shopping-cart" /> | 立即購買</span>
    </div>
  </a-popover>
</template>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容