Mam problem z funkcją javascript classList.add. Próbuję dodać "aktywną" klasę do elementów i zastosować styl css dla tych aktywnych klas. Jednak wydaje się, że nie działa i mam z tym problemy. Czy ktoś może mi pomóc w tym problemie? Poniżej znajduje się aktualna część z mojego pliku HTML i części css, która odpowiada temu javascript.Javascript classList.add nie działa
części:
<script>
function debounce(func, wait = 20, immediate = true) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
}
const sliderImages = document.querySelectorAll('.slide-in');
function checkSlide(e) {
sliderImages.forEach(sliderImage => {
const slideInAt = (window.scrollY + window.innerHeight) - sliderImage.height/2;
const imageBottom = sliderImage.offsetTop + sliderImage.height;
const isHalfShown = slideInAt > sliderImage.offsetTop;
const isNotScrolledPast = window.scrollY < imageBottom;
if(isHalfShown && isNotScrolledPast) {
sliderImage.classList.add('active');
} else {
sliderImage.classList.remove('active');
}
})
}
window.addEventListener('scroll', debounce(checkSlide));
</script>
CSS część, która odpowiada przede javascript:
.slide-in {
\t opacity: 0;
\t transition:all .5s;
}
.align-left {
\t float: left;
\t /*margin-right: 20px;*/
}
.align-right {
\t float: right;
\t /*margin-right: 20px;*/
}
.align-left.slide-in {
\t transform:translateX(-30%) scale(0.95);
}
.align-right.slide-in {
\t transform:translateX(30%) scale(0.95);
}
.slide-in.active {
\t opacity: 1;
\t transform: translateX(0%) scale(1);
}
Proszę mi pomóc wi ten problem.
której przeglądarki i wersji używasz? – GraveyardQueen
Oznaczasz to za pomocą jQuery, ale wydaje się, że nie używasz go nigdzie. Czy jest powód ku temu? –
Czy możesz też opublikować odpowiedni "html"? –