列的异常宽度

时间:2016-07-26 06:52:22

标签: javascript jquery html css twitter-bootstrap

我正在尝试使用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;
}

这是怎么回事: enter image description here

正如您可以看到文字&#34;固定边栏&#34;在固定div(#head-section)后面。这是因为JS将宽度设置为1001px,这根据chrome的检查元素是错误的,它告诉我它只有900px。

我做错了什么,应该如何解决?

这里是bootply:http://www.bootply.com/0xIGx67IzM

2 个答案:

答案 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;
}

JQuery Example

CSS Example

答案 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);
});

请参阅小提琴:https://jsfiddle.net/znhws64p/1/