HTML:
<div class="bigdiv">
<div class="div1">div 1</div>
<div class="div2">div 2</div>
<div class="div3">div 3</div>
</div>
CSS:
.bigdiv {
display:table;
width:100%;
}
.div1 {
display: table-row-group;
}
.div2 {
display: table-footer-group;
}
.div3 {
display: table-header-group;
}
结果将是:
分区 3
分区 1
分区 2
对于那些讨厌的 Internet Explorer 早期版本... 来源
旧浏览器 IE6 和 IE7 不支持 display: table family 的 CSS 属性。
此外,IE8 有一个动态渲染错误,在某些情况下会出现:如果要移动的块包含 preudo-table 元素(显示:table*)(这是目前唯一注意到的错误案例),一些伪表格单元格(例如单元格并且每次重新加载页面时单元格计数都不同)可能会在最初呈现页面时随机消失。
因此,对于 IE8 及更低版本,我们可以覆盖使块表格化的 CSS 规则,并使用 JavaScript 而不是 CSS 将块移动到 HTML 文档的 DOM 树中的所需位置:
/**
* Reorders sibling elements in DOM tree according to specified order.
* @param {Array} elems Sibling elements in desired block order.
*/
function reorderElements(elems) {
var count = elems.length;
if (!count) {
return;
}
var parent = elems[0].parentNode;
for (var i = count - 1; i >= 0; i--) {
parent.insertBefore(elems[i], parent.firstChild);
}
}
// If IE8 or lower
if (document.all && !document.addEventListener) {
var blocks = [
document.getElementById('div3'),
document.getElementById('div2'),
document.getElementById('div1')
];
reorderElements(blocks);
}