微信小程序?qū)崿F(xiàn)漂亮的彈窗效果
最近項(xiàng)目里需要實(shí)現(xiàn)一個(gè)帶著logo的美美噠彈窗,可是翻遍小程序的文檔也只能見(jiàn)到wx.showModal這個(gè)丑丑的東西……
場(chǎng)面一度十分尷尬
可是得做啊,要不然產(chǎn)品大姐又要暴走了……
好吧,來(lái)研究一下模態(tài)對(duì)話框的性質(zhì)自己DIY吧~
實(shí)現(xiàn)思路
模態(tài)對(duì)話框之所以被叫做“模態(tài)”,就是因?yàn)樵谒鼜棾龅臅r(shí)候,用戶如果不關(guān)閉這個(gè)對(duì)話框,是無(wú)法對(duì)其他窗口進(jìn)行操作的。
那么這樣一來(lái),我們的思路就很明確了:
1. 構(gòu)建一個(gè)蒙層(mask),使得背景變暗,并且阻止用戶對(duì)對(duì)話框外界面的這里寫代碼片點(diǎn)擊事件;
2. 構(gòu)建一個(gè)對(duì)話框,在需要時(shí)彈出即可(彈出同時(shí)觸發(fā)蒙層)。
示例代碼
.wxml:
<view class="mask" catchtouchmove="preventTouchMove" wx:if="{{showModal}}"></view> <view class="modalDlg" wx:if="{{showModal}}"> <image src="/figures/logo-smile.png"/> <text>歡迎來(lái)到模態(tài)對(duì)話框~</text> <button bindtap="go">點(diǎn)我可以關(guān)掉對(duì)話框</button> </view> <button bindtap="submit">點(diǎn)我彈窗</button>
.wxss:
.mask{ width: 100%; height: 100%; position: fixed; top: 0; left: 0; background: #000; z-index: 9000; opacity: 0.7; } .modalDlg{ width: 580rpx; height: 620rpx; position: fixed; top: 50%; left: 0; z-index: 9999; margin: -370rpx 85rpx; background-color: #fff; border-radius: 36rpx; display: flex; flex-direction: column; align-items: center; }
.js:
Page({ data: { showModal: false }, submit: function() { this.setData({ showModal: true }) }, preventTouchMove: function() { }, go: function() { this.setData({ showModal: false }) } })
需要注意的地方
- 蒙層view中綁定的preventTouchMove函數(shù)是一個(gè)空函數(shù),使用了catch事件,目的就是阻止touchmove這樣一個(gè)冒泡事件繼續(xù)向下傳遞。
- 蒙層的wxss樣式中,指定其大小為100%以占滿整個(gè)屏幕。
- 模態(tài)對(duì)話框與蒙層的wxss樣式中均有z-index屬性,為的是保證對(duì)話框始終浮在蒙層的上方(即對(duì)話框的z-index始終要比蒙層的大)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
iphone safari不支持position fixed的解決方法
最近一直在做移動(dòng)web開(kāi)發(fā),開(kāi)發(fā)過(guò)程中遇到了許多問(wèn)題,mobile safari不支持position: fixed就是一件很頭疼的事情2012-05-05Javascript實(shí)現(xiàn)div層漸隱效果的方法
這篇文章主要介紹了Javascript實(shí)現(xiàn)div層漸隱效果的方法,涉及javascript操作頁(yè)面元素與樣式變化的相關(guān)技巧,需要的朋友可以參考下2015-05-05javascript實(shí)現(xiàn)上傳圖片并預(yù)覽的效果實(shí)現(xiàn)代碼
圖片上傳預(yù)覽,就是在使用文件選擇框選擇了文件之后就可以在頁(yè)面上看見(jiàn)圖片的效果,關(guān)于這個(gè)效果我一直認(rèn)為是無(wú)法做到的2011-04-04JavaScript 函數(shù)的定義-調(diào)用、注意事項(xiàng)
這篇文章主要介紹了JavaScript 函數(shù)的定義-調(diào)用、注意事項(xiàng),需要的朋友可以參考下2017-04-04CountUp.js數(shù)字滾動(dòng)插件使用方法詳解
這篇文章主要為大家詳細(xì)介紹了CountUp.js數(shù)字滾動(dòng)插件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-10-10fastadmin如何讓后臺(tái)的日期顯示成年月日格式(推薦)
FastAdmin是一款基于ThinkPHP5+Bootstrap的極速后臺(tái)開(kāi)發(fā)框架,本文給大家介紹fastadmin的后臺(tái)時(shí)間戳字段如何顯示成年月日的日期格式,感興趣的朋友跟隨小編一起看看吧2023-10-10css+js實(shí)現(xiàn)部分區(qū)域高亮可編輯遮罩層
下面介紹我在項(xiàng)目中實(shí)現(xiàn)的方式,全屏遮罩,部分區(qū)域可操作,需要的朋友可以參考下2014-03-03