如何用滚动在div中制作一个固定的盒子?

时间:2015-04-08 23:51:15

标签: javascript jquery html css

如何使用滚动条在div中修复一个框?

我这样想:

HTML:

<div id="wrapper">
    <div class="main">
        <div class="container">
            <div class="container2">
                <div class="test"></div>
                <div class="test"></div>
                <div class="test"></div>
            </div>
        </div>
    </div>
</div>

CSS:

#wrapper {
    position: relative;
    width: 100%;
    height: 100%;
    color: #a3265e;
    font-family: 'GillSans-SemiBold';
}
.main {
    border: 1px solid red;
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0 auto;
    padding-top: 380px;
}
.container {
    border: 1px solid green;
    position: relative;
    /*width: 946px;*/
    height: 500px;
    margin: 0 auto;
    overflow: scroll;
}
.container2 {
    height: 1500px;
    margin: 0 auto;
}
.test {
  width: 500px;
  height: 500px;
  position: fixed;
  left: 50%;
  margin-left: -250px;
  background: black;
}

但是该框与页面一起进行,不仅仅是在div中。

我在这里做错了什么?有人能给我指路吗?

谢谢你们。


编辑

示例 - &gt; https://jsfiddle.net/kzhuh7sv/embedded/result/

3 个答案:

答案 0 :(得分:1)

尝试此解决方案https://jsfiddle.net/yyt8eope/2/ 我添加了一个div,它将容器divclass='test' div包装在同一级别,因此测试div可以是包装器内的绝对值,并始终处于固定状态位置

<div id="wrapper">
    <div class="main">
        <div class="scroll-container">
          <div class="container">
            <div class="container2">
            </div>
          </div>
          <div class="test">Fixed inside scroll container</div>
        </div>
     </div>
</div>

CSS:

#wrapper {
position: relative;
width: 100%;
height: 100%;
color: #a3265e;
font-family: 'GillSans-SemiBold';
}
.main {
    border: 1px solid red;
    position: relative;
    width: 100%;
    height: 100%;
    margin: 0 auto;
    padding-top: 380px;
}
.scroll-container{
    position: relative;
    height: 500px;
}
.container {
    border: 1px solid green;
    position: relative;
    /*width: 946px;*/
    height: 500px;
    margin: 0 auto;
    overflow: scroll;
}
.container2 {
    height: 1500px;
    margin: 0 auto;
}
.test {
  width: 500px;
  height: 200px;
  color: white;
  position: absolute;
  top:0;
  left: 50%;
  margin-left: -250px;
  background: black;
  z-index: 1;
}

答案 1 :(得分:0)

尝试删除“position: fixed;”并添加“overflow: scroll;”。

JSFiddle

修改

更改了JSFiddle,已更新。

答案 2 :(得分:0)

您无法使用position: fixed执行该操作,因为它始终与视口绑定。你希望它固定在它的上下文中。

http://jsfiddle.net/zq1m49wf/2/

黑框在container3滚动

时保持不变
<div id="wrapper">
    <div class="main">
        <div class="container">
            <div class="container2">
                <div class="container3"></div>
            </div>
            <div class="test"></div>
        </div>
    </div>
</div>

#wrapper {
    position: relative;
    width: 100%;
    height: 100%;
}
.main {
    width: 100%;
    height: 100%;
}
.container {
    position: relative;
    height: 500px;
    padding-top: 200px;
}
.container2 {
    height: 500px;
    margin: 0 auto;
    overflow: scroll;
}
.container3 {
    height: 1500px;
}
.test {
    width: 500px;
    height: 500px;
    bottom: 0;
    background-color: #000000;
    position: absolute;
}