Мені подобається відповідь ThomasA, але я хотів отримати більш реалістичний контекст, коли хвиля використовується для розділення двох div. Тож я створив більш повну демонстраційну версію, де сепаратор SVG ідеально розташувався між двома div.
Тепер я подумав, що було б круто йти далі. Що, якби ми могли зробити все це в CSS без необхідності вбудованого SVG ? Справа в тому, щоб уникнути зайвої розмітки. Ось як я це зробив:
Два простих <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>
Демо- хвилястий дільник (із псевдоелементами CSS, щоб уникнути зайвої розмітки)
Позиціонувати було трохи складніше, ніж із вбудованим SVG, але працює так само добре. (Можна використовувати користувацькі властивості CSS або змінні попереднього процесора, щоб висота та відступ були легкими для читання.)
Щоб відредагувати кольори, потрібно відредагувати URL-кодований SVG.
Зверніть увагу (як у першій демонстрації) на зміну,viewBox
щоб позбутися небажаних пробілів у SVG. (Іншим варіантом було б намалювати інший SVG.)
Інша справа, на яку слід звернути увагу, - це background-size
набір, щоб 100% 100%
він розтягнувся в обидві сторони.