div的自动高度

时间:2011-07-28 09:54:13

标签: css height

浏览器仅在我设置精确高度时显示div。但我想根据它的内容创建可调整大小的div。尝试高度:自动和高度:100%。它没有帮助。

我的div看起来像那样。它是侧边栏和内容的背景div。

.wrapper
    {
        width: 80%;
        height:200px;
        max-width: 1260px;
        min-width: 780px;
        margin: 0 auto;     
        background-image:url(core/design/img/transfff.png);
        -moz-border-radius: 15px 15px 0px 0px;
        border-radius: 15px 15px 0px 0px;
    }

更新 我的HTML看起来像那样

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
<style type="text/css">

body {
    font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
    background-image: url(core/design/img/bg.png);
    background-position:top left;
    background-size:100%;
    background-color:#fff;
    background-repeat:no-repeat;
    margin: 0;
    padding: 0;
    color: #000;
}


ul, ol, dl { 
    padding: 0;
    margin: 0;
}
h1, h2, h3, h4, h5, h6, p {
    margin-top: 0;
    padding-right: 15px;
    padding-left: 15px; 
a img { 
    border: none;
}

a:link {
    color:#414958;
    text-decoration: underline; 
}
a:visited {
    color: #4E5869;
    text-decoration: underline;
}
a:hover, a:active, a:focus { 
    text-decoration: none;
}


.container {
    width: 80%;
    max-width: 1260px;
    min-width: 780px;
    margin: 0 auto; 
}

.wrapper
{
    width: 80%;
    height:200px;
    max-width: 1260px;
    min-width: 780px;
    margin: 0 auto; 
    background-image:url(core/design/img/transfff.png);
    -moz-border-radius: 15px 15px 0px 0px;
    border-radius: 15px 15px 0px 0px;
    overflow: visible
}

.header {
padding:20px;
}

.sidebar1 {
    float: left;
    width: 20%;

    padding-bottom: 10px;
}
.content {
    padding: 10px 0;
    width: 60%;
    float: left;
}
.sidebar2 {
    float: left;
    width: 20%;

    padding: 10px 0;
}

.content ul, .content ol { 
    padding: 0 15px 15px 40px; 
}


ul.nav {
    list-style: none; 
    border-top: 1px solid #666; 
    margin-bottom: 15px; 
}
ul.nav li {
    border-bottom: 1px solid #666; 
}
ul.nav a, ul.nav a:visited{
    padding: 5px 5px 5px 15px;
    display: block; 
    text-decoration: none;
    color: #000;
}
ul.nav a:hover, ul.nav a:active, ul.nav a:focus {
    background: #6F7D94;
    color: #FFF;
}

/* ~~The footer ~~ */
.footer {
    padding: 10px 0;
    position: relative;
    clear: both;
}


.fltrt {  
    float: right;
    margin-left: 8px;
}
.fltlft { 
    float: left;
    margin-right: 8px;
}
.clearfloat { /
    clear:both;
    height:0;
    font-size: 1px;
    line-height: 0px;
}
-->
</style><!--[if lte IE 7]>
<style>
.content { margin-right: -1px; } /* this 1px negative margin can be placed on any of the columns in this layout with the same corrective effect. */
ul.nav a { zoom: 1; }  /* the zoom property gives IE the hasLayout trigger it needs to correct extra whiltespace between the links */
</style>
<![endif]--></head>

<body>

<div class="container">
  <div class="header"><a href="#"><img src="core/design/img/logo.png" alt="Insert Logo Here" name="Insert_logo" width="438px" height="95" id="Insert_logo" style=" display:block; margin:0 auto;" /></a> 
    <!-- end .header --></div>
    <div class="wrapper">
  <div class="sidebar1">
</div>
  <div class="content">
    </div>
  <div class="sidebar2">
  </div>
    </div>
  <div class="footer">
  </div>
</div>
</body>
</html>

5 个答案:

答案 0 :(得分:72)

div自然会根据其内容调整大小。

如果您在div上没有设置高度,它将展开以包含其内容。

此规则的一个例外是div包含浮动元素。如果是这种情况,你需要做一些额外的工作,以确保包含div(包装器)清除浮动。

以下是一些方法:

#wrapper{
overflow:hidden;
}

或者

#wrapper:after
{
content:".";
display:block;
clear:both;
visibility:hidden;
}

答案 1 :(得分:4)

确保div中的内容以clear结尾:两种风格

答案 2 :(得分:3)

以下是问题的最新解决方案:

在您的CSS文件中,编写以下名为 .clearfix 的类以及伪选择器:after

.clearfix:after {
content: "";
display: table;
clear: both;
}

然后,在您的HTML中,将 .clearfix 类添加到您的父Div。例如:

<div class="clearfix">
    <div></div>
    <div></div>
</div>

它应该始终有效。您可以将类名称称为 .group 而不是 .clearfix ,因为它会使代码更具语义。 请注意,在双引号&#34;&#34;之间不需要在 Content 的值中添加点或甚至空格。

来源:http://css-snippets.com/page/2/

答案 3 :(得分:2)

根据this,您需要为包含div的元素指定高度,以使100%高度起作用。这对你有用吗?

答案 4 :(得分:2)

如Jamie Dixon先前所述,浮动的<div>被取出正常流量。仍在正常流程内的所有内容都将完全忽略它,并且不为其腾出空间。

尝试在每个border:solid 1px orange;元素周围添加不​​同颜色的边框<div>,以查看它们正在执行的操作。您可以从删除浮动并在div中放入一些虚拟文本开始。然后一次设置一个样式以获得所需的布局。