我正在尝试使用bootstrap创建一个设计,它有一个固定的顶部导航栏,下面有两列。第一列有一个固定的顶部div,具有完整的父级宽度,下面有更多内容可以滚动(固定的div和导航栏)。第二列有一个覆盖整个列的图像,仅此而已。
我做了以下事情:
<nav class="navbar navbar-default navbar-fixed-top black">
<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="#">OWOL</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 navbar-right">
<li><a href="#">HOME</a></li>
<li><a href="#">EVENTS</a></li>
<li><a href="#">SPONSORS</a></li>
<li><a href="#">DASHBOARD</a></li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container-fluid -->
</nav>
<div class="container-fluid" style="margin-top: 80px;">
<div class="row">
<div class="col-md-8" id="content">
<div class="row" id="head-section">
<div class="col-md-10 text-center">
<h1 class="red">MEGA LEAGUE</h1>
<h4>FOOTBALL</h4>
</div>
<div class="col-md-2 text-right" style="padding-top: 20px;">
<a href="#" class="red">EDIT DETAILS</a>
</div>
</div>
</div>
<div class="col-md-4">
fixed sidebar
</div>
</div>
</div>
这个小JS:
$(function() {
var new_width = $('#content').width();
$('#head-section').width(new_width);
});
这里有一些相关的CSS:
#head-section {
position: fixed;
top: 80px;
padding-left: 50px;
padding-bottom: 20px;
padding-right: 50px;
box-shadow: 0 0 3px #000;
width: 100%;
background: #fff;
z-index: 2;
}
正如您可以看到文字&#34;固定边栏&#34;在固定div(#head-section
)后面。这是因为JS将宽度设置为1001px,这根据chrome的检查元素是错误的,它告诉我它只有900px。
我做错了什么,应该如何解决?
这里是bootply:http://www.bootply.com/0xIGx67IzM
答案 0 :(得分:2)
好的,有两种方法可以解决您的问题
JQuery解决方案
使用width
outerWidth
$(function() {
var new_width = $('#content').outerWidth();
$('#head-section').outerWidth(new_width);
});
CSS解决方案
只需在 #head-section
中替换width:100%
宽度width:inherit
#head-section {
width: inherit;
}
答案 1 :(得分:1)
您将#head-section
宽度设置为等于父级的宽度,然后再添加100px的填充(每侧50px)。
有关详细信息,请参阅此链接:http://quirksmode.org/css/user-interface/boxsizing.html
使用标准定位(position:static;
或position:relative;
),如果您将#head-section
设置为{display:block;}
(省略width:100%
),则会自动设置填充100%的可用水平空间,然后你的填充将推入而不是输出。
但是,在这种情况下,由于您正在使用position:fixed
,因此最简单的解决方案是使用现有的javascript和html(仍然从width:100%
中删除#head-section
属性),但是为了代码易读性,将#head-section
包装在另一个容器元素中(可能是article
?)
从那里你可以将你的javascript更新为:
$(function() {
var new_width = $('#content').width();
$('article').width(new_width);
});