2012-07-20 60 views
0

我有一个“maincontent”div,它包含我的内容。有一些JavaScript(Fancybox)在其中显示图像。我试图让div的高度自动更改以配合其中的任何内容,以便div本身不滚动,但是整个网页都可以。如何为包含的内容制作div调整高度?

这里有一个网页,我想修复:http://willryan.us/content/photo.html

我试着用最小的高度,高度搞乱:汽车,溢出:汽车,等等,没有结果。高度:自动充当思想文本是div中唯一的东西,就像完全忽略javascript图像一样。

这里是我的CSS,因为它是现在:

div#content { 
overflow:auto; 
width:958px; 
height: 800px; 
position:absolute; 
top:50px; 
left:0px; 
background-color:#C0CACE; 

border:1px solid; 
border-color:#616161; 

-webkit-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
z-index:1; 

}

回答

0

你的问题在于使用绝对定位。对于常规文档流使用静态定位(默认),您不会遇到此问题。

UPDATE

你也不使用相对定位。

常规文档流程(没有明确指定它)是position: static;您使用绝对。绝对定位基本上将元素从文档的常规流程中取出,并将其放置在距离它最近的相对位置的父级。

你应该怎么做... 如果你需要你的包装位于“中心”。将“包装”设置为positon:relativemargin: 0px auto;并从所有内部元素中移除绝对位置。如果你需要在包装器中使用padding/margin缩进元素。

+0

对不起,但我只用绝对定位在我的代码(这不是很多)。你是说我应该使用相对定位? – 2012-07-20 16:06:07

+0

我会更新我的答案.. – 2012-07-20 16:10:04

+0

谢谢,我会尝试。填充和边距有没有区别? – 2012-07-20 16:19:42

0

这个问题与photobox div有关,如果你关闭绝对位置,它可以工作到它的高度,关闭高度,它适合。

如果您不需要绝对定位,则可以避免此问题。

你应该使用相对定位来重建你的页面。考虑到你只需要将你正在使用的div与text-align:center;放在父母身上,应该很容易。

+0

可能是一个愚蠢的问题,但将tex-align:center;对齐那些不是文本的东西? – 2012-07-20 16:16:23

+0

@WillRyan Event_Horizo​​n的声明和小提琴示例不正确。单词“测试”是一个文本节点,因此居中!只有内联元素将居中,而不是像DIV标签这样的块元素。在内部div上设置例如50px的宽度,它将不再居中。 – 2012-07-20 16:34:48

+0

@WillRyan @PeterPajchl是对的,我犯了我的匆忙。要中心块元素最简单的方法是使用'margin:0 auto':http://jsfiddle.net/cNdNg/1/ – 2012-07-20 17:13:57

0

我会建议你 使用 position: relative 不要在你的maincontent孩子中使用position:absolute。你在这里并不需要绝对。

  1. 删除#content高度(或使用最小高度)
  2. 删除#photobox高度(或使用最小高度)如果需要的话
  3. 删除#content溢出
  4. 设置所有#content孩子的位置相对(使用余量)

div#header { 
    background-image:url(content/assets/elements/header.png);backround-repeat:none; 
    width:960px; 
    height:50px; 
    z-index:2; 
    -webkit-border-radius: 10px 10px 0px 0px; 
    border-radius: 10px 10px 0px 0px; 
    -webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
} 

div#footer { 
    background-image:url(content/assets/elements/footer.png); 
    backround-repeat:none; 
    width:960px; 
    height:50px; 
    z-index:2; 
    -webkit-border-radius: 0px 0px 10px 10px; 
    border-radius: 0px 0px 10px 10px; 
    -webkit-box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
    box-shadow: 0px 0px 30px 0px rgba(0, 0, 0, 1); 
} 

div#content { 
    width:958px; 
    background-color:#C0CACE; 
    border:1px solid; 
    border-color:#616161; 
    -webkit-box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
    box-shadow: 0px 0px 50px 0px rgba(0, 0, 0, 1); 
    z-index:1; 
    overflow: visible; 
} 

div#photobox { 
    width: 769px; 
    margin-left: 95.5px; 
} 
+0

没有必要在每个元素上添加“width”属性。只有主包装器需要宽度,所有的孩子都应该相应地回流100%,或者使用填充/边距来修改内部布局。溢出:可见已过时,因为它是溢出的默认值。 – 2012-07-20 16:08:36

+0

谢谢!我会放弃这一点。你没有在代码中,但是我需要在某处放置“position:relative”吗?其实我只是意识到,所有这些元素(页眉,页脚,内容,photobox)都不包含在div中。我应该把它们放在一个主要div中,并且具有相对于该div的位置吗? – 2012-07-20 16:10:39

+0

在这里你不需要任何'position:relative'。当有些孩子处于“绝对”状态时,你只需要一个。 – zessx 2012-07-20 16:33:55

相关问题