html - 具有固定居中布局的页面,滚动条移动内容的位置

标签 html css scrollbar css-position

我有这个布局(简化)

<div id="main">
    <div id="header">
        ...
    </div>
    <div id="content">
        ...
    </div>
    <div id="footer">
        ...
    </div>
</div>

我需要固定页眉和页脚,同时保持内容可滚动。问题是所有 3 个都居中,如果我设置 #content {overflow-y: scroll;}并出现滚动条,<div id="content"> 的全部内容向左移动并且与页眉和页脚不一致。有办法防止吗?或者可能有一些解决方法?

编辑:JSFiddle example .

最佳答案

这就是你想要的?

我是用 Flexbox 做的,但是如果你不想使用修改后的盒子模型,我可以用 display: table 来做,例如。

演示:

  1. > Layout with Flexbox
  2. > Layout with display: table

**

我做了什么?

**

第一个演示:使用 Flexbox 进行布局

在这个演示中,我只在 body 元素中添加了以下类:

<body class="p-flexbox flex-vcc">
 <!-- The rest of your content -->
</body>

地点:

  1. p-flexbox 表示parent-flexbox
  2. flex-vcc 表示 flexbox-vertical-center-center

并遵循 CSS 规则:

.p-flexbox {
    /* Flexbox: Init setup */
    display: -webkit-box;
    display: -moz-box;
    display: box;
}
.flex-vcc {
    /* Flexbox: Principal setup */
    -webkit-box-orient: vertical;
    -moz-box-orient: vertical;
    box-orient: vertical;
    -webkit-box-pack: center;
    -moz-box-pack: center;
    box-pack: center;
    -webkit-box-align: center;
    -moz-box-align: center;
    box-align: center;
}

这是什么意思?这意味着 body 的所有 child 将以垂直轴为中心,并将以另一个轴(x 轴)为中心。

此外,我稍微更改了您的 CSS 代码,为一些元素添加了尺寸。

第二个演示:使用 display: table 进行布局

display: table 是在网页中进行布局的好方法。以前,Web 开发人员使用 table 元素(在标记中)进行布局。这不是一个好的做法,因为表格仅适用于表格数据。但是,如果您在样式中使用 display:table,您将获得与在标记中使用 table 元素进行布局相同的结果。

为此,您只需将以下类添加到“容器”元素(在我的例子中,div.principal):

div.principal {
   display: table;
}

这意味着 div.principal 的行为类似于 table 元素。有了它,您可以添加与表格相同的属性!

例如:border-collapseborder-spacing

嗯,就是这样。

干杯, 莱昂纳多

关于html - 具有固定居中布局的页面,滚动条移动内容的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17252428/

相关文章:

Android忽略滚动条大小

c# - 水平滚动条在 DataGridView 上不可见

html - 在 Safari 中同时转换平移、宽度和高度

javascript - 为什么 Click 事件不适用于 iOS 上的 li 元素?

jquery - 女儿 div 不跟随父 div

css - 将元素定位在父元素的底部

javascript - 检测何时出现窗口垂直滚动条

jquery - 具有数据属性的 Toggle 类

css - 实际表比。分区表

javascript - 无论如何都会出现具有 "display: none"样式的 Div