Bootstrap - div 在 div 上滑

Bootstrap - div over div slideup

我无法理解这个问题:我正在使用 bootstrap 创建一个移动网络应用程序。所以我有一个带有导航栏的容器,一些 divs 和下面的药丸导航:

<div class="container">
<!-- top navbar -->
    <nav class="navbar navbar-default navbar-fixed-top">
    <!-- ... -->
    </nav>

    <div class="tab-content">

        <div role="tabpanel" class="tab-pane active fade in" id="map-panel">
            <div id="map"></div>


            <div class="container-fluid" id="teaser-container">
                <div class="row" id="teaser-slideup-button">
                    <div class="col-xs-12">
                        <a role="button" href="#teaser-content">
                            <i class="fa fa-chevron-up"></i>
                        </a>
                    </div>
                </div>
                <div class="row" id="teaser-header">
                    <div class="col-xs-12">Teaser header</div>
                </div>

                <div id="teaser-content">
                    <div class="row">
                        <div class="col-xs-12">
                            <div style="height: 160px" />
                        </div>
                    </div>
                </div>
            </div>            
        </div>
    </div>

    <nav class="navbar navbar-default navbar-fixed-bottom">
        <!-- ... -->
    </nav>

</div>

我想做的是让#teaser-container 从下方滑过#map。基本上

$('#teaser-slideup-button').on('click', function (e) {

     $('#teaser-container').animate({
            'bottom': '0px'
     });

});

一些相关的CSS:

#teaser-container {
    z-index:1000; 
    position: absolute;
    bottom: -100px;
    background: #fff;
    width: 100%;
    display: inline-block;
    overflow-y: hidden;
}

#map-panel {
    position: absolute;
    top: 0px;
    overflow-y: hidden;
    height: 100%;
    width: 100%;
}

但是,发生的是 div 刚刚出现,似乎动画随后发生,向上滚动地图 div。我在这里创建了一个 JSFiddle:

https://jsfiddle.net/jrubisch/hvpjrwrq/

我想这应该不难,但我在这里有点困惑...如果需要,我很乐意提供更多详细信息。

谢谢!

这可能有帮助也可能没有帮助,看起来和似乎以类似的方式操作,但使用按钮和手风琴。

var map;

function initialize() {
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    zoom: 8,
    center: {
      lat: -34.397,
      lng: 150.644
    }
  });
}

google.maps.event.addDomListener(window, 'load', initialize);

$('.collapse').on('shown.bs.collapse', function() {
  $(this).parent().find(".fa-chevron-up").removeClass("fa-chevron-up").addClass("fa-chevron-down");
}).on('hidden.bs.collapse', function() {
  $(this).parent().find(".fa-chevron-down").removeClass("fa-chevron-down").addClass("fa-chevron-up");
});
html,
body,
#map-canvas {
  height: 100%;
  margin: 0;
  padding: 0;
}
.navbar {
  margin-bottom: 0 !important;
}
.navbar-fixed-bottom .col-md-6 {
  padding: 0;
  border: none;
}
.navbar-fixed-bottom .btn {
  width: 100%;
  height: 50px;
  border-radius: 0;
  margin: 0;
  border: none;
  padding-top: 15px;
}
.navbar-fixed-bottom .panel-group,
.navbar-fixed-bottom .panel-heading {
  padding: 0;
  margin: 0;
  border: none;
  border-radius: 0;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"> <span class="sr-only">Toggle navigation</span>  <span class="icon-bar"></span>  <span class="icon-bar"></span>  <span class="icon-bar"></span> 
      </button>
      <a class="navbar-brand" href="#">Brand</a> 
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
      <ul class="nav navbar-nav">
        <li class="active"><a href="#">Link <span class="sr-only">(current)</span></a>
        </li>
        <li><a href="#">Link</a>
        </li>
        <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Dropdown <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#">Action</a>
            </li>
            <li><a href="#">Another action</a>
            </li>
            <li><a href="#">Something else here</a>
            </li>
            <li role="separator" class="divider"></li>
            <li><a href="#">Separated link</a>
            </li>
            <li role="separator" class="divider"></li>
            <li><a href="#">One more separated link</a>
            </li>
          </ul>
        </li>
      </ul>
    </div>
    <!-- /.navbar-collapse -->
  </div>
</nav>
<div id="map-canvas"></div>
<div class="navbar navbar-default navbar-fixed-bottom">
  <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
    <div class="panel panel-default">
      <div class="panel-heading" role="tab" id="headingOne">
        <div class="btn btn-warning" id="lowerOpen" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="false" aria-controls="collapseOne"> <i class="fa fa-chevron-up"></i> 
        </div>
      </div>
      <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
        <div class="panel-body">Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua
          put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table,
          raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.</div>
      </div>
    </div>
  </div>
  <div class="col-md-6">
    <div class="btn btn-primary"><i class="fa fa-map-marker"></i> Some</div>
  </div>
  <div class="col-md-6">
    <div class="btn btn-default"><i class="fa fa-sliders"></i> Controls</div>
  </div>
</div>

我通过重新分组标记解决了这个问题:

<div class="container-fluid" id="teaser-container">

    <div class="teaser-inner">
        <div class="row" id="teaser-slideup-button">
            <div class="col-xs-12">
                <a role="button" href="#">
                    <i class="fa fa-chevron-up"></i>
                </a>
            </div>
        </div>
        <div class="row" id="teaser-header">
            <div class="col-xs-12">Teaser Header</div>
        </div>

        <div class="row" id="teaser-content">
            <div class="col-xs-12">
                <div style="height: 160px" />
            </div>
        </div>
    </div>
</div>

在父级上使用 position:relative,在子级上使用 position:absolute

#map-panel {
    height: 100%;
    width: 100%;
    position: relative;
}
#teaser-container {
    z-index:1000; 
    position:absolute; 
    bottom: 20px;
    background: #fff;
    width: 100%;
    height:40px;
    overflow: hidden;     
}

并为高度设置动画 属性(基本上是 $.slideUp 所做的)

$('#teaser-container').animate({
    'height': '260px'
}, 500);

如果有人知道更优雅的解决方案,请告诉我