【发布时间】:2025-11-28 15:35:01
【问题描述】:
想在移动设备上滚动窗口时制作动画效果。
列表的每个元素都带有 css 属性 filter: grayscale(100%);
当它们到达屏幕中心时,我想用属性filter: grayscale(0%); 制作它们。
我在互联网上发现了一些类似的东西,但我认为这不起作用(((
这是幸运的例子
$(window).on("load",function() {
$(window).scroll(function() {
var windowBottom = $(this).scrollTop() + $(this).innerHeight();
$(".fade").each(function() {
/* Check the location of each desired element */
var objectBottom = $(this).offset().top + $(this).outerHeight();
/* If the element is completely within bounds of the window, fade it in */
if (objectBottom < windowBottom) { //object comes into view (scrolling down)
if ($(this).css("opacity")==0) {$(this).fadeTo(500,1);}
} else { //object goes out of view (scrolling up)
if ($(this).css("opacity")==1) {$(this).fadeTo(500,0);}
}
});
}).scroll(); //invoke scroll-handler on page-load
});
.fade {
margin: 50px;
padding: 50px;
background-color: lightgreen;
opacity: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<div class="fade">Fade In 01</div>
<div class="fade">Fade In 02</div>
<div class="fade">Fade In 03</div>
<div class="fade">Fade In 04</div>
<div class="fade">Fade In 05</div>
<div class="fade">Fade In 06</div>
<div class="fade">Fade In 07</div>
<div class="fade">Fade In 08</div>
<div class="fade">Fade In 09</div>
<div class="fade">Fade In 10</div>
</div>
这是我的版本
window.addEventListener("scroll", () => {
var windowBottom = $(this).scrollTop() + $(this).innerHeight();
$(".slider__item img").each(function() {
/* Check the location of each desired element */
var objectBottom = $(this).offset().top + $(this).outerHeight();
/* If the element is completely within bounds of the window, fade it in */
if (objectBottom < windowBottom) { //object comes into view (scrolling down)
$(this).css({
'-webkit-filter': 'grayscale(0%)',
'filter': 'grayscale(0%)'
})
}
});
});
.ourpartner.slider {
display: flex;
align-items: center;
flex-direction: column;
}
.ourpartner.slider .slider__item {
margin-top: 30px;
}
.ourpartner.slider .slider__item img {
width: 130px;
}
._rehau,
._openteck {
height: 70px !important;
}
.ourpartners .slider__item img {
-webkit-filter: grayscale(100%);
filter: grayscale(100%);
transition: 0.6s;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class="ourpartners">
<div class="container">
<div class="ourpartner slider">
<div class="slider__item">
<img src="https://i.ibb.co/PF6SC3p/wds2.png" alt="">
</div>
<div class="slider__item">
<img src="https://i.ibb.co/z2hrmwt/bikha.png" alt="">
</div>
<div class="slider__item">
<img class="_rehau" src="https://i.ibb.co/v1SHw10/rehau.png" alt="">
</div>
<div class="slider__item">
<img src="https://i.ibb.co/NKYBNHP/wiknar.png"" alt="">
</div>
<div class="slider__item">
<img class="_openteck" src="https://i.ibb.co/BKpqdxM/openteck.png" alt="">
</div>
<div class="slider__item">
<img src="https://i.ibb.co/4KXMFmm/maco.png" alt="">
</div>
<div class="slider__item">
<img src="https://i.ibb.co/bNn42TQ/siegenia.png" alt="">
</div>
<div class="slider__item">
<img src="https://i.ibb.co/5sNsXgq/axor.png" alt="">
</div>
</div>
</div>
</section>
我知道我做了相反的事情)
【问题讨论】:
-
我只想为窗口列表中的一个居中元素添加效果
标签: javascript jquery css animation