react将选中本文自动滑动到容器可视区域内

js 复制代码
    // 自动滚动到可视区域内
    useEffect(() => {
        const target = ref;
        const wrapper = wrapperRef?.current;
        if (target && wrapperRef) {
            const rect = target.getBoundingClientRect();
            const wrapperRect = wrapper.getBoundingClientRect();
            const isVisible = rect.bottom <= wrapperRect.bottom && rect.top >= wrapperRect.top;
            if (!isVisible) {
                wrapper.scrollTo({ top: rect.top, behavior: 'smooth' });
            }
            console.log('isVisible', isVisible);
        }
    }, [avaliableIndex]);
html 复制代码
 <div className={ve.defaultWrapper} ref={wrapperRef}>
            {content.map((text, index) => (
                <p
        
                    ref={(r) => {
                        if (isSelectedRow(index)) {
                            ref = r;
                        }
                    }}
                ></p>)}
                </div>
              
相关推荐
爱分享的鱼鱼17 分钟前
对比理解 Vue 响应式 API:data(), ref、reactive、computed 与 watch 详解
前端·vue.js
JS_GGbond18 分钟前
【性能优化】给Vue应用“瘦身”:让你的网页快如闪电的烹饪秘籍
前端·vue.js
T___T20 分钟前
一个定时器,理清 JavaScript 里的 this
前端·javascript·面试
代码小学僧21 分钟前
从 Arco Table 迁移到 VTable:VTable使用经验分享
前端·react.js·开源
微笑的曙光22 分钟前
Vue3 环境搭建 5 步走(零基础友好)
前端
不知名用户来了26 分钟前
基于vue3 封装的antdv/element-Plus 快速生成增删改查页面
前端
明川32 分钟前
Android Gradle - ASM + AsmClassVisitorFactory插桩使用
android·前端·gradle
San3032 分钟前
深度驱动:React Hooks 核心之 `useState` 与 `useEffect` 实战详解
javascript·react.js·响应式编程
布列瑟农的星空33 分钟前
webpack迁移rsbuild——配置深度对比
前端
前端小黑屋34 分钟前
查看项目中无引用到的文件、函数
前端