相同 CSS 在 JSFiddle 上工作,在浏览器中损坏
Identical CSS working on JSFiddle, broken in browser
我正在尝试使用 No More Tables 方法制作响应式表格。
我只是简单地复制并粘贴了上面示例中的代码。它在 JSFiddle 上运行良好:http://jsfiddle.net/wcp62x7t/
但相同的代码在我的浏览器中无法正常工作。当我减小浏览器的大小时,表格表现不佳 window:
我做错了什么?这是我在浏览器中尝试的完整 HTML 文件:我已经在 Safari 和 Chrome 上的 OSX 中尝试过它并得到上面的奇怪行为。
<html>
<head>
<style>
@media only screen and (max-width: 800px) {
/* Force table to not be like tables anymore */
#no-more-tables table,
#no-more-tables thead,
#no-more-tables tbody,
#no-more-tables th,
#no-more-tables td,
#no-more-tables tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
#no-more-tables thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
#no-more-tables tr { border: 1px solid #ccc; }
#no-more-tables td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50%;
white-space: normal;
text-align:left;
}
#no-more-tables td:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
text-align:left;
font-weight: bold;
}
/*
Label the data
*/
#no-more-tables td:before { content: attr(data-title); }
}
</style>
</head>
<body>
<section id="no-more-tables">
<table>
<thead>
<tr>
<th>Code</th>
<th>Company</th>
<th class="numeric">Price</th>
<th class="numeric">Change</th>
<th class="numeric">Change %</th>
<th class="numeric">Open</th>
<th class="numeric">High</th>
<th class="numeric">Low</th>
<th class="numeric">Volume</th>
</tr>
</thead>
<tbody>
<tr>
<td data-title="Code">AAC</td>
<td data-title="Company">AUSTRALIAN AGRICULTURAL COMPANY LIMITED.</td>
<td data-title="Price" class="numeric">.38</td>
<td data-title="Change" class="numeric">-0.01</td>
<td data-title="Change %" class="numeric">-0.36%</td>
<td data-title="Open" class="numeric">.39</td>
<td data-title="High" class="numeric">.39</td>
<td data-title="Low" class="numeric">.38</td>
<td data-title="Volume" class="numeric">9,395</td>
</tr>
</tbody>
</table>
</section>
</body>
</html>
更新:浏览器中的问题似乎是 <td>
元素仍然设置为 display: table-cell
,即使我已经明确地将它们设置为 display: block
:
删除媒体查询标签@media only screen and (max-width: 800px) {}
,之后它工作正常。
更新:添加 <!DOCTYPE html>
解决了问题。
我正在尝试使用 No More Tables 方法制作响应式表格。
我只是简单地复制并粘贴了上面示例中的代码。它在 JSFiddle 上运行良好:http://jsfiddle.net/wcp62x7t/
但相同的代码在我的浏览器中无法正常工作。当我减小浏览器的大小时,表格表现不佳 window:
我做错了什么?这是我在浏览器中尝试的完整 HTML 文件:我已经在 Safari 和 Chrome 上的 OSX 中尝试过它并得到上面的奇怪行为。
<html>
<head>
<style>
@media only screen and (max-width: 800px) {
/* Force table to not be like tables anymore */
#no-more-tables table,
#no-more-tables thead,
#no-more-tables tbody,
#no-more-tables th,
#no-more-tables td,
#no-more-tables tr {
display: block;
}
/* Hide table headers (but not display: none;, for accessibility) */
#no-more-tables thead tr {
position: absolute;
top: -9999px;
left: -9999px;
}
#no-more-tables tr { border: 1px solid #ccc; }
#no-more-tables td {
/* Behave like a "row" */
border: none;
border-bottom: 1px solid #eee;
position: relative;
padding-left: 50%;
white-space: normal;
text-align:left;
}
#no-more-tables td:before {
/* Now like a table header */
position: absolute;
/* Top/left values mimic padding */
top: 6px;
left: 6px;
width: 45%;
padding-right: 10px;
white-space: nowrap;
text-align:left;
font-weight: bold;
}
/*
Label the data
*/
#no-more-tables td:before { content: attr(data-title); }
}
</style>
</head>
<body>
<section id="no-more-tables">
<table>
<thead>
<tr>
<th>Code</th>
<th>Company</th>
<th class="numeric">Price</th>
<th class="numeric">Change</th>
<th class="numeric">Change %</th>
<th class="numeric">Open</th>
<th class="numeric">High</th>
<th class="numeric">Low</th>
<th class="numeric">Volume</th>
</tr>
</thead>
<tbody>
<tr>
<td data-title="Code">AAC</td>
<td data-title="Company">AUSTRALIAN AGRICULTURAL COMPANY LIMITED.</td>
<td data-title="Price" class="numeric">.38</td>
<td data-title="Change" class="numeric">-0.01</td>
<td data-title="Change %" class="numeric">-0.36%</td>
<td data-title="Open" class="numeric">.39</td>
<td data-title="High" class="numeric">.39</td>
<td data-title="Low" class="numeric">.38</td>
<td data-title="Volume" class="numeric">9,395</td>
</tr>
</tbody>
</table>
</section>
</body>
</html>
更新:浏览器中的问题似乎是 <td>
元素仍然设置为 display: table-cell
,即使我已经明确地将它们设置为 display: block
:
删除媒体查询标签@media only screen and (max-width: 800px) {}
,之后它工作正常。
更新:添加 <!DOCTYPE html>
解决了问题。