Uni-app 页面滚动/滑动到某个固定的位置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Uni-app 页面滚动/滑动到某个固定的位置相关的知识,希望对你有一定的参考价值。

参考技术A 测试小姐姐说给说明文档加个滚动功能吧,不要让用户还手动滑那么长时间,直接点击跳到说明位置好了。
okay。

需求:实现点击说明标题滚动到说明详情。

在点击事件那里引用这个方法即可!

当滚动到达页面的某个点时,使用其他内容进行位置固定的 div 滚动

【中文标题】当滚动到达页面的某个点时,使用其他内容进行位置固定的 div 滚动【英文标题】:Make a position fixed div scroll with other contents when scroll hit certain point of page 【发布时间】:2021-12-21 21:30:17 【问题描述】:

我有这个设置。

我需要在滚动到达页脚之前固定这个黄色粘性框的位置。当页脚到达屏幕时,粘性框应与动态内容框一起滚动,反之亦然。我试过position: sticky 但没有运气。 javascript解决方案也可以。

我也尝试了下面的代码,但它不会顺利运行,因为position: relative 使sticky-content-box 直接跳到顶部,而不是滚动左侧内容。

const height = 900; // this would be calculated dynamic content box height

const backGroundAnimation = useCallback(() => 
    if (window.scrollY > height) 
      fixedBox!.current!.style.position = 'relative';
      fixedBox!.current!.style.marginTop = `$heightpx`;
     else 
      fixedBox!.current!.style.position = 'fixed';
    
  , [height]);

  useEffect(() => 
    document.addEventListener('scroll', backGroundAnimation);

    return () => document.removeEventListener('scroll', backGroundAnimation);
  , [backGroundAnimation]);

这是我的code sandbox 设置

请注意,在codesandbox 实现中,我没有在问题中包含我在此处添加的功能。

【问题讨论】:

我认为你想从页脚中分离黄色部分,并希望它只与红色部分保持相对。您可以设置zIndex:-10,这样黄色的内容就会在页脚后面,不再隐藏页脚内容。 不附加到页脚,红色部分和黄色部分是相对元素 【参考方案1】:

我已经检查了您面临的问题,解决方案非常简单,您不需要使用 javascript。您可以使用 css position:sticky

import "./styles.css";
import "../node_modules/bootstrap/dist/css/bootstrap.min.css";

export default function App() 
  return (
    <div className="App">
      <div style= height: "80px", backgroundColor: "blue" >
        top navigation
      </div>
      <div className="container-fluid">
        <div className="row">
          <div
            className="col-sm-8"
            style= height: "900px", backgroundColor: "red" 
          >
            dynamic content
          </div>
          <div className="col-sm-4">
            <div
              style=
                position: "sticky",
                height: "200px",
                top:"0",
                backgroundColor: "yellow",
                width: "100%"
              
            >
              sticky content
            </div>
          </div>
        </div>
      </div>
      <div style= height: "400px", backgroundColor: "blue" >footer</div>
    </div>
  );


在上面的代码中,我刚刚更新了这个 css:

style=
  position: "sticky",
  top:"0",
  height: "200px",
  backgroundColor: "yellow",
   width: "100%"


position:sticky 的具体工作原理可以在这里找到:How does the "position: sticky;" property work?

【讨论】:

这不起作用,我在问题中也提到过。 它工作正常,作为参考我正在与你分享演示我使用了你的 JSX 代码的 HTML 源代码 [codepen.io/kukrati/pen/XWaYWEx] 我现在看到了问题,我没有添加top 值。它需要表现出位置粘性。顺便说一句,我刚刚创建它是为了重现生产代码的问题。在我的生产代码中,这不起作用,但似乎找不到问题。这就是为什么我正在寻找一个 javascript 解决方案。感谢您抽出宝贵时间回答这个问题

以上是关于Uni-app 页面滚动/滑动到某个固定的位置的主要内容,如果未能解决你的问题,请参考以下文章

uni-app 实现置顶悬浮框功能

当用户滚动到页面的最底部时淡入/淡出固定位置 div

uni-app swiper数量过多时卡顿优化方案,微信小程序swiper优化

uni-app吸顶+带动画滑动的tabs导航栏

使用js或jq控制一个div,当滚动到页面顶部的时候固定在顶部,离开可继续滚动吗?

修复滚动到某个部分后的背景图像更改