Thuộc tính inset trong CSS
Bùi Tấn Lực
- 930
- 12/10/2025
Chức năng của Thuộc tính inset trong CSS
Thuộc tính inset trong CSS dùng để canh khoảng cách 4 cạnh của phần tử HTML so với phần tử cha của nó, kích thước của phần tử cũng phụ thuộc vào inset, thuộc tính inset thường dùng cho phần tử HTML có thuộc tính CSS là position với giá trị là fixed hoặc absolute, để sử dụng được thuộc tính inset thì phần tử đó không đặt chiều rộng, chiều cao.
Cú pháp của Thuộc tính inset trong CSS
inset: giatri;
giatri: Quy định phần tử con cách 4 cạnh của phần tử cha với số giatri (Ví dụ: 10px)
inset: giatri1 giatri2;
giatri1: Quy định phần tử con cách cạnh trên và cạnh dưới của phần tử cha với số giatri1 (Ví dụ: 5px)
giatri2: Quy định phần tử con cách cạnh trái và cạnh phải của phần tử cha với số giatri2 (Ví dụ: 10px)
Ví dụ: inset: 5px 10px;
inset: giatri1 giatri2 giatri3;
giatri1: Quy định phần tử con cách cạnh trên của phần tử cha với số giatri1 (Ví dụ: 5px)
giatri2: Quy định phần tử con cách cạnh trái và cạnh phải của phần tử cha với số giatri2 (Ví dụ: 10px)
giatri3: Quy định phần tử con cách cạnh dưới của phần tử cha với số giatri3 (Ví dụ: 30px)
Ví dụ: inset: 5px 10px 30px;
inset: giatri1 giatri2 giatri3 giatri4;
giatri1: Quy định phần tử con cách cạnh trên của phần tử cha với số giatri1 (Ví dụ: 5px)
giatri2: Quy định phần tử con cách cạnh phải của phần tử cha với số giatri2 (Ví dụ: 10px)
giatri3: Quy định phần tử con cách cạnh dưới của phần tử cha với số giatri3 (Ví dụ: 30px)
giatri4: Quy định phần tử con cách cạnh trái của phần tử cha với số giatri4 (Ví dụ: 0px)
Ví dụ: inset: 5px 10px 30px 0px;
Code Thuộc tính inset trong CSS
inset: 5px; (cách 4 cạnh của phần tử cha 5px)
inset: 5px 10px; (cách cạnh trên dưới 5px, cách cạnh trái phải 10px)
inset: 5px 10px 30px; (cách cạnh trên 5px, cách cạnh trái phải 10px, cách cạnh dưới 30px)
inset: 5px 10px 30px 0px;
(cách cạnh trên 5px, cách cạnh phải 10px, cách cạnh dưới 30px, cách cạnh trái 0px )
<!DOCTYPE html>
<html>
<head>
<title>Code Thuộc tính inset trong CSS</title>
<style>
* { -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box;}
div{width:100%; float:left; height:70px; border:1px solid red; margin-bottom:10px; position: relative;}
span{background:green;position: absolute; color:#fff}
</style>
</head>
<body>
<h1>Code Thuộc tính inset trong CSS</h1>
<p>Dùng để canh khoảng cách 4 cạnh của phần tử HTML so với phần tử cha của nó, kích thước của phần tử cũng phụ thuộc vào inset, thuộc tính inset thường dùng cho phần tử HTML có thuộc tính CSS là position với giá trị là fixed hoặc absolute, để sử dụng được thuộc tính inset thì phần tử đó không đặt chiều rộng, chiều cao:</p>
<div>
<span style="inset: 5px">inset: 5px; (cách 4 cạnh của phần tử cha 5px)</span>
</div>
<div>
<span style="inset: 5px 10px">inset: 5px 10px; (cách cạnh trên dưới 5px, cách cạnh trái phải 10px)</span>
</div>
<div>
<span style="inset: 5px 10px 30px">inset: 5px 10px 30px; (cách cạnh trên 5px, cách cạnh trái phải 10px, cách cạnh dưới 30px)</span>
</div>
<div>
<span style="inset: 5px 10px 30px 0px">inset: 5px 10px 30px 0px; (cách cạnh trên 5px, cách cạnh phải 10px, cách cạnh dưới 30px, cách cạnh trái 0px )</span>
</div>
</body>
</html>
Những lỗi thường gặp khi sử dụng inset trong CSS
Khi đã nắm được cách khai báo inset, lỗi thường không nằm ở cú pháp mà xuất phát từ cách phần tử được định vị hoặc việc kết hợp nhiều thuộc tính cùng lúc. Kiểm tra đúng các điểm dưới đây sẽ giúp việc tìm nguyên nhân nhanh hơn.
Quên thiết lập position cho phần tử
inset là thuộc tính dùng để thiết lập các khoảng cách cho phần tử được định vị. Vì vậy, nếu phần tử vẫn ở trạng thái định vị mặc định, việc thêm inset có thể không tạo ra kết quả như mong đợi.
Với các trường hợp cần đặt một phần tử phủ lên vùng chứa, nên xác định rõ phần tử đó thuộc kiểu định vị nào trước khi sử dụng inset. Chẳng hạn, phần tử con có thể dùng position: absolute và phần tử cha được thiết lập position: relative để tạo phạm vi định vị phù hợp.
.box {
position: relative;
}
.overlay {
position: absolute;
inset: 0;
}
Cách này đặc biệt hữu ích khi muốn cho một lớp phủ chiếm toàn bộ vùng của phần tử cha mà không phải khai báo riêng từng cạnh.
Hiểu sai thứ tự giá trị của inset
Khi viết nhiều giá trị, inset tuân theo quy tắc phân bổ theo vòng từ phía trên rồi sang phải, dưới và trái. Do đó, chỉ cần đặt nhầm vị trí một giá trị là phần tử có thể lệch khỏi bố cục dự kiến.
.box {
inset: 10px 20px 30px 40px;
}
Trong khai báo trên, bốn giá trị lần lượt tương ứng với trên, phải, dưới, trái. Nếu chỉ có hai giá trị, giá trị đầu áp dụng cho phía trên và dưới, còn giá trị thứ hai áp dụng cho phía phải và trái.
Khi cần điều chỉnh từng cạnh độc lập, nên kiểm tra lại thứ tự trước khi thay đổi kích thước hoặc vị trí của phần tử.
Gặp xung đột giữa inset và top, right, bottom, left
inset là dạng viết gọn cho nhóm thuộc tính định vị gồm top, right, bottom và left. Vì vậy, việc khai báo cả hai nhóm thuộc tính trong cùng một quy tắc CSS có thể khiến kết quả khó đoán nếu không hiểu thứ tự áp dụng của CSS.
.box {
position: absolute;
inset: 10px;
top: 30px;
}
Ở ví dụ này, top được khai báo sau inset nên giá trị của top sẽ ghi đè giá trị tương ứng mà inset đã thiết lập. Khi không có lý do đặc biệt để kết hợp chúng, nên chọn một cách khai báo nhất quán để CSS dễ đọc và dễ bảo trì hơn.
Sử dụng inset nhưng phần tử không thay đổi vị trí
Nếu thêm inset nhưng giao diện gần như không thay đổi, đừng vội kết luận thuộc tính không hoạt động. Hãy kiểm tra kiểu position, phần tử tham chiếu và các thuộc tính CSS khác đang tác động đến cùng phần tử.
Một nguyên nhân thường gặp là phần tử đang được định vị nhưng không nằm trong phạm vi chứa mà bạn nghĩ tới. Với position: absolute, việc xác định đúng phần tử chứa có vai trò quan trọng, bởi nó ảnh hưởng trực tiếp đến cách các giá trị trong inset được tính toán.
Ngoài ra, nên kiểm tra xem top, right, bottom hoặc left có đang được khai báo ở nơi khác hay không. Kiểm tra trực tiếp trong DevTools sẽ giúp nhận biết nhanh giá trị nào đang được áp dụng và giá trị nào đã bị ghi đè.
Lời kết
Cảm ơn các bạn đã tham khảo bài viết Thuộc tính inset trong CSS.
- 0 Bình luận
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *