Tôi thích câu trả lời của ThomasA, nhưng muốn có bối cảnh thực tế hơn với làn sóng được sử dụng để phân tách hai div. Vì vậy, tôi đã tạo một bản trình diễn hoàn chỉnh hơn trong đó dấu phân tách SVG được định vị hoàn hảo giữa hai div.
Bây giờ tôi nghĩ sẽ rất tuyệt nếu tiến xa hơn. Điều gì sẽ xảy ra nếu chúng ta có thể làm tất cả điều này trong CSS mà không cần SVG nội tuyến ? Vấn đề là để tránh đánh dấu thêm. Đây là cách tôi đã làm điều đó:
Hai đơn giản <div>
:
#A {
background: #0074D9;
}
#B {
background: #7FDBFF;
}
#A::after {
content: "";
position: relative;
left: -3rem;
top: calc( 3rem - 4rem / 2);
float: left;
display: block;
height: 4rem;
width: 100vw;
background: hsla(0, 0%, 100%, 0.5);
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 70 500 60' preserveAspectRatio='none'%3E%3Crect x='0' y='0' width='500' height='500' style='stroke: none; fill: %237FDBFF;' /%3E%3Cpath d='M0,100 C150,200 350,0 500,100 L500,00 L0,0 Z' style='stroke: none; fill: %230074D9;'%3E%3C/path%3E%3C/svg%3E");
background-size: 100% 100%;
}
* {
margin: 0;
}
#A,
#B {
padding: 3rem;
}
div {
font-family: monospace;
font-size: 1.2rem;
line-height: 1.2;
}
#A {
color: white;
}
<div id="A">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus nec quam tincidunt, iaculis mi non, hendrerit felis. Nulla pretium lectus et arcu tempus, quis luctus ex imperdiet. In facilisis nulla suscipit ornare finibus. …
</div>
<div id="B" class="wavy">… In iaculis fermentum lacus vel porttitor. Vestibulum congue elementum neque eget feugiat. Donec suscipit diam ligula, aliquam consequat tellus sagittis porttitor. Sed sodales leo nisl, ut consequat est ornare eleifend. Cras et semper mi, in porta nunc.</div>
Demo Dải phân cách lượn sóng (với các phần tử giả CSS để tránh đánh dấu thêm)
Việc định vị phức tạp hơn một chút so với SVG nội tuyến nhưng hoạt động tốt. (Có thể sử dụng thuộc tính tùy chỉnh CSS hoặc các biến tiền xử lý để giữ cho chiều cao và phần đệm dễ đọc.)
Để chỉnh sửa màu sắc, bạn cần phải chỉnh sửa chính SVG được mã hóa URL.
Hãy chú ý (như trong bản demo đầu tiên) đến một thay đổi trong cáchviewBox
loại bỏ các khoảng trống không mong muốn trong SVG. (Một tùy chọn khác là vẽ một SVG khác.)
Một điều cần chú ý ở đây là background-size
thiết lập để 100% 100%
làm cho nó kéo dài theo cả hai hướng.