Có chính xác những gì bạn cần trong trường hợp này bằng cách sử dụng flexbox
.
Khoảng pin xấp xỉ ở cùng độ cao trên đường cơ sở cấp hoặc lấy 1px.
Cách hoạt động: Khi phần tử màu xanh lá cây tăng thêm 10px
ghim được nâng lên 5px
. Tuy nhiên, thiết lập flex có nghĩa là dummy
và hộp orange
làm giảm 5px
mỗi vì vậy giữ cho pin ở độ cao ngang nhau.
* {
box-sizing: border-box;
}
body {
margin: 0;
padding: 0;
}
.wrapper {
display: flex;
flex-direction: column;
align-items: center;
height: 100px;
border-bottom: 1px solid black;
}
.dummy {
flex: 1;
}
.top {
height: 20px;
width: 20px;
border: 1px solid green;
position: relative;
}
.top div {
position: absolute;
height: 3px;
width: 3px;
background: #880015;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.bottom {
width: 50px;
border: 1px solid orange;
flex: 1;
}
<div class="wrapper">
<div class="dummy"></div>
<div class="top">
<div></div>
</div>
<div class="bottom"></div>
</div>
Sẽ flex Nếu không, đây là một kịch bản kích thước * rất đặc biệt *, nó có thể có ý nghĩa khi có JavaScript thay đổi kích thước của phần tử trên mỗi sự kiện thay đổi kích thước của trình duyệt. – Katana314
Flex _almost_ hoạt động nhưng tôi không thể làm cho nó phù hợp hành vi này, nếu phần tử trên cùng có đường viền trên cùng ored tại chỗ nó sẽ là hoàn hảo. – mxiong