位置: IT常识 - 正文

【小程序开发】—— 封装自定义弹窗组件(小程序开发定制)

编辑:rootadmin
【小程序开发】—— 封装自定义弹窗组件 文章目录🍋前言:🍍正文1、探讨需求封装popup自定义弹窗组件2、实战开发弹窗组件2.1 子组件内容 popup.vue文件2.2 父组件引用子组件3、效果图预览3.1 不使用具名插槽的原有样式效果3.2 使用具名插槽之后样式效果🎃专栏分享:🍋前言:

推荐整理分享【小程序开发】—— 封装自定义弹窗组件(小程序开发定制),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:小程序开发费用明细,小程序开发平台,小程序开发一个多少钱啊,小程序开发费用明细,小程序开发平台,小程序开发费用明细,小程序开发商城,小程序开发一个多少钱啊,内容如对您有帮助,希望把文章链接给更多的朋友!

大家好我是不苒,本人男,头像是女朋友照片,很多大佬都以为我是女的,浅浅的解释一下哈哈。很高兴书写博客与大家分享知识。 本片文章主要讲的是,使用uniapp开发背景下,使用Vue的具名插槽封装一个自定义的弹窗组件popup,感兴趣的小伙伴可以学习一下,如果发现本人编写有问题的话,欢迎大家随时来评论区探讨支出问题,我也会及时更正的。

话不多说直接上正文一起来学习一下封装自定义弹窗组件吧!

🍍正文1、探讨需求封装popup自定义弹窗组件

首先我们需要探讨一下,封装自定义的组件都需要什么功能

