【问题标题】:Placing a scrollable div below a fixed div of variable height在可变高度的固定 div 下方放置一个可滚动的 div
【发布时间】:2014-02-11 16:06:02
【问题描述】:

这是关于 jquery mobile 中的移动页面

我在父 div(data-role=header) 中有 2 个 div,如下所示

<div data-role="header">
<div class="inner-topHeader-panel"></div>
<div class="inner-centercontent"></div>
</div>

我希望“inner-topHeader-panel”的位置固定(注意:它的高度可变)和“inner-centercontent”放置在“inner-topHeader-panel”下方并且可以滚动。滚动时,向上滚动的部分应隐藏在“inner-topHeader-panel”div后面。

目前的 CSS 如下。

.inner-topHeader-panel{ 
    width:100%; 
    height:auto; 
    margin:0; 
    background:#fff; 
    border-bottom:none;
    float:left;
    position:fixed !important; 
    top:0;
}

.inner-centercontent{
  width:100%;
float:left;
 padding-bottom: 50px;
 }

解决方案: 感谢@LessQuesar、@ezanker 和 @mainguy,我将第二个 div 的 css 设置如下,并且成功了!

.inner-centercontent{ 
width:100%; 
height:100px;
overflow: hidden;
overflow-y: auto;
float:left;  
position:fixed !important;  
padding-bottom: 50px;
}

我根据 .inner-topHeader-panel 的高度使用 jQuery 设置 .inner-centercontent 的顶部位置

【问题讨论】:

  • 固定元素不占用垂直空间。如果你真的需要内容在下面的效果,你需要一些 JS 来根据第一个 div 的高度来修复第二个 div 的顶部填充。

标签: jquery html css jquery-mobile


【解决方案1】:

pageshow上,计算固定div的高度并将其下方div的margin-top设置为该值:

$(document).on("pageshow", "#page1", function(){
    var fixedH = $(".inner-topHeader-panel").outerHeight(true);
    $(".inner-centercontent").css("margin-top", fixedH + "px");
});

DEMO

【讨论】:

    【解决方案2】:

    CSS:

    .inner-topHeader-panel {
      width: 100%;
      height: auto;
      margin: 20;
      background: white;
      border-bottom: none;
      float: left;
      clear: both;
      top: 0;
      z-index: 1000;
    }
    .inner-centercontent {
      width: 100%;
      float: left;
      height: 600px;
      overflow: scroll;
      padding-bottom: 50px;
    }
    

    Plunker

    只有当高度小于内部内容时才会滚动。

    【讨论】:

      猜你喜欢
      • 2011-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-30
      • 1970-01-01
      相关资源
      最近更新 更多