- vừa được xem lúc

CSS Property margin-trim - thứ giải quyết vấn đề muôn thuở

0 0 14

Người đăng: Phạm Quốc Cường

Theo Viblo Asia

Một trong những thứ khó chịu nhất khi làm việc với CSS là margin, sẽ chẳng có gì đáng nói nếu như chúng ta không gặp các trường hợp margin bị gộp lại với nhau làm xuất hiện những khoảng trống không mong muốn. Việc này càng khó chịu hơn khi chúng ta thiết kế các thành phần dưới dạng Component. Thuộc tính css margin-trim sẽ giúp bạn xóa bỏ các margin thừa một cách dễ dàng nhất.

Vấn đề

Chúng ta sẽ xét một vấn đề đơn giản như sau. Cho một thẻ card chứa 3 child

<div class="card"> <div class="child">Child 1</div> <div class="child">Child 2</div> <div class="child">Child 3</div>
</div>
.card { background-color: var(--accent-color); padding: 1rem;
} .child { margin-bottom: 2rem;
}

Đây là kết quả mà ta sẽ nhận được

image.png

Như mọi người có thể thấy, margin của thẻ con cuối cùng làm cho card có thêm một phần margin thừa, do đó thẻ card sẽ cao hơn mức cần thiết. Thông thường, để giải quyết vấn đề này chúng ta sẽ dùng css selector :last-child

.child { margin-bottom: 1rem;
} .child:last-child { margin-bottom: 0;
}

margin-trim_.png

Lúc này vấn đề đã được giải quyết. Nhưng nó không phải cách giải quyết lý tưởng. Vì nếu chúng ta thiết kế dưới dạng Component, điều này có nghĩa là Component con phải biết Component cha muốn loại bỏ margin, nghe hơi cấn cấn đúng không mọi người. Giờ chúng ta sẽ xét đến một hướng giải quyết khác, là để Component cha xử lý mọi thứ:

.card { background-color: var(--accent-color); padding: 1rem;
} .card > :last-child { margin-bottom: 0;
}

Nhìn có vẻ hợp lý, nhưng nó lại dẫn đến 1 vấn đề khác, là Component cha lại select thành phần của Component con, tức là một thành phần bị xử lý bên ngoài Component của nó. Điều này phá vỡ tính đóng gói của Component. Và giờ chúng ta sẽ bàn đến giải pháp triệt để cho vấn đề này.

margin-trim

margin-trim là một thuộc tính css đơn giản giúp bạn chỉ định cạnh nào của phần tử sẽ được cắt bớt và nó sẽ loại bỏ các margin thừa của cạnh đó. Đây sẽ là giải pháp để giải quyết vấn đề bên trên:

.card { background-color: var(--accent-color); padding: 1rem; margin-trim: block-end;
} .child { margin-bottom: 1rem;
}

Và đây là kết quả margin-trim_.png

Như mọi người có thể thấy, margin-trim giúp loại bỏ khoảng cách thừa phía dưới card một cách dễ dàng mà không cần phải viết thêm bất kì dòng code select nào.

Thuộc tính này có thể được sử dụng cho bất kỳ hướng nào trong 4 hướng block-start, block-end, inline-startinline-end. Nó cũng có thể được sử dụng chỉ với block hoặc inline để loại bỏ lề ở cả điểm đầu và cuối của trục được chỉ định.

.card { margin-trim: block; /* Removes from top and bottom */ margin-trim: inline; /* Removes from left and right */ margin-trim: block-start block-end; /* Removes from top and bottom */ margin-trim: inline-start; /* Removes from left */
}

Tóm lại

Thuộc tính margin-trim là một thuộc tính rất đơn giản nhưng cực kỳ hữu ích giúp bạn dễ dàng loại bỏ phần lề bổ sung khỏi các phần tử con của một phần tử. Điều này làm cho việc làm việc với các Component dễ dàng hơn vì bạn không còn cần phải lo lắng về việc các Component bị leaking styles ra bên ngoài.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tài nguyên nghiên cứu sâu Html

1. Articles and standards. . HTML 5.

0 0 198

- vừa được xem lúc

Embedded Template in Go

Getting Start. Part of developing a web application usually revolves around working with HTML as user interface.

0 0 57

- vừa được xem lúc

Full Stack Developer Roadmap 2021

Cách để trở thành một Full Stack Web Developer trên thế giới hiện nay. Các công ty đang luôn săn đón những developer có nhiều kĩ năng để cung cấp cho họ sự linh hoạt trong các dự án.

0 0 38

- vừa được xem lúc

Những kiến thức hay về Gradient: Gradient đẹp nhất chỉ được tìm thấy ở ngoài thiên nhiên!

. Quen thuộc từ lâu với rất nhiều người, nền Gradient chỉ là những bức nền với 2 hay nhiều dải màu sắc được hòa trộn với nhau. Đơn giản là vậy, nhưng càng ngày Gradient càng phổ biến hơn trong thiết kế Website ngày nay.

0 0 300

- vừa được xem lúc

What Is Session Fixation?

Session Fixation là một kỹ thuật tấn công web. Kẻ tấn công lừa người dùng sử dụng session ID đặc biệt.

0 0 46

- vừa được xem lúc

Làm thế nào để Design của Website thu hút hơn?

Xin chào các bạn. Bởi thế, không phải bàn cãi, thiết kế giao diện vừa thu hút, vừa chuyên nghiệp và ấn tượng là một trong những yếu tố quan trọng nhất trong cả quá trình phát triển 1 website.

0 0 36