请看看这个:http: //sources.freehosting.bg/landing.html
我正在尝试垂直对齐#content,使其在较大的(1920x1200)和较小的(1024x768)分辨率上看起来不错。我的意思是它没有滚动条。如您所见,有足够的可用空间,因此不需要滚动条。
我想出的唯一解决方案是用 JS 计算 #content 的高度并设置填充,但我意识到这是最蹩脚的解决方案。
请告诉我如何实现这一目标。
请看看这个:http: //sources.freehosting.bg/landing.html
我正在尝试垂直对齐#content,使其在较大的(1920x1200)和较小的(1024x768)分辨率上看起来不错。我的意思是它没有滚动条。如您所见,有足够的可用空间,因此不需要滚动条。
我想出的唯一解决方案是用 JS 计算 #content 的高度并设置填充,但我意识到这是最蹩脚的解决方案。
请告诉我如何实现这一目标。
看看这个小提琴是不是你要找的。简单的解决方案 IMO。
它通过强制包含div
表现为 atable-cell
并利用vertical-align: middle
样式来工作。它根本不需要您知道任何元素的高度。
小提琴中使用的代码如下。
HTML:
<div class="a">
text inside div a
<div class="b">
text inside div b
</div>
</div>
重要的样式是:
display: table-cell
vertical-align: middle
其余的只是为了演示。CSS:
div.a {
border: 1px solid red;
}
div.b {
border: 1px solid blue;
height: 200px;
display:table-cell;
vertical-align:middle;
}
我知道的唯一方法是使用纯 CSS、没有 JS 和没有 hacks 要求你知道你试图定位的东西的高度:
<html>
<head>
<style type="text/css">
/* Give your document height */
body, #content {
height: 100%;
}
/* Give your element height */
.thing {
width: 20px;
height: 300px;
background: #000;
}
/* Position thing */
#content .thing {
position: absolute;
top: 50%;
margin-top: -150px; /* half the height of the thing */
}
</style>
</head>
<body>
<div id="content">
<div class="thing"></div>
</div>
</body>
</html>
编辑:更新了项目的高度,容器 ID。仍然工作得很好。
如果您的内容高度是固定的,请在内容之前放置一个 div
<div id="distance"></div>
<div id="content">
Vertically centered :D
</div>
并将其设置为:
html, body {
height:100%;
margin:0;
padding:0;
}
div#distance {
width:1px;
height:50%;
margin-bottom:-300px; /* half of website height */
float:left;
}
div#content {
text-align:left;
margin:auto;
position: relative;
width: 950px;
height: 600px;
clear: left;
}
</p>
有一种方法可以在不使用 javascript 且不知道内容高度的情况下执行此操作 - 但纯粹主义者不会喜欢它。话又说回来,有时候不被潮流人士认可也没关系。有时你所需要的只是完成工作,因为你的老板想要那样做。
解决方案是:使用一张桌子(告诉你纯粹主义者不喜欢它)。使用老式的方式布局并滥用 HTML 为表格指定了许多功能这一事实。
表格单元格是唯一具有垂直对齐属性的 HTML 元素,该属性可以满足大多数人的期望。只需为表格提供 100% 的宽度和高度(以便随窗口大小扩展)并使用单元格对齐来定位您想要的内容。
我只用过一次这个技巧,它仍然让我觉得很脏*但是当你真的需要它时,它比其他任何东西都好用。
*注意:我自己是一个纯粹主义者,但明白有时男人必须做男人必须做的事情。