Công Cụ Này Là Gì?
clip-path là thuộc tính CSS ẩn mọi thứ bên ngoài một vùng xác định của phần tử, chỉ để lại hình dạng bên trong hiển thị — phần còn lại của khung phần tử vẫn tồn tại trong bố cục, chỉ là không được vẽ ra. Nó nhận các hàm hình dạng cơ bản như circle(), ellipse(), inset(), và polygon(), trong đó hàm cuối cùng nhận một danh sách tùy ý các cặp tọa độ x/y để định nghĩa bất kỳ hình dạng cạnh thẳng nào.
Tọa độ polygon() là phần khó viết tay nhất — một ngũ giác, lục giác hay ngôi sao đều cần vài điểm được đặt chính xác, và sai một điểm sẽ làm méo toàn bộ hình dạng. Công cụ này tính toán các tọa độ đó cho bạn từ một hình dạng có sẵn, cập nhật khung xem trước trực tiếp ngay lập tức, và cung cấp chính xác mã CSS clip-path để sao chép.
Nguồn: CSS Shapes Module Level 1 / CSS Masking Module Level 1, W3C — các đặc tả định nghĩa clip-path và các hàm hình dạng cơ bản của nó.
Tại Sao Nên Dùng?
- Xem trước trực tiếp cắt một khung xem trước thực sự theo hình dạng đã chọn, nên bạn thấy kết quả thật thay vì phải tưởng tượng từ tọa độ.
- Bảy hình dạng có sẵn — hình tròn, elip, tam giác, ngũ giác, lục giác, ngôi sao và hình chữ nhật bo góc — bao phủ phần lớn các trường hợp sử dụng clip-path mà không cần tự viết tay các điểm polygon.
- Các hình dạng tròn, elip và hình chữ nhật bo góc có kèm thanh trượt kích thước/độ bo để bạn tinh chỉnh hình dạng mà không cần chỉnh sửa tọa độ.
- Xuất mã CSS clip-path chuẩn, sẵn sàng dán vào bất kỳ phần tử nào.
- Chạy hoàn toàn trong trình duyệt của bạn — không có gì bạn cấu hình được tải lên bất cứ đâu. Miễn phí, không cần đăng ký, hoạt động tốt trên điện thoại.
Cách Sử Dụng
- Chọn một hình dạng từ menu thả xuống — hình tròn, elip, tam giác, ngũ giác, lục giác, ngôi sao, hoặc hình chữ nhật bo góc.
- Với hình tròn, elip và hình chữ nhật bo góc, điều chỉnh thanh trượt kích thước/độ bo để tinh chỉnh phần cắt.
- Xem khung xem trước cập nhật trực tiếp khi bạn thay đổi hình dạng hoặc thanh trượt.
- Sao chép mã CSS clip-path được tạo ra và dán vào phần tử bạn muốn cắt.
- Với hình ảnh thay vì màu đặc, áp dụng cùng thuộc tính clip-path cho một thẻ <img> hoặc phần tử có background-image.
Ví dụ
Đầu vào
Shape: HexagonĐầu ra
clip-path: polygon(50.0% 0.0%, 93.3% 25.0%, 93.3% 75.0%, 50.0% 100.0%, 6.7% 75.0%, 6.7% 25.0%);Một phần cắt lục giác đều, thường dùng cho ảnh đại diện kiểu huy hiệu hoặc biểu tượng tính năng.
Hình dạng cơ bản so với polygon()
Hình tròn, elip và inset (hình chữ nhật bo góc) là các hàm hình dạng cơ bản dựng sẵn của CSS với cú pháp đơn giản riêng — một hoặc hai bán kính, cộng thêm vị trí tâm hoặc độ bo góc tùy chọn. Tam giác, ngũ giác, lục giác và ngôi sao không phải là hình dạng dựng sẵn; tất cả đều được biểu diễn bằng polygon() — một danh sách phẳng các cặp tọa độ x/y vẽ nên đường viền hình dạng. Công cụ này tự động tính các tọa độ đó cho các đa giác đều (cách đều nhau) và ngôi sao năm cánh, đây chính là phần tẻ nhạt nhất để làm đúng bằng tay.
Các mẫu clip-path phổ biến
- Ảnh đại diện hoặc huy hiệu hình tròn: circle() với bán kính trung bình, thường kết hợp với ảnh nguồn hình vuông để hình tròn không bị kéo giãn thành elip.
- Đường phân chia phần nghiêng góc: một đa giác tùy chỉnh (không có sẵn ở đây) làm nghiêng mép trên hoặc dưới của một phần rộng toàn màn hình để tạo điểm ngắt trang không phải hình chữ nhật.
- Biểu tượng đánh giá sao hoặc hình dạng huy hiệu: hình dạng ngôi sao có sẵn, hữu ích như một hình trang trí thay vì vẽ SVG bằng tay cho các trường hợp đơn giản.
- Lưới ảnh lục giác: các ảnh cắt hình lục giác sắp xếp theo kiểu tổ ong, một mẫu phổ biến cho trang portfolio/đội nhóm.
- Hình chữ nhật bo góc như một giải pháp thay thế nhẹ cho border-radius khi bạn cần phần cắt cũng cắt bỏ nội dung con bị tràn ra, vì chỉ riêng border-radius không cắt các phần tử con nếu không có thêm overflow:hidden.
Kết hợp với các công cụ CSS khác
clip-path thường được kết hợp với gradient CSS làm nền bị cắt, hoặc với box-shadow áp dụng cho một phần tử bao bọc (vì clip-path cũng cắt bóng riêng của phần tử, nên bóng đặt trên phần tử cha là cách khắc phục thường dùng cho một hình dạng đã cắt nhưng vẫn cần trông như đang nổi lên).
→ Trình Tạo Gradient CSS · Trình Tạo Border Radius · Trình Tạo Box Shadow
Câu Hỏi Thường Gặp
clip-path có ảnh hưởng đến kích thước bố cục của phần tử không?
Không — phần tử vẫn giữ nguyên kích thước và vị trí khung ban đầu cho mục đích bố cục; clip-path chỉ thay đổi những gì được vẽ ra. Các phần tử xung quanh được bố trí như thể phần cắt chưa được áp dụng, điều này có thể gây bất ngờ nếu bạn kỳ vọng hình dạng đã cắt hoạt động như một phần tử đã đổi kích thước.
Tại sao box-shadow không hiển thị trên hình dạng đã cắt của tôi?
clip-path cắt toàn bộ phần hiển thị của phần tử, bao gồm cả bất kỳ bóng nào nó đổ ra, nên box-shadow riêng của một phần tử được cắt theo hình tròn hay đa giác sẽ bị cắt bỏ tại ranh giới cắt. Để có bóng theo sát hình dạng hiển thị, hãy áp dụng box-shadow cho một phần tử bao bọc không bị cắt xung quanh phần tử đã cắt.
Tôi có thể tạo hoạt ảnh hoặc chuyển tiếp cho hình dạng clip-path không?
Có, nhưng chỉ giữa hai giá trị clip-path cùng loại và cùng số điểm — ví dụ, một polygon() với 6 điểm chuyển tiếp sang một polygon() khác cũng có 6 điểm. Chuyển tiếp giữa các hình dạng khác biệt về bản chất (từ circle() sang polygon()) thường sẽ không tạo hoạt ảnh mượt mà trên các trình duyệt.
clip-path có thể dùng cho hình nền, chứ không chỉ nội dung phần tử không?
clip-path cắt toàn bộ phần tử — bao gồm cả background-image, background-color, viền và nội dung cùng nhau — chứ không riêng phần nền. Nếu bạn chỉ muốn cắt hình nền trong khi giữ nguyên các nội dung khác, hãy áp dụng clip-path cho một phần tử riêng chỉ chứa hình nền đó.
clip-path có được hỗ trợ trên tất cả các trình duyệt hiện đại không?
Có — clip-path với các hàm hình dạng cơ bản (circle, ellipse, inset, polygon) đã được hỗ trợ rộng rãi (Baseline) trên các trình duyệt lớn kể từ tháng 1 năm 2020, theo dữ liệu tương thích của MDN. Nhìn chung có thể an toàn khi sử dụng trong sản xuất mà không cần phương án dự phòng cho các phiên bản trình duyệt hiện tại.