固定VS绝对定位滚动

时间:2015-03-07 14:39:39

标签: html css css-position

我只是在玩一些CSS绝对和固定属性,并且在CSS中遇到了绝对和相对定位之间的异常差异。

基本上,当我绝对定位某些内容并且内容超过窗口高度或包含元素时,会出现滚动条,但是当我将位置更改为固定时,即使内容的高度与窗口,没有滚动条。

我为此创建了一个测试用例:

HTML:

<div class="page-container">
    <div class="helper">
        <div class="marker red"></div>
        <div class="marker green"></div>
        <div class="marker yellow"></div>
        <div class="marker blue"></div>
    </div>
</div>

CSS:

#slides-container {
    height: 100%;
    width: 100%;
    overflow: hidden;
}
.helper {
    height: 400%;
    width: 20px;
    position: fixed;   /* change this to absolute and the scrollbars appear*/
    top: 0;
    left: 0;
}
.helper .marker {
    height: 25%;
    width: 100%;
}
.marker.red {
    background: red;
}
.marker.green {
    background: green;
}
.marker.yellow {
    background: yellow;
}
.marker.blue {
    background: blue;
}

这里是小提琴:fiddle。 (查看CSS中的评论)

对此问题的解释表示赞赏。

1 个答案:

答案 0 :(得分:3)

固定定位意味着元素在视口中固定 - 它不受滚动影响。您可以在此处阅读更多内容:https://css-tricks.com/absolute-relative-fixed-positioining-how-do-they-differ/

由于没有其他任何东西可以为您的页面提供高度,因此在这种情况下您看到的只是固定元素的任何部分都适合您的视口。

查看在此版本中为容器设置高度时会发生什么: http://jsfiddle.net/93ubza81/3/

.page-content{
height: 3000px;
}

您已滚动,但固定元素不受影响。