Child div 在可见性隐藏的情况下不消失
Child div not disappearing with visibility hidden
我的代码涉及在另一个 div 中有一个 div,当我将它们的可见性都设置为隐藏时,只有 parent div 消失了。在一次调试尝试中,我尝试打印出 child div 的可见性,它有 'visibility: hidden'.
#popup {
visibility: visible;
margin: auto;
position: fixed;
background-color: black;
padding-top: 5px;
padding-bottom: 5px;
padding-left: .5%;
padding-right: .5%;
border-radius: 4px;
left: 14.5%;
top: 20px;
width: 70%;
height: 450px;
}
#redX {
visibility: visible;
position: absolute;
right: 0px;
top: 0px;
width: 35px;
height: 35px;
text-align: center;
font-size: 25px;
font-weight: bold;
color: white;
background-color: red;
transition: .2s color ease-out;
}
------------------------------------------------
// how I control the styles in changePopupVisibility()
var popup = document.getElementById('popup');
var redX = document.getElementById('redX');
var popupOpen = true;
------------------------------------------------
// rX is a variable I use to paste redX in different functions.
var rX = "<div id='redX' onClick='changePopupVisibility()'>X</div><br>";
------------------------------------------------
// How I change visibility when the X has been clicked
function changePopupVisibility() {
popupOpen = !popupOpen;
if (popupOpen) {
redX.style.visibility = "visible";
popup.style.visibility = "visible";
}
else {
redX.style.visibility = "hidden";
popup.style.visibility = "hidden";
}
}
为了防止这有点令人困惑,我在 my website 上放了一个我的意思的工作版本。单击红色 X 一次,所有内容都会消失,但单击单词 "left" 并重试,只有 parent 会消失。
谢谢。
您也可以尝试将不透明度标记为 0 和 1,而不是将可见性标记为隐藏和可见,并将其应用于父级 div。
使用 visibility 将保留尺寸,如果您想使用相同的尺寸,不透明度将反映与 visibility 相同的结果。
function changePopupVisibility() {
popupOpen = !popupOpen;
if (popupOpen) {
popup.style.opacity= 1;
}
else {
popup.style.opacity= 0;
}
}
你应该使用:display: none;
因为它使元素根本不显示并且对布局没有影响,而visibility: hidden;
元素将不可见但仍然占据space 在布局中。
阅读:
更具体地说:
我的代码涉及在另一个 div 中有一个 div,当我将它们的可见性都设置为隐藏时,只有 parent div 消失了。在一次调试尝试中,我尝试打印出 child div 的可见性,它有 'visibility: hidden'.
#popup {
visibility: visible;
margin: auto;
position: fixed;
background-color: black;
padding-top: 5px;
padding-bottom: 5px;
padding-left: .5%;
padding-right: .5%;
border-radius: 4px;
left: 14.5%;
top: 20px;
width: 70%;
height: 450px;
}
#redX {
visibility: visible;
position: absolute;
right: 0px;
top: 0px;
width: 35px;
height: 35px;
text-align: center;
font-size: 25px;
font-weight: bold;
color: white;
background-color: red;
transition: .2s color ease-out;
}
------------------------------------------------
// how I control the styles in changePopupVisibility()
var popup = document.getElementById('popup');
var redX = document.getElementById('redX');
var popupOpen = true;
------------------------------------------------
// rX is a variable I use to paste redX in different functions.
var rX = "<div id='redX' onClick='changePopupVisibility()'>X</div><br>";
------------------------------------------------
// How I change visibility when the X has been clicked
function changePopupVisibility() {
popupOpen = !popupOpen;
if (popupOpen) {
redX.style.visibility = "visible";
popup.style.visibility = "visible";
}
else {
redX.style.visibility = "hidden";
popup.style.visibility = "hidden";
}
}
为了防止这有点令人困惑,我在 my website 上放了一个我的意思的工作版本。单击红色 X 一次,所有内容都会消失,但单击单词 "left" 并重试,只有 parent 会消失。
谢谢。
您也可以尝试将不透明度标记为 0 和 1,而不是将可见性标记为隐藏和可见,并将其应用于父级 div。 使用 visibility 将保留尺寸,如果您想使用相同的尺寸,不透明度将反映与 visibility 相同的结果。
function changePopupVisibility() {
popupOpen = !popupOpen;
if (popupOpen) {
popup.style.opacity= 1;
}
else {
popup.style.opacity= 0;
}
}
你应该使用:display: none;
因为它使元素根本不显示并且对布局没有影响,而visibility: hidden;
元素将不可见但仍然占据space 在布局中。
阅读:
更具体地说: