响应表使布局超出100%宽度

时间:2015-06-03 13:33:23

标签: html css twitter-bootstrap css3 html-table

演示:http://codepen.io/anon/pen/JdWrKX?editors=110

正如您所看到的,“.panel”中有一个响应表,您可以水平滚动。大。

但它会使整个页面水平展开而不适合窗口。 尝试在小屏幕上查看错误。

HTML:

<div id="wrap">

  <nav class="navbar navbar-inverse navbar-static-top" role="navigation">
    <div class="container-fluid">
      <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
          <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="">Logo</a>
      </div>
      <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav navbar-right">
          <li>
            <a href="">Logout</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <div class="content content-primary content-sm">
    <div class="container-fluid">

      <div class="row">
        <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
          <div class="panel panel-default">
            <div class="panel-body">
              <div class="table-responsive">
                <table class="table-bordered">
                  <tr>
                    <td>
                      <div>a</div>
                    </td>
                    <td>b</td>
                  </tr>
                </table>
              </div>
            </div>
          </div>
        </div>
      </div>

    </div>
  </div>

  <footer>
    <nav class="navbar navbar-inverse navbar-static-top" role="navigation">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="">Copyright</a>
        </div>
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav navbar-right">
            <li>
              <a href="">Logout</a>
            </li>
          </ul>
        </div>
      </div>
    </nav>
  </footer>
</div>

CSS:

html,
body {
  height: 100%;
}

#wrap {
  height: 100%;
  display: table;
  width: 100%;
}

#wrap > nav,
footer {
  display: table-row;
}

nav.navbar {
  margin-bottom: 0;
}

.content-sm {
  padding: 15px 0;
}

.content-primary {
  background: #337ab7;
}

.content {
  display: table-cell;
  height: 100%;
}

td {
  text-wrap: no-warp;
}

td div {
  width: 900px;
}

5 个答案:

答案 0 :(得分:4)

由于.content的子元素似乎忽略了%宽度值,因此对我有用的工作是:

.content > * {
    width: 100vw;
}

我还将课程.table添加到您的表格元素

<table class="table table-bordered">

Here is a Demo

注意: vw单元仅适用于现代浏览器。 Check support here

答案 1 :(得分:0)

像这样更改表格代码:

<div class="content content-primary content-sm">
    <div class="container-fluid">
      <div class="row">
        <div class="col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3">
          <div class="panel panel-default">
            <div class="panel-body">
                <table class="table table-responsive table-bordered">
                  <tr>
                    <td>
                      <div>a</div>
                    </td>
                    <td>b</td>
                  </tr>
                </table>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

并从您的css文件中删除它

td div {
  width: 900px;
}

答案 2 :(得分:0)

问题是table本质上没有响应。您已经使用display tabletable-rowtable-cell使用内容扩展到veiwport之外,并创建了不受欢迎的效果。

正如您在此fiddle中看到的那样:如果您移除table元素,您的宽度问题就会消失,但是您不会找到您正在寻找的粘性页脚对

将CSS更改为:

html,
body {
  height: 100%;

}

#wrap {
  min-height: 100%;
  background: #337ab7;
}

.page-wrap:after {
  content: "";
  display: block;
  height: 51px; 
}

nav.navbar {
  margin-bottom: 0;
}

.content-sm {
  padding: 15px 0;
}

.box-content {
    width: 9000px;
    height: 5000px;
    background: red;
}

.box-responsive {
    width: 100%;
    max-width: 100%;
    overflow-x: scroll;
    border: 1px solid green;
}

您将获得所需的响应宽度,以及带有粘性页脚的全高网页。

答案 3 :(得分:-1)

尝试像这样编辑你的td子div的宽度

td div {
      width: auto;
    }

我希望它有助于修复错误。

答案 4 :(得分:-1)

如果窗口大小小于或等于900px,则td内容将超出该范围。你不应该修复px中的td div大小。请改用%(百分比)。

td div
{
    width: 100%;
}