简体   繁体   English

css position 粘性不会留在顶部

[英]css position sticky wont stay at top

I'm having this strange behaviour, when i scroll down yellow box goes on top of blue box, i have set position sticky to both yellow box and blue box so when i scroll down those two should stay there and should not go on top of another.我有这种奇怪的行为,当我向下滚动黄色框时,黄色框位于蓝色框顶部,我已将 position 粘在黄色框和蓝色框上,所以当我向下滚动时,这两个应该留在那儿,而不应该是 go 在顶部其他。 When i scroll down blue and yellow box should stay but only orange box should be scrollable, any help?当我向下滚动时,蓝色和黄色框应该保留但只有橙色框应该可以滚动,有什么帮助吗?

在此处输入图像描述

code to try:要尝试的代码:

https://codesandbox.io/s/example-react-hooks-usestate-forked-69suro?file=/src/index.js https://codesandbox.io/s/example-react-hooks-usestate-forked-69suro?file=/src/index.js

code:代码:

 import React from "react"; import ReactDOM from "react-dom"; import "./app.css"; function App() { return ( <div className="box-container"> <div className="box"></div> <div className="both"> <div className="left__side"></div> <div className="right__side"> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> <div className="oikea__box"></div> </div> </div> </div> ); } const rootElement = document.getElementById("root"); ReactDOM.render(<App />, rootElement);
 .box { height: 100px; border: 1px solid black; width: 100%; background-color: blue; position: sticky; top: 0; }.both { display: flex; }.left__side { height: 200px; border: 1px solid black; width: 100px; background-color: yellow; position: sticky; top: 0; }.right__side { border: 1px solid black; width: 100%; background-color: white; display: flex; flex-wrap: wrap; gap: 2px; }.oikea__box { height: 100px; width: 100px; border: 1px solid red; background-color: orange; }

for yellow box you cannot put top:0 bcs it will stay 0px from top, if u want to put it under blue box, u can put top: (blue height in px) which is 100px.对于黄色框,你不能将 top:0 bcs 放在距顶部 0px 处,如果你想将它放在蓝色框下方,你可以将 top: (blue height in px) 设置为 100px。

.left__side: {
top: 100px;
}

Do:做:

top: 100px;

For.left__side in your css file. For.left__side 在你的 css 文件中。

Your "both" class is overlap with the blue box.您的“两者” class 与蓝色框重叠。 You don't need to put "sticky" to the yellow box because flex will put yellow box position after blue box.您不需要将“粘性”放在黄色框上,因为 flex 会将黄色框 position 放在蓝色框之后。

Try this:尝试这个:

.box {
  height: 100px;
  border: 1px solid black;
  width: 100%;
  background-color: blue;
}

.both {
  display: flex;
  flex-direction: row;
  overflow: scroll;
}

.left__side {
  height: 200px;
  border: 1px solid black;
  width: 100px;
  background-color: yellow;
}

.right__side {
  border: 1px solid black;
  width: 100%;
  background-color: white;
  display: flex;
  flex-wrap: wrap;
  gap: 2px;
  height: 200px;
  overflow-y: scroll;
}

.oikea__box {
  height: 100px;
  width: 100px;
  border: 1px solid red;
  background-color: orange;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM