欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2018年09月29日 16:41:40   作者:會(huì)游泳de哈士奇  
vue如何簡(jiǎn)單的實(shí)現(xiàn)彈框,遮罩,點(diǎn)擊其他區(qū)域關(guān)閉彈框, 簡(jiǎn)單的思路是以一個(gè)div作為遮罩,這篇文章給大家詳細(xì)介紹了vue實(shí)現(xiàn)彈框遮罩點(diǎn)擊其他區(qū)域彈框關(guān)閉及v-if與v-show的區(qū)別介紹,感興趣的朋友一起看看吧

vue如何簡(jiǎn)單的實(shí)現(xiàn)彈框,遮罩,點(diǎn)擊其他區(qū)域關(guān)閉彈框, 簡(jiǎn)單的思路是以一個(gè)div作為遮罩, 控制其的v-if(v-show)即可, 掌握到技巧既可以任意擴(kuò)展。

v-if 是直接刪除dom節(jié)點(diǎn), 就是這個(gè)div就不存在了

v-show 是控制dom的css樣式設(shè)置為 display: none; 來(lái)實(shí)現(xiàn),dom還是存在;

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

maskshow來(lái)控制控制遮罩的顯示隱藏,綁定一個(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)) {
    //這句是說(shuō)如果我們點(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 元素。不過(guò)既然是兩個(gè)不同指令,肯定會(huì)有不同的適用場(chǎng)景,帶著好奇,讓我們?cè)?Vue 官方文檔里一探究竟吧~

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

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

當(dāng)然在 Vue.js 中,v-if 也是執(zhí)行這樣的功能。稍有不同的是在 template 中用 v-if 條件渲染一整組,類(lèi)似地,同時(shí)也可使用 v-else 指令來(lái)表示 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 只是簡(jiǎn)單地切換元素的 display 屬性。
看到這里大家應(yīng)該對(duì) v-if 與 v-show 的區(qū)別有一個(gè)簡(jiǎn)單的概念了。

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

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

所以一般來(lái)說(shuō),v-if 具有更高的切換開(kāi)銷(xiāo),而 v-show 具有更高的初始渲染開(kāi)銷(xiāo)。

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

總結(jié)

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

相關(guān)文章

  • 在Vue中解決跨域問(wèn)題的常用方式

    在Vue中解決跨域問(wèn)題的常用方式

    跨域問(wèn)題是由瀏覽器引起的安全限制,而不是Vue框架本身導(dǎo)致的,Vue本身并不限制跨域訪問(wèn),它只是一個(gè)前端框架,負(fù)責(zé)構(gòu)建用戶界面和處理數(shù)據(jù)邏輯,本文給大家介紹了在Vue中解決跨域問(wèn)題的常用方式,需要的朋友可以參考下
    2023-10-10
  • vue如何從后臺(tái)下載.zip壓縮包文件

    vue如何從后臺(tái)下載.zip壓縮包文件

    這篇文章主要介紹了vue如何從后臺(tái)下載.zip壓縮包文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue-admin-template配置快捷導(dǎo)航的代碼(標(biāo)簽導(dǎo)航欄)

    vue-admin-template配置快捷導(dǎo)航的代碼(標(biāo)簽導(dǎo)航欄)

    這篇文章主要介紹了vue-admin-template配置快捷導(dǎo)航的方法(標(biāo)簽導(dǎo)航欄),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • vue router demo詳解

    vue router demo詳解

    這篇文章主要為大家詳細(xì)介紹了vue router demo演示代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • 解決VUE項(xiàng)目使用Element-ui 下拉組件的驗(yàn)證失效問(wèn)題

    解決VUE項(xiàng)目使用Element-ui 下拉組件的驗(yàn)證失效問(wèn)題

    這篇文章主要介紹了解決VUE項(xiàng)目使用Element-ui 下拉組件的驗(yàn)證失效問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • vue element-ui實(shí)現(xiàn)input輸入框金額數(shù)字添加千分位

    vue element-ui實(shí)現(xiàn)input輸入框金額數(shù)字添加千分位

    這篇文章主要介紹了vue element-ui實(shí)現(xiàn)input輸入框金額數(shù)字添加千分位,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Vue-不允許嵌套式的渲染方法

    Vue-不允許嵌套式的渲染方法

    今天小編就為大家分享一篇Vue-不允許嵌套式的渲染方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue.js實(shí)現(xiàn)一個(gè)瀑布流的組件

    vue.js實(shí)現(xiàn)一個(gè)瀑布流的組件

    這篇文章主要為大家介紹了vue.js實(shí)現(xiàn)一個(gè)瀑布流的組件示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Vue?打包優(yōu)化之externals抽離公共的第三方庫(kù)詳解

    Vue?打包優(yōu)化之externals抽離公共的第三方庫(kù)詳解

    這篇文章主要為大家介紹了Vue?打包優(yōu)化之externals抽離公共的第三方庫(kù)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-06-06
  • vue一個(gè)頁(yè)面實(shí)現(xiàn)音樂(lè)播放器的示例

    vue一個(gè)頁(yè)面實(shí)現(xiàn)音樂(lè)播放器的示例

    這篇文章主要介紹了vue一個(gè)頁(yè)面實(shí)現(xiàn)音樂(lè)播放器的示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02

最新評(píng)論