Popover 组件用于管理弹出框中内容的呈现。您使用弹出框临时呈现信息。弹出框将一直可见,直到用户点击弹出框窗口之外,或者您显式地将其关闭。
包含以下组件
弹出框
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
angle | 布尔值 | true | 渲染弹出框的 "angle"/"corner" |
angleClass | 字符串 | undefined | 要添加到 "angle"/"corner" 元素上的附加 CSS 类 |
backdrop | 布尔值 | true | 启用弹出框背景(弹出框后面半透明的深色图层) |
colors | 对象 | 包含 Tailwind CSS 颜色类的对象 | |
colors.bgIos | 字符串 | 'bg-ios-light-surface-3 dark:bg-ios-dark-surface-3' | |
colors.bgMaterial | 字符串 | 'bg-md-light-surface-3 dark:bg-md-dark-surface-3' | |
component | 字符串 | 'div' | 组件的 HTML 元素 |
opened | 布尔值 | false | 允许打开/关闭弹出框并设置其初始状态 |
size | 字符串 | 'w-64' | Tailwind CSS 尺寸类 |
target | 字符串 | HTMLElement | 引用 | 弹出框的目标元素。弹出框将围绕此元素定位 | |
targetHeight | 数字 | 虚拟目标元素高度(以像素为单位)。在不使用真实目标元素( | |
targetWidth | 数字 | 虚拟目标元素宽度(以像素为单位)。在不使用真实目标元素( | |
targetX | 数字 | 虚拟目标元素相对于屏幕左侧的水平偏移量。在不使用真实目标元素( | |
targetY | 数字 | 虚拟目标元素相对于屏幕顶部的垂直偏移量。在不使用真实目标元素( | |
translucent | 布尔值 | true | 在 iOS 主题中使弹出框背景半透明(使用 |
名称 | 类型 | 描述 |
---|---|---|
backdropclick | function(e) | 背景元素的点击处理程序 |
<template><k-page><k-navbar title="Popover"><template #right><k-linkclass="popover-navbar-link"navbar@click="() => openPopover('.popover-navbar-link')">Popover</k-link></template></k-navbar><k-block class="space-y-4"><p><k-buttonclass="popover-button"@click="() => openPopover('.popover-button')">Open popover on me</k-button></p><p>Mauris fermentum neque et luctus venenatis. Vivamus a sem rhoncus,ornare tellus eu, euismod mauris. In porta turpis at semper convallis.Duis adipiscing leo eu nulla lacinia, quis rhoncus metus condimentum.Etiam nec malesuada nibh. Maecenas quis lacinia nisl, vel posuere dolor.Vestibulum condimentum, nisl ac vulputate egestas, neque enim dignissimelit, rhoncus volutpat magna enim a est. Aenean sit amet ligula neque.Cras suscipit rutrum enim. Nam a odio facilisis, elementum tellus non,{{' '}}<k-linkclass="popover-link-1"@click="() => openPopover('.popover-link-1')">popover </k-link>{{ ' ' }}tortor. Pellentesque felis eros, dictum vitae lacinia quis, lobortisvitae ipsum. Cras vehicula bibendum lorem quis imperdiet.</p><p>In hac habitasse platea dictumst. Etiam varius, ante vel ornarefacilisis, velit massa rutrum dolor, ac porta magna magna lacinia nunc.Curabitur{{ ' ' }}<k-linkclass="popover-link-2"@click="() => openPopover('.popover-link-2')">popover! </k-link>{{ ' ' }}cursus laoreet. Aenean vel tempus augue. Pellentesque in imperdiet nibh.Mauris rhoncus nulla id sem suscipit volutpat. Pellentesque ac arcu innisi viverra pulvinar. Nullam nulla orci, bibendum sed ligula non,ullamcorper iaculis mi. In hac habitasse platea dictumst. Praesentvarius at nisl eu luctus. Cras aliquet porta est. Quisque elementum quisdui et consectetur. Cum sociis natoque penatibus et magnis disparturient montes, nascetur ridiculus mus. Sed sed laoreet purus.Pellentesque eget ante ante.</p><p>Duis et ultricies nibh. Sed facilisis turpis urna, ac imperdiet eratvenenatis eu. Proin sit amet faucibus tortor, et varius sem. Etiam vitaelacinia neque. Aliquam nisi purus, interdum in arcu sed, ultrices rutrumarcu. Nulla mi turpis, consectetur vel enim quis, facilisis viverra dui.Aliquam quis convallis tortor, quis semper ligula. Morbi ullamcorper{{' '}}<k-linkclass="popover-link-3"@click="() => openPopover('.popover-link-3')">one more popover </k-link>{{ ' ' }}massa at accumsan. Etiam purus odio, posuere in ligula vitae, viverraultricies justo. Vestibulum nec interdum nisi. Aenean ac consecteturvelit, non malesuada magna. Sed pharetra vehicula augue, vel venenatislectus gravida eget. Curabitur lacus tellus, venenatis eu arcu in,interdum auctor nunc. Nunc non metus neque. Suspendisse viverra lectussed risus aliquet, vel accumsan dolor feugiat.</p></k-block><k-popover:opened="popoverOpened":target="popoverTargetRef"@backdropclick="() => (popoverOpened = false)"><k-list nested><k-list-itemtitle="Item 1"link@click="() => (popoverOpened = false)"/><k-list-itemtitle="List Item 2"link@click="() => (popoverOpened = false)"/><k-list-itemtitle="Item 3"link@click="() => (popoverOpened = false)"/><k-list-itemtitle="List Item 4"link@click="() => (popoverOpened = false)"/><k-list-itemtitle="Item 5"link@click="() => (popoverOpened = false)"/></k-list></k-popover></k-page></template><script>import { ref } from 'vue';import {kPage,kNavbar,kNavbarBackLink,kPopover,kBlock,kLink,kButton,kList,kListItem,} from 'konsta/vue';export default {components: {kPage,kNavbar,kNavbarBackLink,kPopover,kBlock,kLink,kButton,kList,kListItem,},setup() {const popoverOpened = ref(false);const popoverTargetRef = ref(null);const openPopover = (targetRef) => {popoverTargetRef.value = targetRef;popoverOpened.value = true;};return {popoverOpened,popoverTargetRef,openPopover,};},};</script>