当您单击链接时,在显示/隐藏切换期间应用任何CSS动画。切换有效,但不应用动画。
$('.working-hours-link').click(function(e) {
$(this).siblings(".hours").toggleClass('hidden shown');
});
.hidden {
background-color: #fff;
color: #000;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
display: none;
}
.shown {
background-color: #000;
color: #fff;
-webkit-transition: all 1s;
-moz-transition: all 1s;
-o-transition: all 1s;
transition: all 1s;
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="working-hours-link" href="#">Show working hours</a>
<br>
<div class="hours hidden">
Sunday: 12:00 pm-6:00 pm
</div>
https://jsfiddle.net/ako6uzxt/
transition
对display
不起作用。 尝试将display:none
和display:block
更改为opacity:0
和opacity:1
问题是因为在应用/删除类之前,transition
CSS 规则需要存在于元素上。因此,您可以将其添加到.hours
规则中。此外,您不再需要在transition
上使用供应商前缀。
另请注意,您无法对display
进行动画处理,因此我使用了opacity
和height
的组合。
$('.working-hours-link').click(function(e) {
$(this).siblings(".hours").toggleClass('hidden shown');
});
.hours {
transition: height, opacity 1s;
}
.hidden {
background-color: #fff;
color: #000;
height: 0;
opacity: 0;
}
.shown {
background-color: #000;
color: #fff;
height: 20px;
opacity: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a class="working-hours-link" href="#">Show working hours</a>
<br>
<div class="hours hidden">
Sunday: 12:00 pm-6:00 pm
</div>
在 css 显示:无和显示:阻止中,过渡将不起作用。 因为默认情况下隐藏文件不在 HTML 中.. 单击按钮后,将显示文件.. 替换显示 无 我们可以使用 不透明度:0; 请删除显示:无和显示:块
.css
.hidden {
opacity: 0;
visibility: hidden;
}
.shown {
opacity: 1;
visibility:visible;
}
请添加此代码
.hours{display:none;background-color:#000;color:#fff;}
$('.working-hours-link').click(function(e) {
$(this).siblings(".hours").toggleClass('hidden');
});
$('.working-hours-link').click(function(e) {
$(this).siblings(".hours").slideToggle();
});