還記得昨篇開箱:前端用戶導覽這樣做~v-onboarding範例應用,其中導覽的框是依賴PopperJS做出來的,那我們今天要介紹在Vue3中可以使用的視窗元件
Vue 3 Popper是一個用來顯示彈出視窗的元件。它是用Vue3編寫的,並使用最新版本的PopperJS
官方網站:https://valgeirb.github.io/vue3-popper/
npm install vue3-popper
或
yarn add vue3-popper
全域
//main.js
import { createApp } from "vue";
import Popper from "vue3-popper";
const app = Vue.createApp({});
app.component("Popper", Popper);
或者
組件內
<template>
<Popper content="...">
...
</Popper>
</template>
<script>
import Popper from "vue3-popper"; // 引用
export default({
components: {
Popper,
},
});
</script>
<template>
<Popper content="This is the Popper content 🍿">
<button>Demo</button>
</Popper>
</template>
<script>
import Popper from "vue3-popper";
export default ({
components: {
Popper,
},
});
</script>
▲▲▲ 若沒有寫css,會是沒有樣式的提示框
所以我們可以加上css,顏色都還可以自行改(可以寫在組件內,或者拉出去寫一個theme.css)
<style>
:root {
--popper-theme-background-color: #ffffff;
--popper-theme-background-color-hover: #ffffff;
--popper-theme-text-color: inherit;
--popper-theme-border-width: 1px;
--popper-theme-border-style: solid;
--popper-theme-border-color: #eeeeee;
--popper-theme-border-radius: 6px;
--popper-theme-padding: 16px;
--popper-theme-box-shadow: 0 6px 30px -6px rgba(0, 0, 0, 0.25);
}
</style>
另外,若不想要使用官方預設的css變數(--popper...),可以使用:deep selector來解決
詳細可看 官方文件I don't want to use CSS variables
成果如下
前往 >> 小試身手
詳細可看 官方文件Reacting to Popper events
詳細可看 官方文件Using scoped slot properties
詳細可看 官方文件Manually controlling the Popper
屬性 | 預設 | 描述 |
---|---|---|
placement | bottom | 彈窗位置 |
disableClickAway | false | 當用戶點擊 Popper 以外的地方時,是否自動關閉 Popper |
offsetSkid | 0 | 沿著觸發元素的像素偏移量 |
offsetDistance | 12 | 離觸發元素的像素偏移量 |
hover | false | 是否在懸停時觸發 Popper |
arrow | false | 是否在 Popper 上顯示箭頭 |
arrowPadding | 0 | 阻止箭頭到達 Popper 的邊緣(以像素為單位) |
disabled | false | 是否禁用 Popper。如果它已經打開,它將被關閉 |
openDelay | 0 | 延遲(毫秒)後打開 Popper |
closeDelay | 0 | 延遲(毫秒)後關閉 Popper |
interactive | true | Popper 應該是互動式的,如果改為flase,則可以透過點擊Popper關閉它(If the Popper should be interactive, it will close when clicked/hovered if false) |
content | null | 如果您的內容只是一個簡單的字符串,您可以將其作為一個 prop 傳遞。 |
show | null | 手動控制Popper,如果設置為true/false ,其他事件(點擊、懸停)將被忽略。 |
zIndex | 9999 | 彈窗的 z-index |
locked | bottom | 鎖定Popper位置,如果設置為true ,當它缺少空間時,它將不會動態翻轉。 |
方法 | 描述 |
---|---|
open:popper | 當 Popper 打開時 |
close:popper | 當 Popper 隱藏時 |
屬性 | 描述 |
---|---|
content | 用於 Popper 內容 |
屬性 | 類型 | 描述 |
---|---|---|
close | function | 一個用於關閉 Popper 的函數 |
isOpen | boolean | Popper 的開放狀態 |
Popper 預設只帶有一些基本樣式。您可以覆蓋這些變數以適應您的需求。
CSS variable | Example value |
---|---|
--popper-theme-background-color | #ffffff |
--popper-theme-background-color-hover | #ffffff |
--popper-theme-text-color | inherit |
--popper-theme-border-width | 1px |
--popper-theme-border-style | solid |
--popper-theme-border-color | #eeeeee |
--popper-theme-border-radius | 6px |
--popper-theme-padding | 16px |
--popper-theme-box-shadow | 0 6px 30px -6px rgba(0, 0, 0, 0.25) |
那我們明天再見了~