Giải pháp đáp ứng
Đây là một giải pháp tốt cho thiết kế đáp ứng hoặc kích thước không xác định nói chung nếu bạn không cần hỗ trợ IE8 trở xuống.
.centered-axis-x {
position: absolute;
left: 50%;
transform: translate(-50%, 0);
}
.outer {
position: relative; /* or absolute */
/* unnecessary styling properties */
margin: 5%;
width: 80%;
height: 500px;
border: 1px solid red;
}
.inner {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
/* unnecessary styling properties */
max-width: 50%;
text-align: center;
border: 1px solid blue;
}
<div class="outer">
<div class="inner">I'm always centered<br/>doesn't matter how much text, height or width i have.<br/>The dimensions or my parent are irrelevant as well</div>
</div>
Đây là một Fiddle JS
Manh mối là, left: 50%
tương đối với cha mẹ trong khi translate
biến đổi có liên quan đến chiều rộng / chiều cao của các phần tử.
Bằng cách này, bạn có một yếu tố tập trung hoàn hảo, với chiều rộng linh hoạt trên cả con và cha mẹ. Tiền thưởng: điều này hoạt động ngay cả khi đứa trẻ lớn hơn cha mẹ.
Bạn cũng có thể căn giữa nó theo chiều dọc với điều này (và một lần nữa, chiều rộng và chiều cao của cha mẹ và con cái có thể hoàn toàn linh hoạt (và / hoặc chưa biết)):
.centered-axis-xy {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
Hãy nhớ rằng bạn cũng có thể cần transform
tiền tố của nhà cung cấp. Ví dụ-webkit-transform: translate(-50%,-50%);