css问题,外部div无法获取内部div的高度

标签 css html

请为我解答这个谜团..

我有最简单的网络表单布局,即页眉、内容和页脚。 我在内容 div 中放置了一些 div,其中应该包含弹出菜单。现在内容 div 无法获取菜单 div 的高度,就好像它不是它的儿子一样。但是,菜单 div 确实获取了内容的 div 右边框和左边框。 我使用“检查元素”工具检查,内容 div 的高度为 0。 为什么?为什么?为什么菜单的 div 不被视为内容 div 的子元素。

这里是一些脚本:

<body>
    <form id="formMaster" runat="server">
    <div id="header">
        bla bla
    </div>
    <div id="main">
        <div>
            <ucCatMenu:MenuControl ID="CatMenu" runat="server" />
        </div>
    </div>
    <div id="footer">
        bla bla
    </div>
    </form>
</body>

这是菜单的Web用户控制代码(有点长,我只是全部粘贴):

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="wucCategoriesMenu.ascx.cs"
    Inherits="Controls_wucCategoriesMenu" %>
<style type="text/css">
    /* ================================================================ 
This copyright notice must be untouched at all times.

The original version of this stylesheet and the associated (x)html
is available at http://www.cssmenus.co.uk
Copyright (c) 2009- Stu Nicholls. All rights reserved.
This stylesheet and the associated (x)html may be modified in any 
way to fit your requirements.
=================================================================== */


    #flyout
    {
        list-style: none;
        margin: 3px 0px 0px;
        padding: 0px;
        width: 180px;
        float: right;
        position: relative;
    }

    #flyout ul
    {
        list-style: none;
        margin: 0px;
        padding: 0px;
        left: -9999px;
        top: 0px;
        width: 180px;
        height: auto;
        position: absolute;
    }
    #flyout table
    {
        margin: -1px -10px;
        width: 0px;
        height: 0px;
        border-collapse: collapse;
    }
    #flyout li
    {
        margin-bottom: 1px;
        float: left;
    }
    #flyout li a
    {
        background: rgb(136, 136, 136);
        width: 170px;
        height: 24px;
        text-align: right;
        color: rgb(0, 0, 0);
        line-height: 24px; /*padding-right: 10px;*/
        font-family: arial, sans-serif;
        font-size: 11px;
        text-decoration: none;
        float: left;
        display: block;
    }
    #flyout li a.fly
    {
        background: rgb(136, 136, 136);
    }
    #flyout li:hover
    {
        position: relative;
    }
    #flyout li a:hover
    {
        color: rgb(255, 255, 255);
        position: relative;
        background-color: rgb(238, 102, 0);
    }
    #flyout li:hover > a
    {
        color: rgb(255, 255, 255);
        background-color: rgb(238, 102, 0);
    }
    #flyout ul li a
    {
        background: rgb(170, 170, 170);
    }
    #flyout ul li a.fly
    {
        background: rgb(170, 170, 170);
    }
    #flyout ul ul li a
    {
        background: rgb(204, 204, 204);
    }
    #flyout ul ul li a.fly
    {
        background: rgb(204, 204, 204);
    }
    #flyout ul ul ul li a
    {
        background: rgb(221, 221, 221);
    }
    #flyout li a.current
    {
        color: rgb(255, 255, 255);
        background-color: rgb(204, 68, 0);
    }
    #flyout ul li a.current
    {
        color: rgb(255, 255, 255);
        background-color: rgb(204, 68, 0);
    }
    #flyout ul ul li a.current
    {
        color: rgb(255, 255, 255);
        background-color: rgb(204, 68, 0);
    }
    #flyout ul ul ul li a.current
    {
        color: rgb(255, 255, 255);
        background-color: rgb(204, 68, 0);
    }
    #flyout :hover ul
    {
        left: -160px;
    }
    #flyout :hover ul :hover ul
    {
        left: -160px;
    }
    #flyout :hover ul :hover ul :hover ul
    {
        left: -120px;
    }
    #flyout :hover ul ul
    {
        left: -9999px;
    }
    #flyout :hover ul :hover ul ul
    {
        left: -9999px;
    }
    #flyout ul li:hover > a
    {
        color: rgb(255, 255, 255);
        background-color: rgb(238, 102, 0);
    }
    #flyout ul ul li:hover > a
    {
        color: rgb(255, 255, 255);
        background-color: rgb(238, 102, 0);
    }
</style>
<div>
    <ul id="flyout">
        <li><a class="fly" href="/globalop/pages/CatPage.aspx"><b>category</b><!--[if gte IE 7]><!--></a><!--<![endif]-->
            <!--[if lte IE 6]><table><tr><td><![endif]-->
            <ul>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li class="last"><a href="#url"><b>sub category</b></a></li>
            </ul>
            <!--[if lte IE 6]></td></tr></table></a><![endif]-->
        </li>
        <li><a class="fly" href="/globalop/pages/CatPage.aspx"><b>category</b><!--[if gte IE 7]><!--></a><!--<![endif]-->
            <!--[if lte IE 6]><table><tr><td><![endif]-->
            <ul>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li><a href="#url"><b>sub category</b></a></li>
                <li class="last"><a href="#url"><b>sub category</b></a></li>
            </ul>
            <!--[if lte IE 6]></td></tr></table></a><![endif]-->
        </li>
    </ul>
</div>

最重要的是,我在页面末尾看到一个很长的滚动条,原始示例(从中获取弹出菜单代码)没有显示。

但我只是想了解为什么“主”div 没有获取菜单 div 的高度并且它显示 height = 0。

提前致谢。

最佳答案

您好,实际上您已经将 float 赋予了子 div,并且没有清除父 div,因此如果您在子 div 中使用 float ,请务必清除父 div...

现在你的主 div 已被清除并且正确地获取了他的高度。

这是更新后的 HTML 和 css 代码 http://jsfiddle.net/Y6KMN/1/

关于css问题,外部div无法获取内部div的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9835540/

相关文章:

javascript - 如何从 url 打开 Visual Studio 代码

javascript - 将文本和 html unicode 字符添加到文本区域元素

javascript - 如何检查网格的特定位置是否有元素?

javascript - jQuery 从右侧表单显示一个像幻灯片一样的 div

javascript - AngularJS 下拉多选不工作

javascript - 我如何添加时间来显示输入按钮

javascript - 在 JavaScript 中对表格进行排序 - 隐藏没有后续行的表格行

javascript - 如何将按钮更改为可点击的图像

css - nth-Child 循环重复

html - 既然存在可访问性选项,是否可以使用表格进行布局?