关于仅出现在 Chrome 中的 CSS 列布局,我遇到了一个非常奇怪的行为。
根据被列化的项目的整体高度,它的左偏移量会发生偏移,这使得很难确定项目的实际位置。渲染看起来不错,但是如果您检查元素,您实际上可以看到它偏移了很多。
这是一个例子:https ://jsfiddle.net/vx8h8u46/
检查 .panel 元素,您会发现它的边界矩形不是从左侧开始的。
似乎当面板的高度超过某个阈值时会发生这种情况,但这只是目前的猜测。有解决办法吗?
function logOffset() {
document.getElementById("log").innerText = document.querySelector(".panel").getBoundingClientRect().left;
}
window.removeLastItem = function() {
var items = document.querySelectorAll(".item");
if (items.length) {
items[items.length - 1].remove();
logOffset();
}
}
logOffset();
* {
box-sizing: border-box;
}
.item {
display: inline-block;
width: 160px;
height: 80px;
outline: 1px solid red;
}
.container {
-moz-column-width: 320px;
column-width: 320px;
-moz-column-fill: auto;
column-fill: auto;
max-height: 160px;
width: 640px;
}
<div class="container">
<div class="panel">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
<div class="item">7</div>
<div class="item">8</div>
<div class="item">9</div>
<!-- Something weird happens after this -->
<div class="item">10</div>
</div>
</div>
<div>
Left offset of
<mark>panel</mark>:
<span id="log"></span>
</div>
<button onclick="removeLastItem()">
Remove last item
</button>