垂直滚动时固定列。水平滚动时不固定。纯CSS

时间:2014-08-04 09:18:18

标签: html css

我有一个居中的页面,有两列填充窗口高度。 左列固定,因此在滚动时始终可见。 右列包装页面内容,通常比左列更大。

HTML:

<div class="main-container">
  <div class="col1">
    <p>Fixed column</p>
  </div>
  <div class="col2">
    <p>Content column</p>
  </div>
</div>

CSS:

.main-container {
  width: 300px;
  height: 100%;
  margin: 0 auto;
}

.col1 {
  position: fixed;
  width: 100px;
  height: 100%;
  background: fuchsia;
}

.col2 {
  width: 200px;
  margin-left: 100px;
  background: cyan;
}

当浏览器窗口比页面宽度窄时(本例中为300px),将出现一个水平滚动条,固定列将保持固定并飞越内容列< / strong>即可。我想避免这种

我可以用纯CSS(没有Javascript)实现这种垂直修复吗?

请参阅full example Plunker

澄清:垂直滚动条必须是窗口滚动条,而不是.col2中的内部滚动条。

4 个答案:

答案 0 :(得分:1)

<强> Demo

CSS

.col1 {
    position: fixed;
    width: 100px;
    height: 100%;
    background: fuchsia;
    z-index: 1; /* z-index lower than than .col2 */
}
.col2 {
    position: relative; /* position needed for z-index to work */
    width: 200px;
    margin-left: 100px;
    background: cyan;
    z-index: 2; /* z-index higher than than .col1 */
}

答案 1 :(得分:0)

我认为在您的情况下,您需要使用media queries或twitter bootstrap

答案 2 :(得分:0)

只需将CSS属性z-index:-1;添加到固定列.col1即可。

答案 3 :(得分:0)

您只能在.col2容器上使用绝对定位和溢出。这样,您仍然可以在垂直滚动上使用固定列,但不能在水平滚动上使用。

jsFiddle:http://jsfiddle.net/85fyC/

<强> CSS:

html, body {
    height: 100%;
    overflow-y: hidden;
}

.main-container {
    position: relative;
    width: 300px;
    height: 100%;
    margin: 0 auto;
}

.col1 {
    position: absolute;
    width: 100px;
    height: 100%;
    background: fuchsia;
}

.col2 {
    width: 200px;
    height: 100%;
    margin-left: 100px;
    overflow: auto;
}

.col2 .inner {
    background: cyan;
}

.col2 .inner p {
    margin: 0;
}