Css 固定容器中居中对齐的可滚动div
我正在努力将Css 固定容器中居中对齐的可滚动div,css,html,css-position,Css,Html,Css Position,我正在努力将div中的div与position:fixed集中对齐(我需要将其固定,因为此UI将在现有页面的其余部分浮动)。中央div将包含大量内容,因此需要垂直滚动。它还需要使用maxwidth相对于视口水平缩放 这是我到目前为止所拥有的-它几乎就在那里-只是不知道如何集中黄色div 编辑我需要支持IE9,FF,Chrome,Safari如果可能的话 <!DOCTYPE html> <html lang="en" xmlns="http://www.w3.org/1999/
div
中的div
与position:fixed
集中对齐(我需要将其固定,因为此UI将在现有页面的其余部分浮动)。中央div
将包含大量内容,因此需要垂直滚动。它还需要使用maxwidth相对于视口水平缩放
这是我到目前为止所拥有的-它几乎就在那里-只是不知道如何集中黄色div
编辑我需要支持IE9,FF,Chrome,Safari如果可能的话
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>Test</title>
<style>
div {
padding: 0px;
margin: 0px;
}
#fix {
position: fixed;
left: 0px;
right: 0px;
top: 0px;
bottom: 0px;
background-color: red;
}
#my-wrap {
position: relative;
margin: 1em auto;
background-color: green;
width: 100%;
height: 100%;
}
#my-details {
position: absolute;
width: 50%;
max-width: 450px;
top: 20px;
background-color: yellow;
bottom: 0px;
overflow: scroll;
}
</style>
</head>
<body>
<div id="fix">
<div id="my-wrap">
<div id="my-details">
<p>Lots of content in here....</p>
<br style="clear: both" />
</div>
</div>
</div>
</body>
</html>
试验
div{
填充:0px;
边际:0px;
}
#修理{
位置:固定;
左:0px;
右:0px;
顶部:0px;
底部:0px;
背景色:红色;
}
#我的包裹{
位置:相对位置;
保证金:1em自动;
背景颜色:绿色;
宽度:100%;
身高:100%;
}
#我的细节{
位置:绝对位置;
宽度:50%;
最大宽度:450像素;
顶部:20px;
背景颜色:黄色;
底部:0px;
溢出:滚动;
}
这里有很多内容
谢谢 最简单的方法是相对定位
#my details
元素,而不是绝对定位它。然后,只需使用margin:0 auto
将元素居中即可。由于元素不再是绝对定位的,因此需要将其高度设置为100%
。要替换top:20px
,只需使用calc()
如下:height:calc(100%-20px)
或者,您可以将top:20px
更改为基于百分比的值,例如2%
。然后,只需使用高度为98%
,就可以避免使用calc()
。由于这可能不是最佳解决方案,您还可以使用以下方法:
基本上,此方法通过在父元素上添加一个
padding top
值来避免top:20px
。然后,该元素的父元素接收一个padding top
值1em
,以替换边距:1em auto
,这样行吗@JoshCrozier是的-谢谢-这在chrome中运行得很好-不幸的是,我需要支持IE9,Safari,所以使用css3 calc并不是一个真正的选项您可以将“我的包裹宽度”设置为100%。这意味着,它的宽度将取决于屏幕分辨率。在这种情况下,您可以使用jQuery获取#my_wrap的宽度,然后定位黄色div。但是您确定需要父级为100%吗?也许设置一个固定的宽度,将其居中,然后只使用CSS定位黄色的就足够了?@Lessugar谢谢-我不想使用jQuery来控制布局-我只是觉得这必须仅使用CSS才能实现。不过,我想我可以在旧浏览器中使用多边形填充来调整细节的高度
#my-details {
position:relative;
margin:0 auto;
height:calc(100% - 20px);
width: 50%;
max-width: 450px;
top: 20px;
background-color: yellow;
bottom: 0px;
overflow: scroll;
}
#fix {
padding-top:1em;
}
#my-wrap {
padding-top:20px;
}