响应式 table 使布局超出 100% 宽度
Responsive table makes layout go beyond 100% width
演示:http://codepen.io/anon/pen/JdWrKX?editors=110
如您所见,“.panel”内有一个响应式 table,您可以水平滚动。太好了。
但它使整个页面水平展开而不适合window。
尝试在小屏幕上查看错误。
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;
}
尝试像这样编辑 td child div 的宽度
td div {
width: auto;
}
希望对修复bug有帮助
如果 window 尺寸小于或等于 900px,则 td 内容将超过该尺寸。您不应该以 px 为单位修复 td div 大小。请改用 %(百分比)。
td div
{
width: 100%;
}
像这样更改 table 代码:
<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;
}
问题是 table
本质上没有响应。您已诉诸使用 display
table
、table-row
和 table-cell
,它们将内容扩展到视口之外,并产生了您不想要的效果。
如您在此 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;
}
您将获得所需的响应宽度,以及带有粘性页脚的全高网页。
由于 .content
的子元素似乎忽略了 % 宽度值,因此对我有用的解决方法是:
.content > * {
width: 100vw;
}
我还将 class .table
添加到您的 table 元素
<table class="table table-bordered">
注意: vw
单元仅适用于现代浏览器。 Check support here
演示:http://codepen.io/anon/pen/JdWrKX?editors=110
如您所见,“.panel”内有一个响应式 table,您可以水平滚动。太好了。
但它使整个页面水平展开而不适合window。 尝试在小屏幕上查看错误。
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;
}
尝试像这样编辑 td child div 的宽度
td div {
width: auto;
}
希望对修复bug有帮助
如果 window 尺寸小于或等于 900px,则 td 内容将超过该尺寸。您不应该以 px 为单位修复 td div 大小。请改用 %(百分比)。
td div
{
width: 100%;
}
像这样更改 table 代码:
<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;
}
问题是 table
本质上没有响应。您已诉诸使用 display
table
、table-row
和 table-cell
,它们将内容扩展到视口之外,并产生了您不想要的效果。
如您在此 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;
}
您将获得所需的响应宽度,以及带有粘性页脚的全高网页。
由于 .content
的子元素似乎忽略了 % 宽度值,因此对我有用的解决方法是:
.content > * {
width: 100vw;
}
我还将 class .table
添加到您的 table 元素
<table class="table table-bordered">
注意: vw
单元仅适用于现代浏览器。 Check support here