如何使用javascript按类隐藏元素(平滑转换)?

如何使用javascript按类隐藏元素(平滑转换)?,javascript,css-transitions,fadeout,Javascript,Css Transitions,Fadeout,我有一组div共享相同的类(optionClass)。显示器设置为块。当用户单击它们时,执行以下javascript函数,显示更改为none function hideBlockElementsByClass(className) { var elements = document.getElementsByClassName(className); for(i in elements) { elements[i].style.display = "non

我有一组div共享相同的(optionClass)。显示器设置为。当用户单击它们时,执行以下javascript函数,显示更改为none

function hideBlockElementsByClass(className)
{
    var elements = document.getElementsByClassName(className);
    for(i in elements)
    {
        elements[i].style.display = "none";
    }
}
“显示块”和“无”之间的过渡非常粗糙,我想做一个更平滑的过渡。实现这一目标的最佳策略是什么?

试试这种方法

HTML

<div class = "image"  onclick = "eff()"></div>
脚本

function eff() {
    var k = document.getElementsByClassName("image"); 
    k[0].className = "transition";
}
试试这个方法

HTML

<div class = "image"  onclick = "eff()"></div>
脚本

function eff() {
    var k = document.getElementsByClassName("image"); 
    k[0].className = "transition";
}

而Sridhar提供了一个很好的CSS3解决方案,其他方面提到Jquery

在这里,您可以找到一个纯javascript/CSS解决方案:


而Sridhar提供了一个很好的CSS3解决方案,其他方面提到Jquery

在这里,您可以找到一个纯javascript/CSS解决方案:

使用CSS3:

.className { 
 opacity: 0; 
 visibility: hidden;
 -webkit-transition: visibility 0.2s linear,
 opacity 0.2s linear;
 -moz-transition: visibility 0.2s linear,
 opacity 0.2s linear;
 -o-transition: visibility 0.2s linear,
 opacity 0.2s linear; 
}

.className:hover { 
visibility: visible; 
opacity: 1; 
}
使用CSS3:

.className { 
 opacity: 0; 
 visibility: hidden;
 -webkit-transition: visibility 0.2s linear,
 opacity 0.2s linear;
 -moz-transition: visibility 0.2s linear,
 opacity 0.2s linear;
 -o-transition: visibility 0.2s linear,
 opacity 0.2s linear; 
}

.className:hover { 
visibility: visible; 
opacity: 1; 
}

在普通javascript中尝试:(可以在IE10、chrome、firefox、safari、android和ios上使用)


函数hideBlockElementsByClass(类名){
var elements=document.getElementsByClassName(className);
console.log(elements.length)
对于(var i=0;i
在普通javascript中尝试:(适用于IE10、chrome、firefox、safari、android和ios)


函数hideBlockElementsByClass(类名){
var elements=document.getElementsByClassName(className);
console.log(elements.length)
对于(var i=0;i< /代码>您可以尝试转换<代码>不透明度属性,而不是<代码>显示< /代码>(并且显然也相应地更改JS)。您考虑过jQuery?$(''*元素[I] ID))fadeOut(“慢”);人们忘记了Javascript是如何工作的,所有这些简单的Jquery解决方案。在我看来,在JQuery之前先学习Javascript,所以让我们给他一个他问的Javascript答案;)我现在需要纯javascript/css解决方案。使用jQuery只需$(“.optionClass”).fadeOut(1000);您可以尝试转换<代码>不透明度>代码>属性,而不是<代码>显示< /代码>(并且显然也相应地改变了JS)。您考虑过jQuery?$(''*元素[i]?id)):fadeOut(“慢”);人们忘记了Javascript是如何工作的,所有这些简单的Jquery解决方案。在我看来,在JQuery之前先学习Javascript,所以让我们给他一个他问的Javascript答案;)我现在需要纯javascript/css解决方案。使用jQuery只需$(“.optionClass”).fadeOut(1000);对于纯javascript,您提供的链接非常棒。感谢对于纯javascript,您提供的链接非常棒。感谢简单但有效!谢谢只需要替换元素[i].style.display=“无”;到元素[i].className+=“className”;并将该类添加到css中,效果良好。简单但有效!谢谢只需要替换元素[i].style.display=“无”;到元素[i].className+=“className”;并将该类添加到css中,效果良好。