我有一个聊天小部件,每次向上滚动时,它都会拉出一系列消息。我现在面临的问题是加载消息时滑块固定在顶部。我希望它专注于上一个数组中的最后一个索引元素。我发现可以通过传递索引来创建动态引用,但是我还需要知道使用哪种滚动功能来实现这一点
handleScrollToElement(event) {
const tesNode = ReactDOM.findDOMNode(this.refs.test)
if (some_logic){
//scroll to testNode
}
}
render() {
return (
<div>
<div ref="test"></div>
</div>)
}
import React, { useRef } from 'react'
const scrollToRef = (ref) => window.scrollTo(0, ref.current.offsetTop)
// General scroll to element function
const ScrollDemo = () => {
const myRef = useRef(null)
const executeScroll = () => scrollToRef(myRef)
return (
<>
<div ref={myRef}>I wanna be seen</div>
<button onClick={executeScroll}> Click to scroll </button>
</>
)
}
单击此处,获得有关StackBlits的完整演示
class ReadyToScroll extends Component {
constructor(props) {
super(props)
this.myRef = React.createRef()
}
render() {
return <div ref={this.myRef}></div>
}
scrollToMyRef = () => window.scrollTo(0, this.myRef.current.offsetTop)
// run this method to execute scrolling.
}
class ReadyToScroll extends Component {
myRef=null
// Optional
render() {
return <div ref={ (ref) => this.myRef=ref }></div>
}
scrollToMyRef = () => window.scrollTo(0, this.myRef.offsetTop)
// run this method to execute scrolling.
}
字符串引用会损害性能,不可组合且即将淘汰(2018年8月)。
字符串引用存在一些问题,被认为是旧问题,并且很可能在将来的版本之一中删除。[官方React文档]
资源1
资源2
/* css */
html {
scroll-behavior: smooth;
}
我们希望ref附加到dom元素上,而不是附加到react组件上。因此,当将其传递给子组件时,我们无法命名prop ref。
const MyComponent = () => {
const myRef = useRef(null)
return <ChildComp refProp={myRef}></ChildComp>
}
然后将ref prop附加到dom元素。
const ChildComp = (props) => {
return <div ref={props.refProp} />
}
问题内容: 我有一个聊天小部件,每次向上滚动时,它都会拉出一系列消息。我现在面临的问题是,在加载消息时,滑块保持固定在顶部,我希望它专注于上一个数组中的最后一个索引元素。我发现可以通过传递索引来创建动态引用,但是我还需要知道要使用哪种滚动功能才能实现这一点 问题答案: React 16.8 +,功能组件 React 16.3 +,Class组件 类组件-Ref回调 不要使用字符串引用。 字符串引用
问题内容: 我有一个滚动条,当我单击它时我想要一个链接,它将迫使其滚动以查看其中的元素。我这样写它的JavasSript: 但这会在滚动页面的同时滚动所有页面。如何解决? 我想这样说 问题答案: 您需要获取要滚动到视图中的元素相对于其父元素(滚动div容器)的顶部偏移量: 现在,将变量topPos设置为滚动div的顶部与希望显示的元素之间的距离(以像素为单位)。 现在,我们告诉div使用以下命令滚
问题内容: 我有这个元素: 然后,我还有其他一些元素,例如其他文本输入,文本区域等。 当用户点击带,页面应该滚动到页面的最后一个元素与一个漂亮的动画。它应该是滚动到底部而不是顶部。 页面的最后一项是带有的按钮: 动画不应太快并且应该流畅。 我正在运行最新的jQuery版本。我更喜欢不安装任何插件,而是使用默认的jQuery功能来实现此目的。 问题答案: 假设您有一个ID为的按钮,请尝试以下示例:
问题内容: 我正在尝试将页面移至某个元素。 我尝试下一个代码无济于事: 问题答案: 您可以使用锚点来“聚焦” div。即: 然后使用以下javascript:
问题内容: 我有一个模态框窗口(弹出窗口),其中包含一个iframe, 并且在该 iframe中 有一个可滚动的 div 。 当我滚动iframe的内部DIV,并且达到其上限或下限时, 浏览器本身的窗口就会开始滚动。这是 不想要的行为 。 我已经尝试过类似的操作, 当鼠标进入弹出框区域时,该操作会在onMouseEnter时终止主窗口滚动: e.preventDefault()由于某些原因无法正常
问题内容: 如何使Selenium WebDriver滚动到特定元素以使其显示在屏幕上。我尝试了很多不同的选择,但是没有运气。这在c#绑定中不起作用吗? 我可以使它跳到特定的位置, 但是我希望能够将其发送到不同的元素,而不必每次都给出确切的位置。 例1) 例2) 当我观看它时,它不会将页面跳到该元素,并且异常与不在屏幕上的元素匹配。 更新:我添加了bool ex = Example.Exists(