【问题标题】:Overlay div over another div将 div 覆盖在另一个 div 上
【发布时间】:2011-10-06 22:52:49
【问题描述】:

我尝试了在这里找到的建议(使用负边距底部或使用 position: aboslute)将 div 覆盖在另一个 div 上,并且在其他情况下效果很好。但由于某些原因,它现在无法正常工作。

这是我的html:

       <div id="header" class="lightgradient">

            <div id="headerContent" class="container">

                <div id="logo" class="span-6">

                    <a href="/">

                        <img src="/images/logo.png" width="230" height="62" />

                    </a>

                </div>

                <div id="menucontainer" class="span-14"><ul id="menu"><li>

<a href='/Services/Index'>TJ&#196;NSTER</a></li>

<li>

<a href='/About/References'>KUNDER</a></li>

<li>

<a href='/About'>OM OSS</a></li>

<li>

<a href='/About/Contact'>KONTAKT</a></li>

</ul></div>

                <div id="logindisplay" class="span-2">

                        <a href="/Account/LogOn">Logga in</a>



                </div>

            </div>

        </div>



    <div class="banner">

        <div class="container white">

            <div class="span-12">
[etc...]

我希望徽标突出在“横幅”上方。

我试过这个,例如:

#logo
{
    float: left;
    height: 70px;
    padding: 10px 10px 0px 10px;
    position: relative;
    margin-bottom: -40px;
    z-index: 40;
}

但这行不通。它可以很好地移动 div 和 logo 图像,但图像被横幅隐藏在底部,即使我设置了高 z-index,而且我在 div 内获得了一个包含徽标的滚动条......

如何使图像位于横幅顶部,以及如何摆脱滚动条?

编辑:

这也是横幅 css:

.banner
{
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#70b8ea', endColorstr='#2c6dc3'); 
    background: -webkit-gradient(linear, left top, left bottom, from(#70b8ea), to(#2c6dc3)); 
    background: -moz-linear-gradient(top,  #70b8ea,  #2c6dc3);
    border-bottom:2px solid #fff;
    border-top: 1px solid white;
    padding: 20px;
}

【问题讨论】:

    标签: css html overlay


    【解决方案1】:

    您的标记不允许 margin-bottom 技巧起作用,因为您的 #logo div 嵌套在一组不同的元素中。

    您必须绝对定位徽标并将其相对于包含#logo div 和.banner div 的父元素放置。

    http://jsfiddle.net/DOSBeats/NXgq6/

    这是使用position:absolute 的示例。在示例中,我没有在父元素上使用position:relative,但如果您使用的是网格系统,我会检查以确保主.row.container-(12||16) 具有position:relative 属性集。

    这将确保任何left:15px; top:25px; 将与其余内容居中。

    编辑:

    在这里查看您的代码后,您需要更新您的 CSS/HTML。

    1. #header#headerContent 中删除所有对position:relative 的引用
    2. 在您的 #wrap div 之后,您需要添加另一个 &lt;div class="container"&gt; 并在关闭 #wrap 元素的 &lt;/div&gt; 之前将其关闭。
    3. #headerContent 元素上的overflow:auto 更改为overflow:hidden,以消除最右侧的滚动条。

    【讨论】:

    • 非常感谢您提供的说明性示例!但是,我仍然无法让它工作,使用绝对定位。我正在尝试使用一个框架(但开始后悔),蓝图。但是每个祖先 div 确实有 position:relative 集,如果我理解正确,它们应该是什么?我还有一个“包装”div(带有位置:相对),它包装了徽标和横幅,但它不是两者的直接父级。但是据我从您的示例中可以看出,他们也没有共同的直系父母,对吗?为什么你的例子有效,而我的东西却没有……?
    • 一个绝对定位的元素将从位置设置为相对的 closets 父元素获取它的起点。我只会将主要父元素设置为相对。你能在某个地方发个链接让我看看吗?如果我能看到实时代码,我将能够更好地为您提供指导。快速理解它的方法是说“我绝对是相对于 y 元素定位 x 元素”
    • 地址在这里:www.testserver.dita.nu/Home/Test。只有那个页面是相关的,网站上的其他页面还没有被重写以适应蓝图。
    • 我更新了我上面的帖子来帮助你实现你的目标。让我知道结果如何。
    • 嗯,它确实完成了在外面和上面获取徽标,并且它摆脱了滚动条,但是有一个问题:因为我删除了 headerContent 上的 position:relative,所以 logo 似乎没有不再相对于 headerContent 进行绝对定位,这意味着它被放置在它之外(向左),并且不在它的流中。这意味着整个菜单向左移动(到徽标应该在的位置)...
    猜你喜欢
    • 2013-01-27
    • 2011-02-25
    • 2014-11-12
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多