需要一个半透明灰色的背景,用于区分与非弹窗内容,点击灰色区域也可以关闭弹窗。需要一个关闭按钮和两个操作按钮,一个确定,一个取消。弹窗内容:标题,内容区域,因为是自定义所以都使用了具名插槽,也可以设置默认的显示内容。弹窗的显示位置,本次封装只考虑了居中与页面底部两个常用显示位置。2、实战开发弹窗组件2.1 子组件内容 popup.vue文件<template><view class="mark" v-if="isShow" @click="close"><view :class="bottom?'bottom':'center'" class="content" ><view @click="close"><image class="close" src="../static/close.png" ></image></view><slot name="title"><view class="title">子组件默认标题</view></slot><slot name="body"><text style="font-size: 14px;">确定要取消订单吗?取消之后购物车也将清空。</text></slot><slot name="bottom"><view class="btns"><view class="confirm btn" @click="confirm">确定</view><view class="cancel btn" @click="cancel">取消</view></view></slot></view></view></template><script>export default {props: {isShow: {type: Boolean,default: false},// 子组件接收一个布尔类型的bottom,如果为true则弹窗则在页面的底部,false为默认居中显示bottom: {type: Boolean,default: false}},data() {return{}},methods: {close(){this.$emit('close')},cancel(){this.$emit('cancel')},confirm(){this.$emit('confirm')},}}</script><style lang="scss">.mark {position: fixed;width: 100vw;height: 100vh;background-color: rgba(0, 0, 0, 0.3);left: 0;bottom: 0;top: 0;right: 0;display: flex;justify-content: center;align-items: center;}.bottom{position: absolute;bottom: 0 ;width: 100vw;}.center{width: 80vw;position: relative;}.content{background-color: #fff;border-radius: 20rpx;height: 400rpx;padding: 40rpx;box-sizing: border-box;.close{position:absolute;right:30rpx;top: 20rpx;width: 40rpx;height: 40rpx;}.title{text-align: center;font-weight: 600;height: 50rpx;line-height: 50rpx;margin-bottom: 20rpx;}.btns{bottom: 20px;position: absolute;display: flex;justify-content: space-between;width: 88%;.btn{width: 160rpx;height: 80rpx;text-align: center;line-height: 80rpx;border-radius: 20rpx;}.confirm{background: bisque;}.cancel{background: #ccc;}}}</style>

注意:

本文CSS内容使用了scss语法,不使用的话可以将嵌套的样式拿出即可。

解释说明:

isShow 用于控制弹出层的显示与隐藏,在点击灰色空白区域和右上角关闭按钮,还有确定按钮与取消按钮之后都会关闭弹出层。bottom 用于控制弹出层的显示位置,默认为居中显示methods中向父组件传递了三个方法,分别是关闭弹窗,点击确定按钮,点击取消按钮使用具名插槽,在父组件中可以自定义插槽中的内容,方便不同位置的弹窗显示样式2.2 父组件引用子组件<template><view class="container"><view class="btn" @click="open">显示弹出层</view><popup :isShow='visible' :bottom='true' @close="closeMadle" @cancel="cancel" @confirm="confirm"><template v-slot:title><view class="title">父组件自定义标题</view></template><template v-slot:body><view class="body" >这里是父组件引用子组件,使用具名插槽编写的自定义内容和样式。</view></template></popup></view></template><script>import popup from '../../components/popup.vue'export default {components: {popup},data() {return {visible:false,}},methods: {open(){this.visible = trueuni.hideTabBar()},closeMadle(){this.visible = falseuni.showTabBar()},confirm(){// 这里调用接口执行点击确定后的操作并关闭弹窗console.log('点击了确认按钮')this.visible = false},cancel(){// 点击了取消按钮直接关闭弹窗console.log('点击了取消按钮')this.visible = false},}}</script><style lang="scss>.title{text-align: center;font-weight: 600;height: 50rpx;line-height: 50rpx;margin-bottom: 20rpx;}.body{font-size: 14px;font-weight: 600;color: darkorchid;}</style>

注意:

本文CSS内容使用了scss语法,不使用的话可以将嵌套的样式拿出即可。【小程序开发】—— 封装自定义弹窗组件(小程序开发定制)

解释说明:

引用子组件,并在conponents中注册。bottom 为true用于控制弹出层的弹窗在底部显示,不传默认为居中显示。@语法接收子组件中向父组件传递的三个方法,在父组件methods中定义三个方法做相应的操作。使用具名插槽,自定义插槽中的内容。uni.showTabBar() 和 uni.hideTabBar()两个方法用于控制原生tabbar的显示与隐藏。3、效果图预览3.1 不使用具名插槽的原有样式效果

3.2 使用具名插槽之后样式效果

这里是演示的那个显示在页面底部的弹窗,如果不需要直接将代码片段里的:bottom="true"删掉即可

🎃专栏分享:

小程序项目实战专栏:《uniapp小程序开发》 前端面试专栏地址:《面试必看》

⏳ 名言警句:说能做的,做说过的\textcolor{red} {名言警句:说能做的,做说过的}名言警句:说能做的,做说过的

✨ 原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力!\textcolor{green}{点赞,你的认可是我创作的动力!}点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!\textcolor{green}{收藏,你的青睐是我努力的方向!}收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!\textcolor{green}{评论,你的意见是我进步的财富!}评论,你的意见是我进步的财富!

本文链接地址:https://www.jiuchutong.com/zhishi/300403.html 转载请保留说明!

上一篇:人工智能、机器学习和深度学习有哪些区别?(人工智能机器人的好处)

下一篇:堆和栈详解js(js栈堆的区别)

  • 节能服务公司可以做什么
  • 小额零星开支税前扣除
  • 小规模入账的收入分录
  • 电子承兑凭证
  • 合并报表盈余公积等于母公司盈余公积
  • 部分红冲的发票怎么开
  • 处置使用过的车辆
  • 购买生产原料分录
  • 汇算清缴补缴纳企业所得税会计分录
  • 发票丢了企业所得怎么办
  • 内账应收应付算利润吗
  • 不同税率的增值税如何报税
  • 社保和公积金缴费基数怎么算
  • 支付跨年租金如何处理
  • 利息收入增值税计税依据
  • 个体户国税定额开发票60000元地税要交多少钱?
  • 营改增租赁服务有哪些
  • 物业费的进项税额可以抵扣吗
  • 补交社保如何证明劳动关系
  • 个人出租住房增值税免税政策
  • 出纳收到汇票如何登记
  • 企业所得表怎么填写
  • 一人独资公司设立的条件
  • 接受应税劳务的会计分录
  • 个人其他应收款在贷方表示什么
  • RSync文件备份同步 Linux服务器rsync同步配置图文教程
  • 预提成本的账务处理
  • php数组函数实现机选双色球
  • PACKAGER.EXE - PACKAGER是什么进程 有什么用
  • 固定资产拆除怎么处理
  • 八个与cpu相关的字符
  • 劳务派遣如何做绩效考核
  • 大溪地海岛在什么地方
  • Laravel 5.5 的自定义验证对象/类示例代码详解
  • phpstudy配置https
  • 抵债资产怎么入账
  • 开源代码网站github
  • 微信小程序实现轮播图
  • k8s kubelet
  • 区块链网站模板
  • 投资收益的会计处理
  • 增值税留抵税额科目如何使用
  • 公司抵押贷款的钱,可以转到私人账号
  • mysql子查询效率如何
  • 用于app服务端的加速器
  • 外经证网上查询
  • 建筑业增值税是什么意思
  • 收款金额比开票金额多怎么处理
  • 企业残障金缴纳标准
  • 企业所得税余额为负数
  • 抚恤金的种类有多少种
  • 销售商品房适用的增值税税率是多少
  • 调整以前年度费用如何做分录
  • 应付账款扣除赔偿后开发票吗
  • 发票遗失证明怎么写范文
  • 以前年度应收账款无法收回
  • 建厂房之前需要什么条件
  • 生产成本比主营业务成本大
  • sql行变列有几种方法
  • linux如何挂载iso文件
  • rpm包安装位置
  • 笔记本拔掉硬盘开机没反应
  • win8系统怎么重新安装系统
  • 手机连接电脑win11
  • win7电脑关机后自动开机怎么回事
  • 围绕摄像机旋转怎么设置
  • Android的AsyncTask官方API谷歌翻译版
  • 疯狂冒险王官网
  • Windows下自动备份MongoDB的批处理脚本
  • 计算机图形学和计算机视觉的区别
  • 详解Javascript ES6中的箭头函数(Arrow Functions)
  • nodejs爬取数据
  • android适配器是什么意思
  • node用什么写的
  • javascript 做网页
  • 教育培训行业的发展
  • 独生子女补贴和退休金一起发吗
  • 北京社保个人账户10万元退休金多少
  • 简述纳税人与负税的区别
  • 高新区地税办税服务厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设