【问题标题】:Negative margin affects the absolute positioned div on same level负边距影响同一级别的绝对定位 div
【发布时间】:2015-03-24 17:52:38
【问题描述】:

我有一个#left,绝对定位的 div 和右侧的 2 个其他 div。当我向右侧的#top div 添加边距时,它也会影响#left div。我知道有一个边距崩溃的东西,但它是否也会影响position:absolute

代码真的很简单,没什么特别的,但是找不到解决办法。

* {
    padding:0;
    margin:0;
}

#wrapper {
    width:400px;
    height:400px;
    background:gray;
    position:relative;
    margin-left:100px;
}

#left {
    background:pink;
    width:100px;
    height:100%;
    left:-100px;
    top:0;
    position:absolute;
}

#right {
    background:red;
}

#top {
    background:green;
    height:26px;
}

<div id="wrapper">
    <div id="left">Left</div>
    <div id="top">top</div>
    <div id="right">Right</div>
</div>

Jsfiddle:http://jsfiddle.net/9thvLfe0/2/

【问题讨论】:

    标签: css html css-position absolute


    【解决方案1】:

    只需将其添加到#top:

    float:right;
    width:100%;
    

    JSFiddle

    【讨论】:

      【解决方案2】:

      只给顶部的边距,给左边的负边距。

      【讨论】:

      • 是的,如果我找不到其他解决方案,我会这样做。
      【解决方案3】:

      嗯,问题是你的#wrapper 是相对的,而#left 是绝对的。 通过继承,#top 和#right 也是相对的。因此,在这些条件下向顶部添加负边距,它会将其添加到#wrapper。

      您可以将#wrapper 更改为“固定”位置,但您必须手动将边距/填充设置为#hide-top,因为事实上,他将隐藏在#wrapper 下。除非你这样设置:

      #hide-top {
          position: relative;
          top: 400px;
      }
      

      然而,我的解决方案不是更改您的 CSS,而是更改您的 JQuery。您可以使用 hide() 函数隐藏#top。例如,请参阅我的JSFiddle ;)。

      【讨论】:

      • 谢谢,但我想用动画从屏幕上滑出 div。(SlideUp 对我来说不是完美的解决方案)请查看更新的链接:jsfiddle.net/9thvLfe0/2
      猜你喜欢
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-26
      • 2011-05-17
      • 1970-01-01
      相关资源
      最近更新 更多