Tôi đã gặp phải hành vi rất kỳ quặc về bố cục cột CSS chỉ xuất hiện trong Chrome.Cột CSS, bù trừ phụ thuộc vào chiều cao
Tùy thuộc vào chiều cao tổng thể của mục đang được cột bù đắp trái của nó bị dịch chuyển khiến việc xác định một vị trí thực tế là khó khăn. Kết xuất có vẻ tốt nhưng nếu bạn kiểm tra phần tử, bạn thực sự có thể thấy rằng nó được bù đắp bởi khá nhiều.
Dưới đây là một ví dụ: https://jsfiddle.net/vx8h8u46/
Kiểm tra các yếu tố .panel và bạn sẽ thấy rằng nó bounding rect không bắt đầu ở bên trái.
Nếu bạn nhấp vào nút để xóa một mục thì tất cả đột ngột đường biên giới hạn là chính xác.
Dường như điều này xảy ra khi chiều cao của bảng điều khiển vượt quá một ngưỡng nhất định nhưng nó chỉ suy đoán vào thời điểm này. Có một công việc xung quanh?
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>
Bạn đang đề cập đến yếu tố nào? Nếu bạn áp dụng 'display: inline' thành' .panel', nó sẽ khắc phục vấn đề. Nếu đó là ý của bạn, hãy nêu rõ trong câu trả lời của bạn và xem xét thêm đoạn mã ví dụ. – misterManSam
Tôi quên thêm rằng .panel có hiển thị: inline-block nhưng vấn đề vẫn tồn tại. –