在滚动页面时,我在修复引导导航栏以正确调整宽度时遇到问题。
我希望导航栏在页面滚动时保持其包含元素的宽度,或者采用页面的整个宽度(从左到右)
我做错了什么,或者我需要做什么?
小提琴:https://jsfiddle.net/btckkdkk/12/
<div class="container">
<div id="renderbody">
<div id="renderbody-inner">
<nav class="navbar navbar-default" role="navigation" data-spy="affix" data-offset-top="100" style="margin-bottom:5px">
<div class="col-sm-12">
<button type="button" class="navbar-toggle navbar-toggle-sm navbar-left" data-toggle="collapse" data-target="#storysubmit-navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<form action="#" class="navbar-form navbar-form-custom navbar-left" role="search" id="searchForm" data-results-target="#storyList">
<div class="input-group">
<input type="text" class="form-control input-sm" placeholder="Search" name="searchTerms" id="searchTerms" />
<div class="input-group-btn">
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-default"><i class="glyphicon glyphicon-search"></i></button>
</div>
<a href="#" class="btn btn-sm btn-link" style="margin-right:30px">Advanced</a>
</div>
</div>
</form>
<div class="navbar-form navbar-right collapse navbar-collapse" style="padding-right: 15px; padding-left: 15px; margin-right:0" id="storysubmit-navbar">
<a href="#" class="btn btn-default btn-sm">
<i class="glyphicon glyphicon-pencil margin-right-5" aria-hidden="true"></i>
Submit
</a>
</div>
</div>
</nav>
<div style="height:500px; background-color:darkgray;">
</div>
<div style="height:500px; background-color:lightgray;">
</div>
<div style="height:500px; background-color:darkgray;">
</div>
<div style="height:500px; background-color:lightgray;">
</div>
</div>
</div>
</div>
答案 0 :(得分:1)
The Affix plugin通过添加或删除.affix
类来控制Navbar的行为。此类适用position: fixed;
属性。因此,您可以使用特殊属性来控制导航栏的宽度:
对于绝对定位的元素(具有
position: absolute
或position: fixed
的元素),它指定元素的边缘边缘与其包含块的边缘之间的距离。对于相对定位的元素(具有
position: relative
的元素),它指定元素移动到正常位置以下的数量。
当Navbar为fixed
位置时,其位置将相对于浏览器窗口计算。
我已将此CSS添加到您的https://jsfiddle.net/btckkdkk/8/:
.navbar.affix {
left: 0;
right: 0;
width: auto;
}
此代码在窗口的左右边缘之间拉伸导航栏。
检查结果:https://jsfiddle.net/glebkema/essb11a1/
您需要计算面板相对于浏览器窗口的宽度和位置。然后,您将能够模拟特定区块中面板的位置。
您可以通过媒体查询为每个width of the container设置Navbar的属性。公式是
90% * (width of the container - 2 * padding of the container)
所以代码是
.navbar.affix {
left: calc(15px + 5%);
right: calc(15px + 5%);
width: auto;
}
@media (min-width: 768px) {
.navbar.affix {
left: 50%;
right: auto;
width: 648px;
transform: translateX(-50%);
}
}
@media (min-width: 992px) {
.navbar.affix {
width: 846px;
}
}
@media (min-width: 1200px) {
.navbar.affix {
width: 1026px;
}
}