css位置粘滞不会停留在顶部

46qrfjad  于 2023-01-27  发布在  其他
关注(0)|答案(3)|浏览(180)

我有这个奇怪的行为,当我向下滚动黄色框到蓝色框的顶部,我已经设置了位置粘到黄色框和蓝色框,所以当我向下滚动这两个应该留在那里,不应该去另一个顶部。当我向下滚动蓝色和黄色框应该留在,但只有橙子框应该是可滚动的,任何帮助?

要尝试的代码:
https://codesandbox.io/s/example-react-hooks-usestate-forked-69suro?file=/src/index.js
代码:

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;
}
esyap4oy

esyap4oy1#

对于黄色框,你不能把它放在顶部:0 bcs,它将保持0px从顶部,如果你想把它放在蓝色框下,你可以把它放在顶部:(蓝色高度,像素),即100px。

.left__side: {
top: 100px;
}
ercv8c1e

ercv8c1e2#

执行:

top: 100px;

css文件中的. left__side。

olhwl3o2

olhwl3o23#

你的"both"类与蓝框重叠。你不需要把"sticky"放在黄框上,因为flex会把黄框放在蓝框之后。
试试这个:

.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;
}

相关问题