javascript - 如何让滚动条在 React 页面加载时的某个位置开始
问题描述
我有一个非常宽的图像作为背景,比如说 4000 像素。
我想让我的 React 页面加载到图像的中间,2000px。
如何让我的页面在页面加载时以 2000px 宽度自动启动?
解决方案
实现这一点的动态方法是使用 ref。我们可以创建一个回调函数,它接受一个我们分配给您的图像容器的 ref。这样,我们可以在创建 ref 后立即对其做出反应。
该函数将动态计算滚动位置并显式设置scrollLeft。该函数可能如下所示
const refAssignCallback = (ref) => {
if (ref) {
//ref available = mounted.
var element = ref;
var scrollWidth = element.scrollWidth;
var clientWidth = element.getBoundingClientRect().width;
//explicitly set the scrollTop position of the scrollContainer
element.scrollLeft = (scrollWidth - clientWidth) / 2;
}
};
应该将此 refAssignmentCallback 传递给图像容器的 ref 属性。
下面是完整的片段
import React from "react";
import "./styles.css";
export default function App() {
const refAssignCallback = (ref) => {
if (ref) {
//the containerRef is currently null, ref available = mounted.
var element = ref;
var scrollWidth = element.scrollWidth;
var clientWidth = element.getBoundingClientRect().width;
//explicitly set the scrollTop position of the scrollContainer
element.scrollLeft = (scrollWidth - clientWidth) / 2;
}
};
return (
<div className="App">
<div name="container" ref={refAssignCallback} style={{overflowX: "auto"}}>
<div style={{width: "4000px"}}>Image Placeholder Div</div>
</div>
</div>
);
}
推荐阅读
- javascript - 从 iframe 中的元素获取文本
- python - 在 TensorFlow 或 python 中将多个图像转换为 CSV 文件
- python - 椭圆内大约 4 个圆圈以获得半径
- odoo - 我的学生如何访问我们的电子学习 odoo 课程
- php - 无法将 laravel 7 升级到 laravel 8
- android - 如何使用导航组件库从底部导航更改片段上的工具栏图标?
- firebase - 以编程方式检查 Firebase 电话身份验证限制?
- docker-compose - 如何在没有阻止终端的情况下运行命令
- reactjs - 我们如何实现 Open with Postman 按钮来打开从第三方 React 应用程序发送的邮递员收藏链接?
- amazon-web-services - 在coginto用户池中为用户组添加服装角色