这一切都很棒,但我使用的是角度,问题是如果我有更多行,我没有垂直空间。相反,我想“溢出”到它的右侧,使它看起来像:
使用HTML5 / CSS的最佳方式是什么,以便我可以使内容溢出,如果超出表格?请注意,在某些情况下,我可能有2或3个条目,所以我希望我不必在开始时使宽度加倍于正常大小,而是根据我拥有的条目数量来确定表的大小在表中。没有滚动条。
我觉得HTML中的表格标签是限制性的,可能不允许我这样做。做这个的最好方式是什么?使用div?
<table style="background:green;">
<tr><td>Name</td><td>Sport</td><td>Score</td></tr>
<tr><td>Jordan</td><td>Soccer</td><td>50</td></tr>
<tr><td>Jordan</td><td>Soccer</td><td>50</td></tr>
<tr><td>Jordan</td><td>Soccer</td><td>50</td></tr>
</table>
尝试使用flexbox方法,虽然看起来如果我将flexbox放在div中,但是当条目超出第一列时,背景似乎不会正确填充:
答案 0 :(得分:8)
请按照以下代码示例
这将在移动设备中以列表样式包装行。 您需要为每个内容td添加数据标签属性,以便它知道它是哪个列。在移动设备中,您可以使用css内容在“td”之前显示标签:“”属性。
body {
font-family: "Arial", sans-serif;
line-height: 1.25;
}
table {
border: 1px solid #ccc;
border-collapse: collapse;
margin: 0;
padding: 0;
width: 100%;
table-layout: fixed;
}
table caption {
font-size: 1.5em;
margin: .5em 0 .75em;
}
table tr {
background: #f8f8f8;
border: 1px solid #ddd;
padding: .35em;
}
table th,
table td {
padding: .625em;
text-align: center;
}
table th {
font-size: .85em;
letter-spacing: .1em;
text-transform: uppercase;
}
@media screen and (max-width: 600px) {
table {
border: 0;
}
table caption {
font-size: 1.3em;
}
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: .625em;
}
table td {
border-bottom: 1px solid #ddd;
display: block;
font-size: .8em;
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;
}
table td:last-child {
border-bottom: 0;
}
}
<table>
<caption>Statement Summary</caption>
<thead>
<tr>
<th scope="col">Card</th>
<th scope="col">Due Date</th>
<th scope="col">Amount</th>
<th scope="col">Period</th>
</tr>
</thead>
<tbody>
<tr>
<td data-label="Card">Visa - 3412</td>
<td data-label="Due Date">04/01/2016</td>
<td data-label="Amount">$1,190</td>
<td data-label="Period">03/01/2016 - 03/31/2016</td>
</tr>
<tr>
<td scope="row" data-label="Card">Visa - 6076</td>
<td data-label="Due Date">03/01/2016</td>
<td data-label="Amount">$2,443</td>
<td data-label="Period">02/01/2016 - 02/29/2016</td>
</tr>
<tr>
<td scope="row" data-label="Card">Corporate AMEX</td>
<td data-label="Due Date">03/01/2016</td>
<td data-label="Amount">$1,181</td>
<td data-label="Period">02/01/2016 - 02/29/2016</td>
</tr>
<tr>
<td scope="row" data-label="Card">Visa - 3412</td>
<td data-label="Due Date">02/01/2016</td>
<td data-label="Amount">$842</td>
<td data-label="Period">01/01/2016 - 01/31/2016</td>
</tr>
</tbody>
</table>
答案 1 :(得分:3)
实际上,使用CSS没有为HTML表元素定义这样的工具。我尝试了一些通过给表和包含div的各种位置,没有工作。与您提供的小提琴示例一样,您必须使用HTML div元素。
答案 2 :(得分:3)
X = 1
Do Until IsEmpty(Sheet9.Cells(X, 30).Value) Or X > Sheet1.Range("C6").Value
no2 = Sheet9.Cells(X, 30).Value
no1 = Sheet9.Cells(X, 31).Value
result = WorksheetFunction.Min(no1, no2)
Sheet9.Cells(X, 30).Value = result
X = X + 1
Loop
JsFiddle Link http://jsfiddle.net/U3pVM/32296/
你只需要为第一列创建一大块记录,你可以在控制器本身中创建,然后在ng-repeat的帮助下你可以渲染它
答案 3 :(得分:2)
使用div
和column
.columns {
column-count: 2;
column-gap: 10px;
}
.myTable {
display: table;
width: 100%;
height: 200px;
}
.myHeader {
width: 100%;
font-weight: bold;
}
.myCell {
display: table-cell;
width: 33%;
float: left;
}
<div class="columns">
<div class="myTable">
<div class="myHeader">
<div class="myCell">Name</div>
<div class="myCell">Sport</div>
<div class="myCell">Score</div>
</div>
<div class="myCell">Bob</div>
<div class="myCell">Soccer</div>
<div class="myCell">8</div>
<div class="myCell">Jane</div>
<div class="myCell">Softball</div>
<div class="myCell">9</div>
<div class="myCell">Hank</div>
<div class="myCell">Baseball</div>
<div class="myCell">6</div>
<div class="myCell">Lisa</div>
<div class="myCell">Soccer</div>
<div class="myCell">9</div>
<div class="myCell">Bill</div>
<div class="myCell">Football</div>
<div class="myCell">4</div>
</div>
</div>
答案 4 :(得分:2)
这一切都很棒,但我使用角度,问题是如果我 有更多的行,我没有垂直的空间。
与角度有什么关系呢?
[..]如果我有更多行,我没有垂直空间。 相反,我想“溢出”到它的右边
表格不会给你那种灵活性,尤其是你无法将行的高度和流量控制为列。
[..]这样我可以使内容溢出,如果它超过了 表?请注意,在某些情况下,我可能有2或3个条目,所以我是 希望我没有必要使宽度加倍于正常尺寸 开始,而是根据数量来确定表的大小 我在表格中的条目。
一种简单快捷的方法是将行拆分为自己的表。如果你可以拥有这种结构,那么只需要using CSS columns
。
通常,您会将所有这些表包装在div
中,该height
具有column-*
个约束。在包裹div
上设置column-gap
属性,然后就可以了。您可以使用column-rule
,column-span
,column-fill
和break-inside: avoid
属性来美化整个内容。
另请注意,您需要在表格上使用#rowflow {
height: 120px; max-height: 120px;
border: 1px solid #d33; overflow: hidden;
column-width: 200px; column-gap-width: 0px; column-fill: auto;
column-rule: 1px solid #bbb;
}
table {
font-family: sans-serif; margin-bottom: 2px;
table-layout: fixed; width: 190px;
}
table:first-child { column-span: all; }
table, th, td { border-collapse: collapse; border: 0px solid gray; padding: 6px; }
table, tr { break-inside: avoid; }
th, td { text-align: left; }
th:last-child, td:last-child { text-align: right; }
,以避免它们在流向下一列时中途中断。
示例代码段
<div id="rowflow">
<table><tr><th>Name</th><th>Sport</th><th>Score</th></tr></table>
<table><tr><td>Jordan</td><td>Soccer</td><td>50</td></tr></table>
<table><tr><td>Jordan</td><td>Soccer</td><td>50</td></tr></table>
<table><tr><td>Jordan</td><td>Soccer</td><td>50</td></tr></table>
<table><tr><td>Jordan</td><td>Soccer</td><td>50</td></tr></table>
<table><tr><td>Jordan</td><td>Soccer</td><td>50</td></tr></table>
</div>
div
在上面的代码段中,包裹div
是高度限制的,您可以看到列流动。
Use this fiddle 尝试更改窗口大小并查看效果。
[..]所以我希望我不必将宽度增加一倍 在开始时正常,而是根据表格调整表格 我在表中的条目数。没有滚动条。
包裹overflow
本身就是全宽的。但是,您可以使用table-layout: fixed
来控制溢出的处理方式。根据内容的宽度动态改变宽度是一个完全不同的球类游戏,你需要使用JavaScript并且它会变得混乱。
注意:要使上述示例正常工作,您需要修复表格的宽度,以使列整齐排列。您可以使用.unbind()
来使用固定布局。