代码之家  ›  专栏  ›  技术社区  ›  DA.

jquery,切换div,css间距问题

  •  2
  • DA.  · 技术社区  · 16 年前

    我有这个标记:

    <div class="myToggledDiv">
        <div>content</div>
    </div>
    
    <div style="margin-top: 10px;">
        content
    </div>
    

    通过jquery,我正在做一个.slidetoggle来显示/隐藏顶部的分区。

    无论是折叠还是展开,我都希望两个沙发之间始终有10px的空间。

    但是,其行为是,当顶部DIV向下滑动时,10px的页边距保持不变,但一旦顶部DIV向下滑动完毕,10px的页边距就消失了。这似乎是一个保证金崩溃的问题。

    我想到的解决方案是:

    <div class="myToggledDiv">
        <div>content</div>
    </div>
    
    <div style="font-size: 1px">&nbsp;</div>
    
    <div style="margin-top: 10px;">
        content
    </div>
    

    关键在于该分区中需要有内容来“分隔”这两个分区,并保留10px的页边距。

    我也尝试了.clearfix:after方法,但在这个场景中不起作用,所以这可能是一个以jquery为中心的问题。有没有人遇到过这个问题,发现了比额外的DIV更优雅的解决方案?

    2 回复  |  直到 10 年前
        1
  •  4
  •   Doug Neiner    16 年前

    信不信由你,你只需要增加一个 1px 填充到父容器的顶部。问题是,在 slideToggle 第一 div 设置为 display:none 这将导致第二个分区与父分区轻拍。现在,它只是一个CSS错误。如果没有 padding 在父项上设置,子项的边距将变为 外部 并向下推两个项目。通过应用 1PX 对父元素的边距,强制 margin 要留在元素内:

    <body style="padding-top: 1px">
      <div class="myToggledDiv">
          <div>content</div>
      </div>
    
      <div style="margin-top: 10px;">
          content
      </div>
    </body>
    

    显然,您希望删除所有这些内联样式,并根据需要使用单独的样式表和ID/类。

    如果您需要偏移额外的填充(取决于您的布局),您可能只需要使用:

    { margin-top: -1px; padding-top: 1px }
    
        2
  •  3
  •   Community Mohan Dere    9 年前

    有点奇怪,但您可以为第二个DIV设置以下规则:

    { position:relative; top:10px; }
    

    在线演示: http://jsbin.com/enala/edit

    我也鼓励你考虑 Doug's Answer . 如果在父容器上设置填充会产生不需要的结果,您可以选择使用此解决方案。