Javascript 垂直线形
请看一下: 我正在尝试垂直对齐内容,使其在较大(1920x1200)和较小(1024x768)分辨率上看起来都不错。我的意思是它没有滚动条。 正如您所见,有大量的可用空间,因此不需要滚动条 我提出的唯一解决方案是使用JS计算内容的高度并设置填充,但我意识到这是最糟糕的解决方案Javascript 垂直线形,javascript,html,css,Javascript,Html,Css,请看一下: 我正在尝试垂直对齐内容,使其在较大(1920x1200)和较小(1024x768)分辨率上看起来都不错。我的意思是它没有滚动条。 正如您所见,有大量的可用空间,因此不需要滚动条 我提出的唯一解决方案是使用JS计算内容的高度并设置填充,但我意识到这是最糟糕的解决方案 请告诉我如何做到这一点。如果您的内容高度是固定的,请在内容前面加一个div <div id="distance"></div> <div id="content"> Vertical
请告诉我如何做到这一点。如果您的内容高度是固定的,请在内容前面加一个div
<div id="distance"></div>
<div id="content">
Vertically centered :D
</div>
看看是否是您想要的。简单的解决方案
它的工作原理是强制containingdiv
充当表格单元格
,并使用垂直对齐:中间
样式。它根本不需要你知道任何元素的高度
小提琴中使用的代码如下
HTML:
其余的只是为了示范。CSS:
div.a {
border: 1px solid red;
}
div.b {
border: 1px solid blue;
height: 200px;
display:table-cell;
vertical-align:middle;
}
据我所知,使用纯CSS、无JS和无黑客攻击的唯一方法要求您知道要定位的对象的高度:
<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>
/*给出文档的高度*/
正文#内容{
身高:100%;
}
/*给出你的元素高度*/
.事情{
宽度:20px;
高度:300px;
背景:#000;
}
/*位置事物*/
#内容,东西{
位置:绝对位置;
最高:50%;
边缘顶部:-150px;/*物体高度的一半*/
}
编辑:更新了项目的高度,容器id。仍然可以正常工作。有一种方法可以在不使用javascript和不知道内容高度的情况下实现这一点,但纯粹主义者不会喜欢它。再说一次,有时它不被时尚人士认可也没关系。有时候,你所需要的只是完成工作,因为你的老板希望你这样做 解决方案是:使用一个表(告诉你纯粹主义者不会喜欢它)。不要以老派的方式布局,不要滥用HTML为表指定了许多功能这一事实 表格单元格是唯一具有垂直对齐属性的HTML元素,它实现了大多数人所期望的功能。只需为表格提供100%的宽度和高度(这样就可以随窗口大小而扩展),并使用单元格对齐来定位所需的内容 我只用过一次这个把戏,但它仍然让我感觉脏兮兮的,但当你真的需要它的时候,它比其他任何东西都管用
*注意:我自己是一个纯粹主义者,但我明白有时候男人必须做男人必须做的事。为了让这项工作起作用,我仍然需要用JS计算深灰色空间的高度,并将内容设置为该高度。然后我必须将#content内部元素包装到某个div中,并将您的技术应用到该div中。同样,它使用JS:)不是真的。你可以只使用灰色背景,将所有这些都包装在一个100%高的div中。在上述div之后,您放置页脚并给它一个负的上边距,以便将其移回视图。你只需要知道你的页脚有多高,你的主要内容有多高(例如,手写的内容+横线之间的内容)。我已经更新了html和css。请看一看。我将#content-inner元素包装成一个“div.inner”,并将#content的高度设置为100%。什么也没发生。很明显,我不明白你的意思,你能在我展示的网站上应用这个例子吗?我试图定位的东西的高度是300px,但为了工作,我需要在高度上扩展容器(不是“主体”,而是内容)。在我看来,这必须用JS来完成。你的意见无关紧要。我的意见无关紧要。重要的是“代码有效吗?”复制代码,将其输入任何编辑器,然后用自己的眼睛查看它是否有效。我知道它有效,但这不是我的情况。在我的例子中,#内容不会扩展到整个灰色区域,这就是问题所在。
display: table-cell
vertical-align: middle
div.a {
border: 1px solid red;
}
div.b {
border: 1px solid blue;
height: 200px;
display:table-cell;
vertical-align:middle;
}
<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>