最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:06:44
文檔

vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹

vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹:vue如何簡單的實(shí)現(xiàn)彈框,遮罩,點(diǎn)擊其他區(qū)域關(guān)閉彈框, 簡單的思路是以一個(gè)div作為遮罩, 控制其的v-if(v-show)即可, 掌握到技巧既可以任意擴(kuò)展。 v-if 是直接刪除dom節(jié)點(diǎn), 就是這個(gè)div就不存在了 v-show 是控制dom的css樣式設(shè)置為 display: n
推薦度:
導(dǎo)讀vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹:vue如何簡單的實(shí)現(xiàn)彈框,遮罩,點(diǎn)擊其他區(qū)域關(guān)閉彈框, 簡單的思路是以一個(gè)div作為遮罩, 控制其的v-if(v-show)即可, 掌握到技巧既可以任意擴(kuò)展。 v-if 是直接刪除dom節(jié)點(diǎn), 就是這個(gè)div就不存在了 v-show 是控制dom的css樣式設(shè)置為 display: n

實(shí)現(xiàn)如下

maskshow來控制控制遮罩的顯示隱藏,綁定一個(gè)時(shí)間點(diǎn)擊遮罩的時(shí)候關(guān)閉它

<div class="mask" v-show="maskShow" @click="setMaskShow">
</div>

有一個(gè)彈框它的顯示和遮罩一樣,里面有個(gè)關(guān)閉按鈕也可以關(guān)閉彈框,函數(shù)里只需要將maskShow值取反即可

<div class="child" v-show="maskShow">
 <button @click="setMaskShow">關(guān)閉</button>
</div>

其他方法

點(diǎn)擊時(shí)候觸發(fā)該方法, 判斷點(diǎn)的區(qū)域

hidePanel(event) {
 let dom = document.getElementById("child");
 if (dom) {
 if (!dom.contains(event.target)) {
 //這句是說如果我們點(diǎn)擊到了id為child以外的區(qū)域
 this.maskShow = false;
 }
 }
}

全部代碼如下

<template>
 <div class="father">
 <div class="mask" v-show="maskShow" @click="setMaskShow"></div>
 <div class="child" id="child" v-show="maskShow">
 <button @click="setMaskShow">關(guān)閉</button>
 </div>
 <button @click="setMaskShow">click</button>
 </div>
</template>

<script>
export default {
 data: function(){
 return {
 maskShow: false,
 }
 },
 methods: {
 setMaskShow(){
 this.maskShow = !this.maskShow;
 }
 }
}
</script>

<style>
.father{
 width: 100%;
 height: 100%;
}
.mask{
 width: 100%;
 height: 100%;
 position: fixed;
 top: 0;
 left: 0;
 background: #000;
 opacity: 0.3;
}
button{
 width: 100px;
 height: 40px;
 line-height: 40px;
 text-align: center;
}
.child{
 position: fixed;
 width: 400px;
 height: 400px;
 border: 1px solid #ccc;
 text-align: center;
 line-height: 400px;
 top: calc(50% - 200px);
 left: calc(50% - 200px);
 background: #fff;
}
</style>

下面談?wù)?Vue.js 里 v-if 與 v-show 的區(qū)別

 在 Vue 項(xiàng)目中,v-if 和 v-show 算是兩個(gè)用得很頻繁的指令,很巧的是它倆在表現(xiàn)上也相似,都是動(dòng)態(tài)顯示 DOM 元素。不過既然是兩個(gè)不同指令,肯定會(huì)有不同的適用場景,帶著好奇,讓我們?cè)?Vue 官方文檔里一探究竟吧~

對(duì)于v-if大家應(yīng)該不會(huì)陌生,不管哪種編程語言都會(huì)有 if-else 的流程控制。
例如,在 Java 中:

if (condition) {
 //some code here
} else {
 //some code here, too
}

當(dāng)然在 Vue.js 中,v-if 也是執(zhí)行這樣的功能。稍有不同的是在 template 中用 v-if 條件渲染一整組,類似地,同時(shí)也可使用 v-else 指令來表示 v-if 的 “else塊”:

<div v-if="Math.random() > 0.5">
Now you see me
</div>
<div v-else>
Now you don't
</div>

另一個(gè)用于根據(jù)條件展示元素的選項(xiàng)是 v-show 指令,用法大致一樣:

<h1 v-show=true>Hello!</h1>

不同的是帶有 v-show 的元素始終會(huì)被渲染并保留在 DOM 中。v-show 只是簡單地切換元素的 display 屬性。
看到這里大家應(yīng)該對(duì) v-if 與 v-show 的區(qū)別有一個(gè)簡單的概念了。

接下來將會(huì)為大家詳細(xì)介紹兩者的不同:

v-if 是”真正的”條件渲染,因?yàn)樗鼤?huì)確保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當(dāng)?shù)乇讳N毀和重建。
同時(shí) v-if 也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r(shí),才會(huì)開始渲染條件塊。
相比之下,v-show 就簡單得多——不管初始條件是什么,元素總是會(huì)被渲染,并且只是簡單地基于 CSS 進(jìn)行切換。 

所以一般來說,v-if 具有更高的切換開銷,而 v-show 具有更高的初始渲染開銷。

因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運(yùn)行時(shí)條件不太可能改變,則使用 v-if 更好。

總結(jié)

以上所述是小編給大家介紹的vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹

vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹:vue如何簡單的實(shí)現(xiàn)彈框,遮罩,點(diǎn)擊其他區(qū)域關(guān)閉彈框, 簡單的思路是以一個(gè)div作為遮罩, 控制其的v-if(v-show)即可, 掌握到技巧既可以任意擴(kuò)展。 v-if 是直接刪除dom節(jié)點(diǎn), 就是這個(gè)div就不存在了 v-show 是控制dom的css樣式設(shè)置為 display: n
推薦度:
標(biāo)簽: VUE 介紹 if
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top