微信小程序彈窗組件使用詳解
介紹
最近在開(kāi)發(fā)小程序應(yīng)用, 發(fā)現(xiàn)小程序當(dāng)中有關(guān)于組件的介紹非常的少, 當(dāng)前自己做的項(xiàng)目當(dāng)中,有出現(xiàn)過(guò)這種情況, 所以自己就封裝了一個(gè)小程序的彈窗組件, 現(xiàn)在把自己的心得分享給大家, 大家一起來(lái)學(xué)習(xí)吧
效果圖

需求背景
項(xiàng)目需求是需要在頁(yè)面上通過(guò)點(diǎn)擊按鈕, 然后彈出彈窗蒙層; 因?yàn)樾⌒〕绦虍?dāng)中經(jīng)常會(huì)用到彈窗, 因此這里我直接將彈窗封裝成了一個(gè)組件, 下次使用的時(shí)候,直接調(diào)用就可以了。
實(shí)現(xiàn)步驟
1、在微信小程序當(dāng)中, 在當(dāng)前項(xiàng)目當(dāng)中, 新建一個(gè)component文件夾, 這個(gè)文件夾專(zhuān)門(mén)用來(lái)存放我們要使用的組件, 然后在component文件夾下右擊, 新建文件夾popup, 這里就是我們要用的彈窗組件的文件夾, 再右擊popup文件夾, 選擇新建component, 然后直接輸入popup即可, 小程序內(nèi)部會(huì)為我們自動(dòng)生成.wxss , wxml , json , js等模板文件, 如下圖所示,popup文件夾下的文件為我們的組件,index文件夾下的文件為首頁(yè)上頁(yè)面:

2、popup彈窗組件的代碼部分;
popup.wxml
<view class="wx-popup" style="margin:-{{windowHeight/2}}px 0 0 -{{windowWidth/2}}px" hidden="{{flag}}">
? <view class='popup-container'>
? ? <view class="wx-popup-title">{{title}}</view>
? ? <!-- <view class="wx-popup-con" >{{content}}</view> -->
? ? <view class="wx-popup-con" >
? ? ? <text>{{content_leftText}}</text>
? ? ? <text class="content_money">{{content_money}}</text>
? ? ? <text>{{content_rightText}}</text>
? ? </view>
? ? <view class="wx-popup-btn">
? ? ? <view class="closeBtn">
? ? ? ? <view class="close-popup" bindtap='_close'>
? ? ? ? ? <view>X</view>
? ? ? ? </view>
? ? ? </view>
? ? </view>
? </view>
</view>popup.wxss
.wx-popup {
? position: fixed;
? left: 0;
? bottom: 0;
? top: 0;
? z-index: 2000;
? width: 100%;
? height: 100%;
? background: rgba(0, 0, 0, .6);
}
.popup-container {
? position: fixed;
? left: 10%;
? top: 20%;
? width: 80%;
? max-width: 600rpx;
? border-radius: 20rpx;
? box-sizing: bordre-box;
? background: #fff;
? z-index: 2000;
}
.wx-popup-title {
? width: 100%;
? padding: 28rpx;
? text-align: center;
? font-size: 36rpx;
? font-weight: bold;
? border-bottom: 5rpx solid #9EA3BA;
? box-sizing: border-box;
}
.wx-popup-con {
? margin: 50rpx 10rpx;
? text-align: center;
? padding: 0 86rpx;
}
.wx-popup-con text {
? padding-bottom: 10rpx;
}
.content_money {
? color: #FFB258;
}
.wx-popup-btn {
? display: flex;
? justify-content: space-around;
? margin-bottom: 40rpx;
}
.wx-popup-btn text {
? display: flex;
? align-items: center;
? justify-content: center;
? width: 30%;
? height: 88rpx;
? border: 2rpx solid #ccc;
? border-radius: 88rpx;
}
.wx-popup-btn .closeBtn {
? position: fixed;
? left: 45%;
? bottom: 30%;
}
.wx-popup-btn .close-popup {
? position: relative;
? height: 80rpx;
? width: 80rpx;
? border: 5rpx solid #fff;
? border-radius: 50%;
}
?.wx-popup-btn .close-popup view {
? ?position: absolute;
? ?left: 30%;
? ?top: 8%;
? ?font-size: 50rpx;
? ?color: #fff;
?}popup.js
Component({
? options: {
? ? multipleSlots: true // 在組件定義時(shí)的選項(xiàng)中啟用多slot支持
? },
? /**
? ?* 組件的屬性列表
? ?*/
? properties: {
? ? title: { ? ? ? ? ? ?// 屬性名
? ? ? type: String, ? ? // 類(lèi)型(必填),目前接受的類(lèi)型包括:String, Number, Boolean, Object, Array, null(表示任意類(lèi)型)
? ? ? value: '標(biāo)題' ? ? // 屬性初始值(可選),如果未指定則會(huì)根據(jù)類(lèi)型選擇一個(gè)
? ? },
? ? // 彈窗內(nèi)容
? ? content_leftText: {
? ? ? type: String,
? ? ? value: '內(nèi)容'
? ? },
? ? content_money: {
? ? ? type: String,
? ? ? value: '內(nèi)容'
? ? },
? ? content_rightText: {
? ? ? type: String,
? ? ? value: '內(nèi)容'
? ? },
? },
? /**
? ?* 組件的初始數(shù)據(jù)
? ?*/
? data: {
? ? flag: true,
? },
? /**
? ?* 組件的方法列表
? ?*/
? methods: {
? ? //隱藏彈框
? ? hidePopup: function () {
? ? ? this.setData({
? ? ? ? flag: !this.data.flag
? ? ? })
? ? },
? ? //展示彈框
? ? showPopup () {
? ? ? this.setData({
? ? ? ? flag: !this.data.flag
? ? ? })
? ? },
? ? /*
? ? * triggerEvent 用于觸發(fā)事件
? ? */
? ? _close() {
? ? ? this.triggerEvent("close");
? ? }
? }
})3、完成模板文件的工作后, 接下來(lái)就是在首頁(yè)當(dāng)中對(duì)這個(gè)組件進(jìn)行配置, 在index文件夾當(dāng)中對(duì)index.json文件進(jìn)行配置, 代碼如下:

