javascript - CSS 过渡不向后工作

标签 javascript html css

我有一个标准的不透明动画,但它不能以相反的顺序工作。这是 JSFiddle link .如果我正确理解文档,它应该会自动运行。我是 js 的初学者,所以这是 javascript 中的问题吗?还是 CSS 动画有误?

HTML:

<div id="bg_layer" class="bg_layer"></div>
<div id="clicker" class="grey"></div>
<div id="galery" class="galery" ></div>

JS:

   clicker.onclick = function() {  
document.getElementById("bg_layer").style.opacity = "0.7";
bg_layer.style.visibility = 'visible';
galery.style.visibility = 'visible';
document.getElementById("galery").style.opacity = "1";};
   bg_layer.onclick = function() {
document.getElementById("bg_layer").style.opacity = "0";
bg_layer.style.visibility = 'hidden';
galery.style.visibility = 'hidden';
document.getElementById("galery").style.opacity = "0";
}

CSS:

html{
min-height:100%;
position:relative;}

body {background-image: url(img/wall.jpg);
    background-repeat: repeat;
    margin: 0 0 0 0;
    height: 100%;
}

 .grey {
    float: right;
  background: #d6d6d6;
  width:300px;
  height:300px;
    margin: 20px 0 20px 0;
}

.bg_layer {
    position: absolute;
    visibility: hidden;
    width: 100%;
    height: auto;
    min-height: 100%;
    z-index: 98;
    opacity: 0;
    background: #000000;
    -webkit-transition: opacity 0.5s ease-in-out;
    -moz-transition: opacity 0.5s ease-in-out;
    transition: opacity 0.5s ease-in-out;
}

.galery {
    visibility: hidden;
    position: absolute;
    top: 100px;
    margin: auto;
    width: 170px;
    height: 70px;
    background: #ff0000;
    opacity: 0;
    z-index: 99;
    -webkit-transition: opacity 0.5s ease-in-out;
    -moz-transition: opacity 0.5s ease-in-out;
    transition: opacity 0.5s ease-in-out;
}

最佳答案

将过渡属性从 transition: opacity 0.5s ease-in-out 更改为 transition: all 0.5s ease-in-out 这样任何被改变的样式属性都会开始过渡。

clicker.onclick = function() {  
    document.getElementById("bg_layer").style.opacity = "0.7";
    bg_layer.style.visibility = 'visible';
    galery.style.visibility = 'visible';
    document.getElementById("galery").style.opacity = "1";};

bg_layer.onclick = function() {
    document.getElementById("bg_layer").style.opacity = "0";
    bg_layer.style.visibility = 'hidden';
    galery.style.visibility = 'hidden';
    document.getElementById("galery").style.opacity = "0";
}
html{
    min-height:100%;
    position:relative;
    scroll-behavior: smooth;
}

body {background-image: url(img/wall.jpg);
    background-repeat: repeat;
    margin: 0 0 0 0;
    height: 100%;
}


 .grey {
    float: right;
  background: #d6d6d6;
  width:300px;
  height:300px;
    margin: 20px 0 20px 0;

}



.bg_layer {
    position: absolute;
    visibility: hidden;
    width: 100%;
    height: auto;
    min-height: 100%;
    z-index: 98;
    opacity: 0;
    background: #000000;
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
}

.galery {
    visibility: hidden;
    position: absolute;
    top: 100px;
    margin: auto;
    width: 170px;
    height: 70px;
    background: #ff0000;
    opacity: 0;
    z-index: 99;
    -webkit-transition: all 0.5s ease-in-out;
    -moz-transition: all 0.5s ease-in-out;
    transition: all 0.5s ease-in-out;
}
<div id="bg_layer" class="bg_layer"></div>
<div id="clicker" class="grey"></div>

<div id="galery" class="galery" ></div>

关于javascript - CSS 过渡不向后工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51547796/

相关文章:

javascript - GMap 绘图工具转图像 jpeg [静态 map URL]

javascript - 如何访问 iframe 元素选择器?

javascript - 空间不够时如何让div自下而上展开

javascript - 如何确保我的 javascript 在添加 "..."之前删除空格

javascript - 使用 AmCharts map 时通过点击事件获取值(value)

javascript - Dojo 工具包 - 如何使用函数覆盖 css?

html - 跨表格中的多行图像

c# - 如何使用 HTMLTextWriter 加载 CSS 文件

html - 如何在嵌套列表样式中分隔样式?

javascript - Jquery slideDown() 无法正常工作