在页面加载时隐藏 div/popup 直到单击按钮
Posted
技术标签:
【中文标题】在页面加载时隐藏 div/popup 直到单击按钮【英文标题】:Hiding div/popup on page load until button click 【发布时间】:2021-10-30 02:20:04 【问题描述】:我在 Vue 中有一个工作模式,但是,模式在页面加载时会在瞬间加载为空,我希望它保持完全隐藏(即使在页面加载时),直到单击按钮。
我在 CSS 中使用 display:none 进行了测试,它可以在页面加载时隐藏它,但是当按下按钮时它仍然完全隐藏。我试图通过将条件样式绑定到 div 来解决这个问题,但仍然没有运气。
如何通过单击按钮保持此模式的功能,同时允许它在页面加载时显示:无?
var vm = new Vue(
el: "#app",
props: ,
data:
showDetailModal: false,
,
methods:
openModal()
console.log(this.showDetailModal);
this.showDetailModal = true;
console.log(this.showDetailModal);
,
);
.modal-vue .overlay
//display: none;
text-align: center;
position: fixed;
z-index: 9998;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .5);
.modal-vue .modal
//display: none;
position: relative;
width: 300px;
z-index: 9999;
margin: 0 auto;
padding: 20px 30px;
background-color: #fff;
.modal-vue .close
position: absolute;
top: 10px;
right: 10px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div @click="openModal()">
Open Modal
</div>
<div class="modal-vue" v-if="showDetailModal" :style="'display: ' + (showDetailModal ? 'block' : 'none')">
<!-- overlay to help with readability of modal -->
<div class="overlay" @click="showDetailModal = false"></div>
<!-- Modal for detail on table cell click event -->
<div class="modal" v-if="showDetailModal">
<button class="close" @click="showDetailModal = false">x</button>
<h3>Testing</h3>
</div>
</div>
</div>
【问题讨论】:
我在 Chrome 中根本看不到加载模式 它没有出现在 sn-p 中,但它出现在我的网站上。我把 sn-p 放在上面来表明,如果你取消注释 display:none 从 CSS 那么它就不会显示,所以我想要实现的是模态在按钮点击时仍然显示,同时显示:none 在页面加载时设置 【参考方案1】:我认为问题在于您在 .modal-vue
上更改了 :style="'display: ' + (showDetailModal ? 'block' : 'none')"
,但在您的 CSS 中将 display: none
定义为 .modal-vue .modal
。
所以你应该这样定义它:
.modal-vue
display: none;
工作示例:
var vm = new Vue(
el: "#app",
props: ,
data:
showDetailModal: false,
,
methods:
openModal()
console.log(this.showDetailModal);
this.showDetailModal = true;
console.log(this.showDetailModal);
,
);
.modal-vue .overlay
//display: none;
text-align: center;
position: fixed;
z-index: 9998;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, .5);
.modal-vue
display: none;
.modal-vue .modal
position: relative;
width: 300px;
z-index: 9999;
margin: 0 auto;
padding: 20px 30px;
background-color: #fff;
.modal-vue .close
position: absolute;
top: 10px;
right: 10px;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
<div @click="openModal()">
Open Modal
</div>
<div class="modal-vue" v-if="showDetailModal" :style="'display: ' + (showDetailModal ? 'block' : 'none')">
<!-- overlay to help with readability of modal -->
<div class="overlay" @click="showDetailModal = false"></div>
<!-- Modal for detail on table cell click event -->
<div class="modal" v-if="showDetailModal">
<button class="close" @click="showDetailModal = false">x</button>
<h3>Testing</h3>
</div>
</div>
</div>
【讨论】:
以上是关于在页面加载时隐藏 div/popup 直到单击按钮的主要内容,如果未能解决你的问题,请参考以下文章