$('.greenBox').hover(function(){
$(this).addClass('expanded');
$(this).removeClass('contracted');
}, function(){
$(this).removeClass('expanded');
$(this).addClass('contracted');
}); // end of hover state for green box
想知道是否有办法用上面的jquery逻辑实现转换?在添加或删除类之间。
我已经尝试了以下,但它不起作用:(这是一个简单的div小高度>大高度切换)
.expanded {
height: auto;
// to make the box move up add back the bottom 300px
// bottom: 300px;
background: linear-gradient(#812990, #9e248e);
-webkit-transition-timing-function: linear;
transition-timing-function: linear;
}
也:
.contracted {
height: 100px;
}
答案 0 :(得分:2)
将transition
应用到您的.greenbox
课程,而不是您要添加的{2}中的任何一个。除去:
.greenbox{
transition:height .5s linear;
}
话虽如此,你不能转换到CSS中的auto
值,所以,你想要在这里使用的技巧是将扩展类的max-height
设置为更大的值而不是其内容的高度,而是过渡到它。
.greenbox{
transition:max-height .5s linear;
}
.contracted{
max-height:100px;
}
.expanded{
max-height:1000px;/* adjust to suit your content */
}
根据您为较大max-height
设置的值,您可能需要调整转换的时间以改善其外观。
顺便说一句,你完全可以用CSS实现这一点,完全不需要任何JavaScript,如:
.greenbox{
max-height:100px;
transition:max-height .5s linear;
}
.greenbox:hover{
max-height:1000px;/* adjust to suit your content */
}
答案 1 :(得分:0)
您似乎可以简化JavaScript并且只有一个类可以切换。你不能使用CSS来设置自动动画,因为它不知道这意味着什么,但你可以用max-height欺骗它......你必须只是随意并且最接近常见的大小。否则你将不得不使用jQuery动画(或速度)并查询高度,以便知道要动画的整数 - 然后将CSS转换出来。
$('.greenBox').hover( function() {
$(this).addClass('expanded');
}, function() {
$(this).removeClass('expanded');
});
.greenbox {
height: 864572px;
max-height: 100px;
transition: .2s;
}
.greenbox.expanded {
max-height: 500px
}