【微信小程序開發(fā)教程】自定義模態(tài)對話框?qū)嵗?/h1>

微信小程序-****自定義模態(tài)對話框?qū)嵗?/strong>
由于官方API提供的顯示模態(tài)彈窗迄损,只能簡單地顯示文字內(nèi)容,不能對對話框內(nèi)容進(jìn)行自定義,欠缺靈活性妈经,所以自己從模態(tài)彈窗的原理角度來實現(xiàn)了自定義的模態(tài)對話框。

wx.showModal(OBJECT)
自定義
模態(tài)對話框

涉及文件

界面 wxml
樣式 wxcss
事件及方法 js

效果圖


界面代碼**** .wxml
彈窗添加數(shù)量取消確定

樣式**** .wxss

.show-btn {
  margin-top: 100rpx;
  color: #22cc22;
}
.modal-mask {
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  background: #000;
  opacity: 0.5;
  overflow: hidden;
  z-index: 9000;
  color: #fff;
}
.modal-dialog {
  width: 540rpx;
  overflow: hidden;
  position: fixed;
  top: 50%;
  left: 0;
  z-index: 9999;
  background: #f9f9f9;
  margin: -180rpx 105rpx;
  border-radius: 36rpx;
}
.modal-title {
  padding-top: 50rpx;
  font-size: 36rpx;
  color: #030303;
  text-align: center;
}
.modal-content {
  padding: 50rpx 32rpx;
}
.modal-input {
  display: flex;
  background: #fff;
  border: 2rpx solid #ddd;
  border-radius: 4rpx;
  font-size: 28rpx;
}

.input {
  width: 100%;
  height: 82rpx;
  font-size: 28rpx;
  line-height: 28rpx;
  padding: 0 20rpx;
  box-sizing: border-box;
  color: #333;
}
input-holder {
  color: #666;
  font-size: 28rpx;
}
.modal-footer {
  display: flex;
  flex-direction: row;
  height: 86rpx;
  border-top: 1px solid #dedede;
  font-size: 34rpx;
  line-height: 86rpx;
}
.btn-cancel {
  width: 50%;
  color: #666;
  text-align: center;
  border-right: 1px solid #dedede;
}
.btn-confirm {
  width: 50%;
  color: #ec5300;
  text-align: center;
}

事件及方法**** .js

Page({
    data: {
      showModal: false,
    },
    onLoad: function () {
    },
    /**
     * 彈窗
     */
    showDialogBtn: function() {
      this.setData({
        showModal: true
      })
    },
    /**
     * 彈出框蒙層截斷touchmove事件
     */
    preventTouchMove: function () {
    },
    /**
     * 隱藏模態(tài)對話框
     */
    hideModal: function () {
      this.setData({
        showModal: false
      });
    },
    /**
     * 對話框取消按鈕點擊事件
     */
    onCancel: function () {
      this.hideModal();
    },
    /**
     * 對話框確認(rèn)按鈕點擊事件
     */
    onConfirm: function () {
      this.hideModal();
    }
})

實現(xiàn)思路解讀及原理

1捧书、界面解讀: 用一個蒙層+彈窗來組成吹泡,用綁定的數(shù)據(jù){{showModal}}來控制彈窗的顯示和隱藏

2、事件及方法解讀: 讓彈窗顯示的方法:

showDialogBtn: function() {
      this.setData({
        showModal: true
      })
    }

讓彈窗消失的方法:

hideModal: function () {
      this.setData({
        showModal: false
      });
    }

這里有個要特別注意的地方经瓷,就是下面這個方法:

preventTouchMove: function () {
}

為什么是空方法爆哑?因為要結(jié)合界面wxml看,蒙層view里有一個事件綁定catchtouchmove="preventTouchMove"舆吮。這養(yǎng)寫的原因是阻斷事件向下傳遞揭朝,避免在彈窗后還可以點擊或者滑動蒙層下的界面。如果不這樣寫的話色冀,如果主界面是一個可以滾動的界面潭袱,想想看,當(dāng)彈窗彈出的時候用戶還可以操作滾動列表锋恬,我想你的產(chǎn)品經(jīng)理會來找你的屯换。

  1. 樣式解讀:(這個標(biāo)題沒加代碼塊標(biāo)識,但還是像代碼塊一樣被顯示了,這是個bugM凇<巫ァ!- -)

.modal-mask和.modal-dialog樣式的寫法需要特別注意晕窑。
主要是層級關(guān)系抑片,彈窗要保證在最上層,不被界面遮擋杨赤,然后蒙層要遮擋住界面敞斋,但是不可遮擋彈窗。所以.modal-mask和.modal-dialog的z-index值要注意望拖。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者

  • 序言:七十年代末渺尘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子说敏,更是在濱河造成了極大的恐慌鸥跟,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盔沫,死亡現(xiàn)場離奇詭異医咨,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)架诞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門拟淮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谴忧,你說我怎么就攤上這事很泊。” “怎么了沾谓?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵委造,是天一觀的道長。 經(jīng)常有香客問我均驶,道長昏兆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任妇穴,我火速辦了婚禮爬虱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘腾它。我一直安慰自己跑筝,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布瞒滴。 她就那樣靜靜地躺著继蜡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪逛腿。 梳的紋絲不亂的頭發(fā)上稀并,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機(jī)與錄音单默,去河邊找鬼碘举。 笑死,一個胖子當(dāng)著我的面吹牛搁廓,可吹牛的內(nèi)容都是我干的引颈。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼境蜕,長吁一口氣:“原來是場噩夢啊……” “哼蝙场!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粱年,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤售滤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后台诗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體完箩,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年拉队,在試婚紗的時候發(fā)現(xiàn)自己被綠了弊知。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡粱快,死狀恐怖秩彤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情事哭,我是刑警寧澤漫雷,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站慷蠕,受9級特大地震影響珊拼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜流炕,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一澎现、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧每辟,春花似錦剑辫、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春胳岂,著一層夾襖步出監(jiān)牢的瞬間编整,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工乳丰, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留掌测,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓产园,卻偏偏與公主長得像汞斧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子什燕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容