【问题标题】:Scroll-then-fix css grid column in ReactJS在 ReactJS 中滚动然后修复 css 网格列
【发布时间】:2021-08-05 04:03:32
【问题描述】:

我在 ReactJS 中有以下 CSS Grid 结构,其中我连续三列。

<div class="Container">
                <div class="Layout">
                    <Leftside />
                    <Main />
                    <Rightside />
                </div>
                
            </div>

containerLayout的样式如下:

.Container{
    padding-top: 50px;
    max-width: 100%;
}

.Layout{
    display: grid;
    grid-template-columns: minmax(0,3fr) minmax(0,6fr) minmax(0,3fr);
    margin: 10px 0;
    grid-gap: 20px;
}

我在浏览器上有以下结构:

我想要的是第 3 列(添加到您的提要)随着页面滚动一段时间(此列和导航栏之间有 50 像素的间隙)直到它到达顶部,然后它应该保持固定那里。我将以下样式应用于右侧列:

function Rightside=(props)=>{
return(
<Container>
  //Other code
   </Container>);
}

const Container = styled.div`
  position: fixed;
  top: 50px;
  right: 0;
`;

但发生的情况是,即使页面滚动后,它与顶部仍保持 50px 的间隙,这是我不想要的。

请帮助我编写正确的 css 以实现正确的渲染。 谢谢!

【问题讨论】:

    标签: html css reactjs position css-grid


    【解决方案1】:

    发生这种情况是因为您在 Container 组件上提供了 top: 50px;

    这告诉第 3 列,Container 的最高点只能在 50px 处,仅此而已。

    function Rightside=(props)=>{
        return(
            <Container>
            //Other code
            </Container>
        );
    }
    
    const Container = styled.div`
        position: sticky;
        top: 0px;
        right: 0;
    `;
    

    【讨论】:

    • 感谢您的回答。但我正在寻找类似this 的东西。我问了一个新问题,因为我认为在 css 网格布局中实现这个东西会有点不同。我也在使用 Reactjs,所以我不想使用 jQuery。
    • 您好。我已经更新了答案。如果您希望元素在滚动后被固定,您应该使用position: 'sticky'。这不能解决它吗?
    • 没有。位置:粘性没有效果。位置:固定实际上正在工作,但不是以所需的方式。
    • 你能提供一个可重现的例子吗?我会努力解决的。
    猜你喜欢
    • 2019-01-06
    • 1970-01-01
    • 2020-09-09
    • 1970-01-01
    • 2015-09-08
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多