变换动画不适用于 bootstrap 轮播中的第一张幻灯片
Transform animation not working for first slide in bootstrap carousel
我有一个 bootstrap 4.0 旋转木马,我想要在每个幻灯片处于活动状态时缩放效果。我已经使用 transform: scale
属性 来实现它。我已将 transform: scale
应用于 .carousel-item.active img
元素。我使用 jquery 为第一个元素添加了 active class。动画不适用于我的第一张幻灯片。当它循环时它起作用。我试图在 setTimeOut 函数中添加 class,但它没有帮助。谁能帮帮我?
这些是我的代码
html
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item">
<img class="d-block w-100" src="https://placeimg.com/640/480/any" alt="First slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="https://placeimg.com/640/480/nature" alt="Second slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="https://placeimg.com/640/480/animals" alt="Third slide">
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
css
.carousel-item img{
transition: all 1s;
transform:scale(1);
}
.carousel-item.active img{
transform:scale(1.2);
}
jquery
window.setTimeout(function(){
$('#carouselExampleControls .carousel-item:first-child').addClass('active');
},2000);
我认为首先你不应该将 "active" class 更改为 JavaScript,总是先尝试只找到一个 CSS 解决方案,然后将活动 class 已经在 HTML 中:
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="https://placeimg.com/640/480/any" alt="First slide">
</div>
我还在某处读到,使用动画而不是变换需要更少的 CPU 处理,所以选择关键帧,如下所示:
@-webkit-keyframes zoom {
from {
-webkit-transform: scale(1, 1);
}
to {
-webkit-transform: scale(1.2, 1.2);
}
}
@keyframes zoom {
from {
transform: scale(1, 1);
}
to {
transform: scale(1.2, 1.2);
}
}
然后 css:
.carousel-inner .carousel-item.active > img {
-webkit-animation: zoom 1s forwards;
animation: zoom 1s forwards;
}
工作fiddle:http://jsfiddle.net/v2nc9hx3/
我有一个 bootstrap 4.0 旋转木马,我想要在每个幻灯片处于活动状态时缩放效果。我已经使用 transform: scale
属性 来实现它。我已将 transform: scale
应用于 .carousel-item.active img
元素。我使用 jquery 为第一个元素添加了 active class。动画不适用于我的第一张幻灯片。当它循环时它起作用。我试图在 setTimeOut 函数中添加 class,但它没有帮助。谁能帮帮我?
这些是我的代码
html
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item">
<img class="d-block w-100" src="https://placeimg.com/640/480/any" alt="First slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="https://placeimg.com/640/480/nature" alt="Second slide">
</div>
<div class="carousel-item">
<img class="d-block w-100" src="https://placeimg.com/640/480/animals" alt="Third slide">
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
css
.carousel-item img{
transition: all 1s;
transform:scale(1);
}
.carousel-item.active img{
transform:scale(1.2);
}
jquery
window.setTimeout(function(){
$('#carouselExampleControls .carousel-item:first-child').addClass('active');
},2000);
我认为首先你不应该将 "active" class 更改为 JavaScript,总是先尝试只找到一个 CSS 解决方案,然后将活动 class 已经在 HTML 中:
<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
<div class="carousel-inner">
<div class="carousel-item active">
<img class="d-block w-100" src="https://placeimg.com/640/480/any" alt="First slide">
</div>
我还在某处读到,使用动画而不是变换需要更少的 CPU 处理,所以选择关键帧,如下所示:
@-webkit-keyframes zoom {
from {
-webkit-transform: scale(1, 1);
}
to {
-webkit-transform: scale(1.2, 1.2);
}
}
@keyframes zoom {
from {
transform: scale(1, 1);
}
to {
transform: scale(1.2, 1.2);
}
}
然后 css:
.carousel-inner .carousel-item.active > img {
-webkit-animation: zoom 1s forwards;
animation: zoom 1s forwards;
}
工作fiddle:http://jsfiddle.net/v2nc9hx3/