弹出层 Popup
弹出层组件。
兼容性
- 兼容:✅
- 不兼容:❌
- 未知:❔
H5 | 安卓 | 苹果 | 微信 | 支付宝 | 百度 | 抖音 | 快手 | 飞书 | 京东 | |
---|---|---|---|---|---|---|---|---|---|---|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
小红书 | 鸿蒙 | 360 | 华为快应用 | 快应用联盟 |
---|---|---|---|---|
✅ | ❔ | ❔ | ❔ | ❔ |
插件市场地址
基础使用
- 通过
show
属性设置显示状态。 - 通过
@close
事件监听关闭事件,需手动更新显示状态,组件不自动处理。 - 通过默认
slot
嵌入内容。
vue
<template>
<pure-popup :show="show" @close="show = false">
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
</pure-popup>
</template>
<script setup>
import { ref } from 'vue'
// 显示状态
const show = ref(false);
// 内容
const content = ref(`
<p>君不见,黄河之水天上来,奔流到海不复回。</p>
<p>君不见,高堂明镜悲白发,朝如青丝暮成雪。</p>
<p>人生得意须尽欢,莫使金樽空对月。</p>
<p>天生我材必有用,千金散尽还复来。</p>
<p>烹羊宰牛且为乐,会须一饮三百杯。</p>
<p>岑夫子,丹丘生,将进酒,杯莫停。</p>
<p>与君歌一曲,请君为我倾耳听。</p>
<p>钟鼓馔玉不足贵,但愿长醉不愿醒。</p>
<p>古来圣贤皆寂寞,惟有饮者留其名。</p>
<p>陈王昔时宴平乐,斗酒十千恣欢谑。</p>
<p>主人何为言少钱,径须沽取对君酌。</p>
<p>五花马,千金裘,呼儿将出换美酒,与尔同销万古愁。</p>
`);
</script>
显示Header
- 通过
header
属性设置是否显示Header
。 - 通过
title
属性设置Header
标题。
vue
<template>
<pure-popup :show="show" @close="show = false" header title="《将进酒》">
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
</pure-popup>
</template>
显示Footer
- 通过
footer
属性设置是否显示Footer
。 - 通过
#footer
插槽设置Footer
内容。
重要提示 重要提示 重要提示
popup
的内容定义 class
的时候不要定义成 popup-{xxx}
这样的类名,在快手小程序中会出现莫名奇妙的坑,样式完全乱掉了,不要问我为什么知道的,说多了都是泪~~~
vue
<template>
<pure-popup :show="show" @close="show = false" header title="《将进酒》" footer>
<!-- `class` 不要定义成 `popup-content` | `class` 不要定义成 `popup-content` | `class` 不要定义成 `popup-content` -->
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
<template #footer>
<text class="modal-footer"> 作者: 唐·李白 </text>
</template>
</pure-popup>
</template>
显示关闭按钮
- 通过
close
属性设置是否显示关闭按钮。 - 通过
closeIcon
属性自定义关闭按钮图标。 - 通过
#close
插槽自定义关闭按钮内容。 - 通过添加对应辅助类设置关闭按钮位置:
pure-popup-close-left
: 关闭按钮在左边;pure-popup-close-right
: 关闭按钮在右边,默认;pure-popup-close-bottom
: 关闭按钮在下方;pure-popup-close-top
: 关闭按钮在上方;
提示
vue
<template>
<pure-popup :show="show" @close="show = false" close class="pure-popup-close-bottom">
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
</pure-popup>
</template>
禁止点击遮罩关闭
- 通过
stopCloseOnClickOverlay
属性阻止点击遮罩触发关闭事件。
vue
<template>
<pure-popup :show="show" @close="show = false" stopCloseOnClickOverlay>
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
</pure-popup>
</template>
锁定背景滚动
- 直接给组件添加
@touchmove.stop.prevent=""
和@wheel.stop.prevent=""
事件,即可锁定背景滚动。 - 注意:在某些小程序端,添加对应事件后可能会导致内容也无法滚动。
vue
<template>
<pure-popup :show="show" @close="show = false" @touchmove.stop.prevent="" @wheel.stop.prevent="">
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
</pure-popup>
</template>
内容位置
- 通过添加对应辅助类实现:
pure-popup-left
: 内容左侧弹出;pure-popup-right
: 内容右侧弹出;pure-popup-top
: 内容顶部弹出;pure-popup-bottom
: 内容底部弹出;pure-popup-center
: 内容居中弹出,注意,此居中弹出和默认的效果有点不一样,默认没有弹动效果,此class
右弹动效果;
提示
vue
<template>
<pure-popup :show="show" @close="show = false" close class="pure-popup-center">
<view class="modal-content">
<rich-text :nodes="content"></rich-text>
</view>
</pure-popup>
</template>
自定义过渡动画
- 通过覆写样式变量实现自定义过渡动画,具体查看下方示例.
vue
<template>
<view class="custom-animation">
<pure-popup :show="show" class="custom-popup-animation"></pure-popup>
</view>
</template>
<style lang="scss" scoped>
// 自定义过渡动画写法示例
.custom-popup-animation {
// 过渡动画函数
--pure-popup-transition-timing-function: ease-in-out;
// 显示前的初始状态
--pure-popup-content-before-show-transform: translate(-50%, -50%) scale(0) rotate(0deg);
// 显示中的过渡状态
--pure-popup-content-to-show-transform: translate(-50%, -50%) scale(1.25) rotate(360deg);
// 最终显示状态
--pure-popup-content-show-transform: translate(-50%, -50%) scale(1) rotate(0deg);
// 隐藏前的初始状态
--pure-popup-content-before-hide-transform: translate(-50%, -50%) scale(1) rotate(0deg);
// 隐藏中的过渡状态
--pure-popup-content-to-hide-transform: translate(-50%, -50%) scale(1.25) rotate(360deg);
// 最终隐藏状态
--pure-popup-content-hide-transform: translate(-50%, -50%) scale(0) rotate(0deg);
}
</style>
Props
属性名 | 说明 | 类型 | 默认值 | 可选值 | 版本 |
---|---|---|---|---|---|
hoverClass | 关闭按钮的 hover-class ,同 view 的 hover-class | String | "pure-hover" | - | +1.0.0 |
show | 显示状态 | Boolean | false | true | +1.0.0 |
header | 是否显示Header | Boolean | false | true | +1.0.0 |
footer | 是否显示Footer | Boolean | false | true | +1.0.0 |
close | 是否显示关闭按钮 | Boolean | false | true | +1.0.0 |
overlay | 是否显示遮罩 | Boolean | false | true | +1.0.0 |
title | 标题 | String | - | true | +1.0.0 |
scrollX | 是否可横向滚动 | Boolean | false | true | +1.0.0 |
scrollY | 是否可纵向滚动 | Boolean | true | false | +1.0.0 |
stopCloseOnClickOverlay | 是否阻止点击遮罩触发关闭事件 | Boolean | false | true | +1.0.0 |
showConfirm | 是否显示确认按钮 | Boolean | false | true | +1.0.0 |
showCancel | 是否显示取消按钮 | Boolean | false | true | +1.0.0 |
confirmText | 确认按钮文字 | String | 确认 | - | +1.0.0 |
cancelText | 取消按钮文字 | String | 取消 | - | +1.0.0 |
showScrollbar | 是否显示滚动条 | Boolean | false | - | +1.0.0 |
upperThreshold | 距顶部/左边多远时(单位px ),触发 scrolltoupper 事件,实测快手小程序 scroll-view 无法触发此事件,可能时快手的BUG | [Number, String] | 50 | - | +1.0.0 |
lowerThreshold | 距底部/右边多远时(单位px ),触发 scrolltolower 事件,实测快手小程序 scroll-view 无法触发此事件,不是组件问题,但时用代码模拟实现了该事件 | [Number, String] | 50 | - | +1.0.0 |
refresherEnabled | 开启自定义下拉刷新 | Boolean | false | - | +1.0.0 |
refresherThreshold | 设置自定义下拉刷新阈值 | Number | 45 | - | +1.0.0 |
refresherDefaultStyle | 设置自定义下拉刷新默认样式,支持设置 black ,white ,none ,none 表示不使用默认样式 | String | black | - | +1.0.0 |
refresherBackground | 设置自定义下拉刷新区域背景颜色 | String | #FFF | - | +1.0.0 |
refresherTriggered | 设置当前下拉刷新状态,true 表示下拉刷新已经被触发,false 表示下拉刷新未被触发 | Boolean | false | - | +1.0.0 |
Event
事件名 | 说明 | 回调参数 | 版本 |
---|---|---|---|
close | 关闭事件 | - | +1.0.0 |
confirm | 确认按钮点击事件 | - | +1.0.0 |
cancel | 取消按钮点击事件 | - | +1.0.0 |
scrollUpper | 下拉触顶事件 | - | +1.0.0 |
scrollLower | 上拉触底事件 | - | +1.0.0 |
refresherPulling | 自定义下拉刷新控件被下拉 | - | +1.0.0 |
refresherRefresh | 自定义下拉刷新被触发 | - | +1.0.0 |
refresherRestore | 自定义下拉刷新被复位 | - | +1.0.0 |
refresherAbort | 自定义下拉刷新被中止 | - | +1.0.0 |
Slots
名称 | 说明 | 参数 | 版本 |
---|---|---|---|
#header | Header | - | +1.0.0 |
#footer | Footer | - | +1.0.0 |
#close | 关闭按钮 | - | +1.0.0 |
#default | 默认内容 | - | +1.0.0 |
#confirm | 确认按钮 | - | +1.0.0 |
#cancel | 取消按钮 | - | +1.0.0 |