Trình tạo đường phân chia CSS

CSS
Nội dung phía trên

Nội dung phía dưới
Tiếp theo

Đường phân chia phần là các đường kẻ ngang ngăn cách các khối của trang đích, chẳng hạn đường mảnh giữa hai phần hoặc đường kết thúc bảng giá. Trình tạo này tạo một đường phân chia ngang đơn giản: chọn kiểu đường kẻ (liền, gạch ngang, chấm, đôi hoặc rãnh), đặt màu, độ dày và lề, xem trước giữa hai phần mẫu rồi sao chép CSS tạo ra.

Cách tạo đường phân chia

  1. 1

    Chọn kiểu đường kẻ

    Chọn từ liền, gạch ngang, chấm, đôi hoặc rãnh, kiểu `border-top` dùng cho đường phân chia.

  2. 2

    Chọn màu

    Điều chỉnh đường kẻ cho hợp với nền của các phần hoặc màu thương hiệu của bạn.

  3. 3

    Đặt độ dày và lề

    Độ dày từ 1 đến 20 pixel; lề kiểm soát khoảng trống dọc phía trên và dưới đường kẻ.

  4. 4

    Xem trước giữa các phần

    Đường phân chia được hiển thị giữa hai phần mẫu để bạn kiểm tra căn chỉnh và khoảng cách.

  5. 5

    Sao chép CSS

    Sao chép quy tắc `.divider` sẵn dùng và dán vào tệp stylesheet của bạn.

Các đường phân cách đơn giản

/* Subtle horizontal rule */
.divider {
  height: 1px;
  background: #e5e7eb;
  border: 0;
  margin: 3rem 0;
}

/* With text in the middle */
.divider-text {
  display: flex;
  align-items: center;
  gap: 1rem;
  color: #6b7280;
}
.divider-text::before,
.divider-text::after {
  content: "";
  flex: 1;
  height: 1px;
  background: #e5e7eb;
}

Chuyển tiếp mục bằng cạnh nghiêng

Mẹo dùng clip-path:

.hero {
  background: #0f172a;
  color: white;
  padding: 4rem 1rem;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 calc(100% - 48px));
}

Góc dưới bên trái được kéo lên 48px, tạo thành một cạnh nghiêng đường chéo. Để chuyển tiếp một cách liền mạch, phần tiếp theo cần bắt đầu ngang với cạnh này, không được có khoảng trống trắng.

Đối với đường chéo đi theo hướng ngược lại, hãy đảo vị trí góc dưới được nâng lên. Đối với các đường rãnh hoặc đường hình chữ Z, cần thêm thêm các đỉnh.

Đường phân chia dạng sóng bằng SVG

SVG là phương pháp sạch nhất để tạo các đường cong tự nhiên:

<div class="hero">…</div>
<svg class="wave" viewBox="0 0 1440 80" preserveAspectRatio="none">
  <path d="M0 80 C 360 0, 1080 0, 1440 80 L 1440 80 L 0 80 Z"
        fill="white"/>
</svg>
.wave {
  display: block;
  width: 100%;
  height: 60px;
  margin-top: -1px; /* close any subpixel gap */
}

preserveAspectRatio="none" cho phép định dạng SVG kéo dài đến toàn bộ chiều rộng của container, bất kể kích thước ban đầu của hình ảnh. margin-top: -1px loại bỏ khe hở nhỏ mà một số trình hiển thị có thể để lại.

Thư viện đường phân chia thường dùng

Các đoạn mã hữu ích:

Mẫu Kiểu
Đường nét đứt border-top: 1px dashed currentColor
Đường chấm border-top: 2px dotted currentColor; opacity: .4
Đường chuyển sắc background: linear-gradient(to right, transparent, #999, transparent)
Trang trí Đường kẻ + họa tiết SVG canh giữa bằng ::before/::after
Cạnh nghiêng clip-path: polygon(...) trên mục phía trên
Sóng SVG với đường cong Bézier bậc ba
Sóng đảo ngược SVG có các đỉnh nhô lên vào trong mục
Zigzag SVG với các điểm xen kẽ

Những mẹo nhỏ

  • Khớp mép nối: Nền của đường phân chia (màu tô SVG hoặc màu của mục nghiêng) phải trùng khớp chính xác với nền của mục tiếp theo; chỉ cần lệch màu 1px là hiệu ứng hỏng.
  • Tránh các đường cong gắt trên màn hình hẹp: Một con sóng trông thanh lịch ở 1440px có thể trở thành đường sin bị bẹp ở 360px. Hãy giảm biên độ trên di động bằng media query, hoặc dùng một đường SVG khác.
  • Đừng xếp chồng nhiều đường phân chia: Mỗi ranh giới mục chỉ cần một mép nối là đủ.
  • Hiệu suất: Đường phân chia SVG nội tuyến gần như không tốn tài nguyên; trong khi đường phân chia dựa trên hình ảnh lại tốn thêm một yêu cầu mạng. SVG nội tuyến chiếm ưu thế.

Câu hỏi thường gặp

SVG. CSS có thể xử lý các đoạn thẳng góc một cách chính xác, nhưng đối với các đường cong thì cần sử dụng các phương pháp xấp xỉ dựa trên nhiều đỉnh đa giác hoặc các giải pháp thay thế. Các đường dẫn trong SVG xử lý các đường cong mượt mà một cách tự nhiên và có khả năng tự động điều chỉnh kích thước cho mọi chiều rộng.

Đó là do làm tròn ở mức dưới điểm ảnh (subpixel). Hãy thêm margin-top: -1px (hoặc -2px ở một số trình duyệt) cho sóng, hoặc dùng display: block để tránh khoảng trắng của phần tử nội dòng (inline). Cả hai cách đều khép kín mép nối một cách đáng tin cậy.

Đúng vậy, về mặt hình ảnh. Tuy nhiên, nếu phần trên có tính tương tác (ví dụ như một nút ở góc dưới), đường dẫn cắt nghiêng sẽ loại bỏ nội dung hiển thị ở khu vực đó mà vẫn giữ nguyên đối tượng được nhắm mục tiêu – điều này có thể khiến người dùng bất ngờ. Hãy để lại khoảng trống bên trong vùng bị cắt để các thành phần tương tác không tiếp xúc trực tiếp với mép cắt.

Không. Các dấu phân cách chỉ mang tính trình bày và không ảnh hưởng đến nội dung trang – chính nội dung đó mới là đối tượng được các công cụ tìm kiếm lập chỉ mục. Cấu trúc ngữ nghĩa (tiêu đề, phần nội dung) rất quan trọng đối với SEO; trong khi các dấu phân cách dùng để tạo hiệu ứng thẩm mỹ giữa chúng thì không có tác dụng đáng kể.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác