Jquery 使用添加/移除类和CSS转换隐藏/显示元素

Jquery 使用添加/移除类和CSS转换隐藏/显示元素,jquery,css,css-transitions,Jquery,Css,Css Transitions,我想用CSS转换隐藏/显示一个带有addClass和removeClass函数动画的元素。 我试过用这种方式,但当我添加类时,并没有显示“活动”显示 .hidden { display: none; -webkit-transition: display .5s ease; -moz-transition: display .5s ease; -o-transition: display .5s ease; } .active { transition: display .

我想用CSS转换隐藏/显示一个带有addClass和removeClass函数动画的元素。 我试过用这种方式,但当我添加类时,并没有显示“活动”显示

.hidden {
  display: none;
  -webkit-transition: display .5s ease;
  -moz-transition: display .5s ease;
  -o-transition: display .5s ease;
}

.active {
  transition: display .5s ease;
  -webkit-transition: display .5s ease;
  -moz-transition: display .5s ease;
  -o-transition: display .5s ease;
}

#test {
  width: 100px;
  height: 40px;
  background: red;
}
-

-

你好!


我怎么做呢?谢谢

您需要在.active类中添加一些css代码,将其放入css部分,以下是更新的:


您必须从div中删除现有的类
hidden
,因为hidden的display none会阻止它显示。
将其添加到按钮的JQuery内部
onclick

 $('#test').removeClass('hidden');

我认为最好用jquery来解决这个问题,而不是css转换。如果您只想显示和隐藏一个元素,只需使用jquery fadeIn和fadeOut,而不需要任何css规则

$('#btn').on('click', function(){
   $('#test').fadeToggle("slow");
});


有关fadeToggle的更多信息,请参见。

以下是使用CSS的另一种方法:

这不是你想要的完美,但更接近于此:

.hidden {
    display:none;
     opacity:0;

}

.active {
    display: block;
    opacity:1;
  -webkit-animation-name: fadeIn;
-webkit-animation-duration: .5s;
animation-name: fadeIn;
animation-duration: .5s;
}

#test {
    width: 100px;
    height: 40px;
    background: red;
}

@-webkit-keyframes fadeIn {
0% { opacity: 0; }
20% { opacity: 0; }
40% { opacity: 0.3; }
60% { opacity: 0.5; }
80% { opacity: 0.9; }
100% { opacity: 1; }
}

@keyframes fadeIn {
0% { opacity: 0; }
20% { opacity: 0; }
40% { opacity: 0.3; }
60% { opacity: 0.5; }
80% { opacity: 0.9; }
100% { opacity: 1; }
}
检查

希望它能有所帮助。

试试这个:

$('#btn').on('click',function(){
var class= $('#test').attr('class').trim();
if(class === "hidden")
{
 $('#test').removeClass('hidden');
 $('#test').addClass('active');
}
else
{
 $('#test').removeClass('active');
 $('#test').addClass('hidden');
}
});

您可以在不使用如此长的css的情况下实现相同的效果

您所要做的就是添加一个jquery

$('#btn').on('click', function () {
    $("#test").fadeToggle("slow", "linear")
});

检查此

此线程有点晚,但这可能有用。不能转换显示,但可以转换z索引。因此,在CSS中,将要显示的元素的不透明度设置为0,并将z-index设置为-1,这样无论显示值如何,它都不会显示。如果要显示元素,请添加一个转换为不透明度1且z索引>0的类:

例如:

#myElement {
    z-index: -1;
    opacity:0;
    transition: all 2s;
}
#myElement.showme{
    z-index: 99;
    opacity:0;
    transition: all 2s;
}
要显示/隐藏它,请使用javascript添加或删除类showme(下面是jQuery):


如果我删除隐藏的类,我就没有转换你的解决方案,隐藏和显示div而不进行任何转换。你可以设置不透明度动画,但不能设置显示动画。您应该首先设置不透明度的动画,并在动画结束时更改“显示”属性。这可能也有帮助:在
#myElement.showme
您的意思是
不透明度:1
,对吗?
$('#btn').on('click',function(){
var class= $('#test').attr('class').trim();
if(class === "hidden")
{
 $('#test').removeClass('hidden');
 $('#test').addClass('active');
}
else
{
 $('#test').removeClass('active');
 $('#test').addClass('hidden');
}
});
$('#btn').on('click', function () {
    $("#test").fadeToggle("slow", "linear")
});
#myElement {
    z-index: -1;
    opacity:0;
    transition: all 2s;
}
#myElement.showme{
    z-index: 99;
    opacity:0;
    transition: all 2s;
}
$('#myElement').addClass('showme');  // fade myElement in
...
$('#myElement').removeClass('showme'); // fade out myElement