最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

實現(xiàn)如下

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

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

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

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

其他方法

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

hidePanel(event) {
  let dom = document.getElementById("child");
  if (dom) {
    if (!dom.contains(event.target)) {
    //這句是說如果我們點擊到了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>

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

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

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

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

當然在 Vue.js 中,v-if 也是執(zhí)行這樣的功能。稍有不同的是在 template 中用 v-if 條件渲染一整組,類似地,同時也可使用 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>

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

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

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

接下來將會為大家詳細介紹兩者的不同:

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

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

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

總結(jié)

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

相關(guān)文章

最新評論

江油市| 湖南省| 五指山市| 桃园县| 衡阳县| 皮山县| 西乌珠穆沁旗| 原平市| 从化市| 冕宁县| 泾川县| 湖北省| 潞城市| 青海省| 盐源县| 广宗县| 深圳市| 通州市| 克什克腾旗| 金昌市| 延安市| 枣庄市| 潢川县| 古丈县| 上高县| 吉安市| 霍林郭勒市| 琼中| 河西区| 洛南县| 兴文县| 宝应县| 诸暨市| 湾仔区| 钦州市| 田东县| 西盟| 讷河市| 历史| 枞阳县| 绿春县|