4、在首頁(yè)當(dāng)中進(jìn)行使用,代碼如下:
<view class="index_popup">
? ? <view class="btn-area">
? ? ? ? <button type="primary" bindtap="showPopup">點(diǎn)擊預(yù)測(cè)價(jià)錢(qián)</button>
? ? </view>
? ? <popup id='popup'
? ? ? ? title='預(yù)測(cè)價(jià)格'?
? ? ? ? content_leftText='您好,預(yù)測(cè)價(jià)格為'
? ? ? ? content_money='{{content_money}}'?
? ? ? ? content_rightText='元 , 預(yù)測(cè)價(jià)格和實(shí)際價(jià)格存在偏差,請(qǐng)耐心等候?qū)I(yè)顧問(wèn)為您服務(wù)。' ?
? ? ? ? bind:close="_close">
? ? </popup>
</view>5、index.wxss的樣式
.index_popup .btn-area button {
? background-image: linear-gradient(to right, rgba(36, 162, 255), rgba(36, 172, 255), rgba(36, 192, 255));
? font-size: 34rpx;
? font-weight: normal;
? border-radius: 50rpx;
? padding: 18rpx 30rpx;
? margin-top: 100rpx;
}6、index.js文件里, 配置對(duì)應(yīng)的點(diǎn)擊事件, 還有操作數(shù)據(jù)
// index.js
// 獲取應(yīng)用實(shí)例
const app = getApp()
Page({
? data: {
? ? content_money: '1000萬(wàn)'
? },
? onReady: function () {
? ? //獲得popup組件
? ? this.popup = this.selectComponent("#popup");
? },
? showPopup() {
? ? this.popup.showPopup();
? },
? //取消事件
? _close() {
? ? console.log('你點(diǎn)擊了關(guān)閉按鈕');
? ? this.popup.hidePopup();
? },
? onLoad() {
? },
})至此, 就全部結(jié)束了, 當(dāng)點(diǎn)擊首頁(yè)index.wxml上的按鈕時(shí), 彈出彈窗組件, 點(diǎn)擊彈窗頁(yè)面下的X按鈕, 可以關(guān)閉彈窗。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于vue實(shí)現(xiàn)移動(dòng)端圓形旋鈕插件效果
最近公司有一個(gè)項(xiàng)目的需要做出旋鈕的效果,旋鈕有十個(gè)檔,根據(jù)手指旋轉(zhuǎn)切換,旋轉(zhuǎn)時(shí)接近最近的檔會(huì)有吸附效果。這篇文章主要介紹了vue實(shí)現(xiàn)移動(dòng)端圓形旋鈕插件效果 ,需要的朋友可以參考下2018-11-11
讓DIV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)
下面小編就為大家?guī)?lái)一篇讓DIV的滾動(dòng)條自動(dòng)滾動(dòng)到最底部的3種方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
javascript阻止scroll事件多次執(zhí)行的思路及實(shí)現(xiàn)
阻止scroll事件多次執(zhí)行主要是為了解決一些常見(jiàn)網(wǎng)頁(yè)特效在js解析時(shí)預(yù)期與效果不同,感興趣的朋友可以了解下2013-11-11
使用JavaScript開(kāi)發(fā)IE瀏覽器本地插件實(shí)例
這篇文章主要介紹了使用JavaScript開(kāi)發(fā)IE瀏覽器本地插件實(shí)例,本文講解使用JS+注冊(cè)表的方式開(kāi)發(fā)一個(gè)IE瀏覽器本地插件,需要的朋友可以參考下2015-02-02
JS實(shí)現(xiàn)來(lái)回出現(xiàn)文字的狀態(tài)欄特效代碼
這篇文章主要介紹了JS實(shí)現(xiàn)來(lái)回出現(xiàn)文字的狀態(tài)欄特效代碼,針對(duì)文字的定義及狀態(tài)欄的定時(shí)顯示等實(shí)現(xiàn)方法備有詳細(xì)的文字說(shuō)明,需要的朋友可以參考下2015-10-10
JavaScript面向?qū)ο笾叽蠡驹瓌t實(shí)例詳解
這篇文章主要介紹了JavaScript面向?qū)ο笾叽蠡驹瓌t,結(jié)合實(shí)例形式詳細(xì)分析了JavaScript面向?qū)ο笃叽蠡驹瓌t,包括單一職責(zé)、開(kāi)閉原則、里氏替換、依賴倒置、接口隔離、迪米特法則及組合/聚合復(fù)用原則,需要的朋友可以參考下2020-05-05
jszip插件實(shí)現(xiàn)圖片打包下載的方法分析
這篇文章主要介紹了jszip插件實(shí)現(xiàn)圖片打包下載的方法,結(jié)合實(shí)例形式分析了JavaScript使用jszip插件依據(jù)圖片列表打包下載zip壓縮文件的相關(guān)操作技巧,需要的朋友可以參考下2023-05-05
javascript間隔定時(shí)器(延時(shí)定時(shí)器)學(xué)習(xí) 間隔調(diào)用和延時(shí)調(diào)用
這篇文章主要介紹了javascript間隔調(diào)用和延時(shí)調(diào)用示例,介紹setInterval方法和clearInterval方法的使用方法,大家參考使用吧2014-01-01
echarts橫向柱狀圖簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于echarts橫向柱狀圖簡(jiǎn)單實(shí)現(xiàn)的相關(guān)資料,ECharts是百度前端開(kāi)發(fā)部開(kāi)發(fā)的一個(gè)開(kāi)源可視化庫(kù),它可以幫助開(kāi)發(fā)者輕松的實(shí)現(xiàn)各種數(shù)據(jù)可視化,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12

