gpt4 book ai didi

reactjs - 在 Reactjs 中使用按钮进行水平滚动

转载 作者:行者123 更新时间:2023-12-03 13:41:00 25 4
gpt4 key购买 nike

我正在使用左右按钮在 div 元素上进行水平滚动。

我最初通过引用文献实现了相同的目标。

onClickLeft = () => {
this.props.refELement.current.scrollLeft -= 300;
}
onClickRight = () => {
this.props.refElement.current.scrollLeft += 300;
}

但我似乎找不到一种方法来设置动画持续时间。

使用jquery,这可以实现为:

$('.swipeRight').click(function(){
$('.swipeBox').animate( { scrollLeft: '+=460' }, 1000);
});

$('.swipeLeft').click(function(){
$('.swipeBox').animate( { scrollLeft: '-=460' }, 1000);
});

但是这段代码在reactjs中是不可重现的。

我想实现this基本上在reactjs中。

有什么帮助吗?

最佳答案

您可以使用此代码

document.getElementById('left-button').onclick = function () {
scrollLeft(document.getElementById('content'), -300, 1000);
}

document.getElementById('right-button').onclick = function () {
scrollLeft(document.getElementById('content'), 300, 1000);
}

function scrollLeft(element, change, duration) {
var start = element.scrollLeft,
currentTime = 0,
increment = 20;

console.log(start)

var animateScroll = function(){
currentTime += increment;
var val = Math.easeInOutQuad(currentTime, start, change, duration);
element.scrollLeft = val;
if(currentTime < duration) {
setTimeout(animateScroll, increment);
}
};
animateScroll();
}

//t = current time
//b = start value
//c = change in value
//d = duration
Math.easeInOutQuad = function (t, b, c, d) {
t /= d/2;
if (t < 1) return c/2*t*t + b;
t--;
return -c/2 * (t*(t-2) - 1) + b;
};
.left{
float: left;
width: 30%;
height: 200px;
border: 1px solid black;
}

.internal{
width: 31.75%;
height: 100%;
border: 1px solid black;
display: inline-block;
}

.center{
float: left;
width: 38.9%;
height: 200px;
border: 1px solid black;
margin: 1px;
overflow: hidden;
/*will change this to hidden later to deny scolling to user*/
white-space: nowrap;
}

.right{
float: right;
width: 30%;
height: 200px;
border: 1px solid black;
}
<div class="left">
left div
<button id="left-button">
swipe left
</button>
</div>
<div class="center" id="content">
<div class=internal>
div 1
</div>
<div class=internal>
div 2
</div>
<div class=internal>
div 3
</div>
<div class=internal>
div 4
</div>
<div class=internal>
div 5
</div>
<div class=internal>
div 6
</div>
<div class=internal>
div 7
</div>
<div class=internal>
div 8
</div>
</div>
<div class="right">
<button id="right-button">
swipe right
</button>
right div
</div>

基于this code

关于reactjs - 在 Reactjs 中使用按钮进行水平滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747018/

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