我需要有关响应表的帮助。所需要的是在调整大小时基本上将其更改为“移动版本”,但移动版本与其主要样式略有不同,如图所示。
我目前得到了这个:http://jsfiddle.net/MLsZ8/
HTML:
<table class="crafting">
<thead>
<tr>
<th style="width:15%">Name</th>
<th style="width:20%">Ingredients</th>
<th style="width:205px;">Input > Output</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Ore Blocks</td>
<td>Gold Ingots, Iron Ingots, Diamonds and Lapis Lazuli Dye</td>
<td><img width="204" height="112" title="Crafting Ore Blocks" src="http://www.minecraftxl.com/images/crafting/Crafting-Ore-Blocks1.gif" alt="Crafting Ore Blocs from Ingots" /></td>
<td>Turn ingots or diamonds into a placeable block. Can be used for storage or to show off.</td>
</tr>
</tbody>
</table>
CSS:
td {
border:0;
}
table.crafting {
border-spacing:0;
border-collapse:collapse;
}
.crafting th {
border:2px solid #f3f3f3;
padding:5px;
}
.crafting td {
border:2px solid #f3f3f3;
padding:5px;
vertical-align:top;
}
.crafting tr {
background:#c6c6c6;
}
.crafting-name {
font-weight:bold;
border-bottom:0 !important;
background:#c6c6c6;
}
.crafting-ingredients {
border-top:0 !important;
border-bottom:0 !important;
background:#bcbcbc;
}
.crafting-img {
width:205px;
border-bottom:0 !important;
border-top:0 !important;
background:#c6c6c6;
}
.crafting-desc {
border-top:0 !important;
background:#bcbcbc;
}
答案 0 :(得分:1)
如果您不反对更改HTML的整体格式,我有一个可能更容易处理的解决方案......
如果将当前表结构更改为一系列div
元素,则可以将每个表行嵌套到容器div
中。
我会给你一个“行”的例子:
<div class="tableRow">
<div class="columnOne"> content </div>
<div class="columnTwo"> content </div>
<div class="columnThree"> content </div>
<div class="columnFour"> content </div>
</div>
然后,使用CSS,您可以设置.tableRow {width: 100%}
。从这里,您可以根据需要设置列宽。从您的示例中,您可以执行以下操作:
.columnOne {width: 10%; float: left;}
.columnTwo {width: 15%; float: left;}
.columnThree {width: 30%; float: left;}
.columnFour {width: 45%; float: left;}
然后,当您使用@media query
到达移动视图断点时,您可以执行以下操作:
.columnOne, .columnTwo, .columnThree, .columnFour {width: 100%}
这将使列有效地成为width: 100%
的行。
答案 1 :(得分:1)
选项1:
完整的表格
选项2
在使用的媒体查询中将表转换为div
<强> HTML 强>
<div class="title">
<div class="name">Name</div>
<div class="ingredients">Ingredients</div>
<div class="field">Input > Output</div>
<div class="description">Description</div>
</div>
<div class="responsive">
<div class="name">Ore Blocks</div>
<div class="ingredients">Gold Ingots, Iron Ingots, Diamonds and Lapis Lazuli Dye</div>
<div class="field">
<img width="204" height="112" title="Crafting Ore Blocks" src="http://www.minecraftxl.com/images/crafting/Crafting-Ore-Blocks1.gif" alt="Crafting Ore Blocs from Ingots" />
</div>
<div class="description">Turn ingots or diamonds into a placeable block. Can be used for storage or to show off.</div>
</div>
<强> CSS 强>
div {
display: table;
width: 100%;
table-layout: fixed;
}
div > div {
display: table-cell;
background : #C6C6C6;
border:2px solid #f3f3f3;
padding:5px;
vertical-align : top;
}
div.title {
text-align : center;
font-weight:bold;
}
div.name {
width : 90px;
}
div.ingredients {
width : 150px;
}
div.field {
width : 205px;
}
@media only screen and (max-width: 767px) {
.title {display:none;}
.responsive div {
display : block;
width : auto;
text-align : center;
background : white;
}
.responsive div.ingredients {background : #C6C6C6;}
.responsive div.description {background : #C6C6C6;}
}
答案 2 :(得分:1)
http://css-tricks.com/responsive-data-tables/
在继续前进之前,请参阅 Live Demo
答案 3 :(得分:0)
一个简单的解决方案是拥有两个表:常规表(具有类full
)和移动表(具有类mobile
)。然后,您可以使用媒体查询在特定屏幕大小之间切换它们。
如果您的网站不是特别沉重,这种方法可以省去很多麻烦。
示例小提琴:http://jsfiddle.net/QDrPb/
.mobile {
display:none;
}
@media (max-width:767px) {
.full {
display:none;
}
.mobile {
display:block;
}
}
答案 4 :(得分:0)
Twitter Bootstrap
是一个很好的事情来实现表响应。
http://getbootstrap.com/
您必须从上面的链接下载并添加css文件。
之后,请像这样申请:http://getbootstrap.com/css/#tables-responsive
我希望这可能有助于你的需要。
由于
答案 5 :(得分:0)
这里简单的演示请为纯css demo fiddle
提供此链接
var table = $('#example').DataTable({
data: data,
columns: [
{ data: "id", title: 'id' },
{ data: "name", title: 'name' },
{ data: "firstname", title: 'firstname' },
{ data: "company", title: 'company' },
{ data: null,
title: 'combined',
render: function(data, type, full) {
return 'The id of '+full.firstname+' '+full.name+' is '+full.id
}
}
]
})
/*by Ñ££¿ Upadhyay*/
body {
font-family: "Open Sans", sans-serif;
line-height: 1.25;
}
table {
border: 1px solid #ccc;
border-collapse: collapse;
margin: 0;
padding: 0;a
width: 100%;
table-layout: fixed;
}
table caption {
font-size: 18px;
margin: 10px;
}
table tr {
background: #f8f8f8;
border: 1px solid #ddd;
padding: 10px;
}
table th,
table td {
padding: 10px;
text-align: center;
}
table th {
font-size: 14px;
letter-spacing: 0;
text-transform: uppercase;
}
@media screen and (max-width: 600px) {
table {
border: 0;
}
table caption {
font-size: 14px;
}
table thead {
border: none;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
table tr {
border-bottom: 3px solid #ddd;
display: block;
margin-bottom: 5px;
}
table td {
border-bottom: 1px solid #ddd;
display: block;
font-size: 14px;
text-align: right;
}
table td:before {
/*
* aria-label has no advantage, it won't be read inside a table
content: attr(aria-label);
*/
content: attr(data-label);
float: left;
font-weight: bold;
text-transform: uppercase;
padding-right: 70px;
}
table td:last-child {
border-bottom: 0;
}
}
答案 6 :(得分:0)
响应式表格 JavaScript 插件
<link rel="stylesheet" href=".../dist/css/table-fluid.css"/>
<script src=".../dist/js/table-fluid.js"></script>
<table class="table-fluid">
<thead>
...
</thead>
<tbody>
...
</tbody>
</table>
使用 JavaScript 函数
window.tableFluid('.table-fluid');
答案 7 :(得分:-2)
表格单元格无法按照您想要的方式重新排列 - 行和列已锁定且无法浮动。您所能做的就是在每个单元格中更改布局。你需要完全改变你的标记才能实现这一点。