gpt4 book ai didi

javascript - 如何通过触发按钮上的事件来在元素上平滑地左右滚动?

转载 作者:行者123 更新时间:2023-12-02 22:31:57 27 4
gpt4 key购买 nike

如何通过使用 JavaScript 触发按钮上的事件来在元素上平滑地左右滚动? (没有 jQuery)因此,我想单击“下一个”和“后退”按钮,然后在 my-container__content 上向左或向右滚动,其中内容非常长。

尝试以下方法似乎不起作用

HTML

<div class="my-container">
<div class="my-container__content" style="overflow-x: scroll;" data-scroll-container>
<div class="my-container__item" width="1000000000px">

</div>
</div>
<div>

<button data-back data-scroll-trigger>Back</button>
<button data-next data-scroll-trigger>Next</button>

JS

/**
* Selectors
*/
const selectors = {
scrollContainer: '[data-scroll-container]',
scrollTrigger: '[data-scroll-trigger]',
scrollNext: 'data-next',
scrollBack: 'data-back',
};

/**
* Main
*/

const scrollTrigger = [...document.querySelectorAll(selectors.scrollTrigger)];
const scrollContainer = document.querySelector(selectors.scrollContainer);


const handleScroll = ({ target }) => {
if (target.hasAttribute(selectors.scrollBack)) {
scrollContainer.scrollTo({
right: 100,
behavior: 'smooth',
});
} else {
scrollContainer.scrollTo({
right: 100,
behavior: 'smooth',
});
}
};


if (scrollTrigger) {
scrollTrigger.forEach((scroll) => {
scroll.addEventListener('click', handleScroll);
});
}

最佳答案

您必须指定初始值,也可以使用 left 属性。这是一个逻辑错误。尝试这个。这对我有用。

    var left = 0;

const handleScroll = ({
target
}) => {
if (target.hasAttribute(selectors.scrollBack)) {
left = left - 100;
scrollContainer.scrollTo({
left: left - 100,
behavior: 'smooth',
});
} else {
left = left + 100;
scrollContainer.scrollTo({
left: left + 100,
behavior: 'smooth',
});
}
};

此外,您还必须检查是否已达到滚动限制才能向前和向后滚动。

关于javascript - 如何通过触发按钮上的事件来在元素上平滑地左右滚动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58870697/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com