javascript - ReactJS 滚动元素一定数量的像素
问题描述
如何在每次单击按钮时滚动元素(不是整个页面)特定数量的像素,例如 100px(不是链接,因为每次都需要固定数量的像素)我使用 ReactJS 16。
解决方案
您可以scrollBy
在要滚动的元素上使用。一个普通的 JS 示例:
let btn = document.getElementById('btn');
let box = document.getElementById('box');
btn.addEventListener('click', function() {
box.scrollBy({top:100, behavior: "smooth"});
});
#box {
width: 300px;
height: 100px;
overflow-y: scroll;
}
#inner-box {
width: 100px;
height: 1000px;
}
.content {
height: 50px;
display: block
}
<button id="btn">scroll</button>
<div id="box">
<div id="inner-box">
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
</div>
</div>
这是一个 ReactJS 版本:
class Scrollable extends React.Component {
constructor(props) {
super(props);
this.scroll = this.scroll.bind(this);
this.box = React.createRef();
}
scroll() {
this.box.current.scrollBy({top:100, behavior: "smooth"});
}
render() {
return (
<div>
<button onClick={this.scroll}>scroll</button>
<div id="box" ref={this.box}>
<div id="inner-box">
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
<div class="content">
content
</div>
</div>
</div>
</div>
);
}
}
Codepen演示
推荐阅读
- django - 如何在 Django 模型中设置字段常量
- python - for in for 循环(for 并行工作)
- java - 如何在 Spring Mail 集成中启用 IMAPFolder 读写模式
- java - E/RecyclerView:没有附加适配器;跳过布局 D/OpenGLRenderer: eglDestroySurface = 0x730c9a02d0
- javascript - 用户离开页面/刷新时跟踪表单更改
- node.js - 对Node js的两个括号功能感到困惑
- python - 如何修复 Python 在 MySQL 数据库中输入错误的值
- bash - 如何使用 gawk 将文本包装在列中
- android - 是否必须将 ListView.Builder 小部件放置在单独的页面上
- javascript - 在 setInterval 中调用函数会导致本机反应错误