css或者js如何实现这样的效果

有个div可以内滚动的,不管滚动到哪儿,我都想让黑色矩形区域始终在这个框的上面可以看到并且在框内水平居中,如何实现,
试了下div相对定位,黑色矩形绝对定位,但是滚动条滚动的时候框就看不到了,也滚过去了,
有没有什么好的方法呢

PS:不需要依赖外部div的方法

阅读 3.5k
7 个回答

内部多嵌套一个 Div 作为滚动内容的容器,固定元素绝对定位即可:
https://codepen.io/huangbuyi/pen/gXgVKr

<div class="container">
  <div class="fixed"></div>
  <div class="content">
    <p>content</p>
    ...
  </div>
</div>

.container {
  position: relative;
  width: 300px;
  height: 300px;
  box-shadow: 0 3px 12px rgba(0,0,0,0.28);
}

.content {
  width: 100%;
  height: 100%;
  overflow: auto;
}

.fixed {
  position: absolute;
  left: 50px;
  background: black;
  width: 200px;
  height: 24px;
  margin: auto;
}

有人提供了js动态计算top的,我就提供一个纯css的吧,想法就是外面多包裹一层,用于定位DEMO

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        #box {
            width: 300px;
            height: 400px;
            background: #ccc;
            overflow: auto;
            position: relative;
        }
        #content {
            height: 1200px;
        }
        #block {
            width: 150px;
            height: 20px;
            position: fixed;
            background: #eee;
            top: 50px;
            left: 75px;
        }
    </style>
</head>
<body>
    <div id="box">
        <div id="block"></div>
        <div id="content"></div>
    </div>
</body>
</html>

黑框的定位设置为fixed就好了

css有个属性叫fixed不就完了么?难道题主的意思我没看懂?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题