代码之家  ›  专栏  ›  技术社区  ›  kevtrout

为什么动态生成的内容不改变包含div的高度?

  •  3
  • kevtrout  · 技术社区  · 16 年前

    我正在编写一个页脚div,用于显示数据库中的信息。页脚的背景颜色与页面的其他部分不同,其高度取决于数据库向其抛出的内容量。当我使用php生成内容并在页脚div周围调用边框时,内容会显示出来,比如说,高400px,但div边框在div顶部显示为1px高的矩形。

    如何获得高度以自动适应内容?

    <div id="footer">
    <?php 
    
    
        $an_array=array();
        $tasks=mysql_query("select stuff from the db");
    
        while($row=mysql_fetch_assoc($tasks)){
            extract($taskrow);
            $an_array[]=$task;
            }
    
        $an_array=array_chunk($an_array,4);
    
        foreach($an_array as $dtkey=>$dtval){
            echo "<dl>";
            foreach($dtval as $dtvkey=>$dtvval){
                echo "<dt>".$dtvval."</dt>";
    
            }
            echo "</dl>";
            }
    ?>
    </div>
    

    这就是我得到的。红色边框下方的区域应填充一种颜色。 border image http://www.kevtrout.com/tortus/div.png

    根据大众需求,以下是css:

    #footer{
            border-top: 10px solid #d8d8d8;
            background:#5b5b5b;
            /*overflow:auto;*///Added this after seeing your answers, it worked
    
             }              
    dl.tr{
            width: 255px;
            height:160px;
            background: #5b5b5b;
            margin:0px;
            float:left;
            padding: 10px;
            }
    
        dt.tr{
            font-weight: normal;
            font-size: 14px;
            color: #d8d8d8;
            line-height: 28px;
            }
    

    编辑:我在mac上使用firefox

    4 回复  |  直到 16 年前
        1
  •  7
  •   scunliffe    16 年前

    检查你的页脚CSS。..如果你将overflow设置为auto/roll之外的任何值,那么DIV将不会增长。

    如果不尝试使用DL/DT以外的东西,因为DT是内联元素,它们不会推动你的div来适应内容*

    例如,只需尝试使用DIV,如果页脚变大,你就有了答案。

    (注:我修改了建议顺序)

    *(我意识到,从规格上讲,这 不应该 这是一个问题,但没有迹象表明这是在哪些浏览器中发生的,因此,如果IE的渲染与预期不同,我一点也不会感到惊讶,例如)

        2
  •  2
  •   Ulf Gjerdingen angelo.mastro    9 年前

    如果没有看到CSS,我猜你的 <dl> s被浮动以使它们并排放置。包含 <div> 则不会扩展以包含它们。如果是这样,添加一个 clear:both; 决赛前 </div> 应该修复它,如下所示:

    <div style='clear:both;'></div>
    
        3
  •  0
  •   Lasar    16 年前

    浏览器不在乎你的内容是由PHP生成的还是来自静态HTML文件。

    这个问题很可能出现在你的CSS中。您放在页脚中的内容具有定位属性(如float:left或position:absolute),将其放置在div的“外部”,或者div具有固定大小和/或溢出属性集。

    我建议把你的CSS文件贴在这里,或者(如果它太大)把它放在我们可以查看的地方。完成的HTML(如果你的系统还没有联机,你可以保存输出的静态副本)也不会有什么坏处。

        4
  •  0
  •   Konrad Rudolph    16 年前

    顺便说一句,您对 <dl> 元素错误:您缺少 <dd> 元素。定义列表中的项目始终由一个定义组成 学期 以及一个或多个 定义 (在您的代码中缺少这些)。

    此外,与其使用 <div style='clear:both;'></div> 正如史蒂夫所建议的,我建议明确说明你的身高 <dt> 元素。这样,浮子就不必清理了。