Мне нравится ответ 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 или переменные препроцессора, чтобы высота и отступы были легко читаемыми.)
Чтобы редактировать цвета, вам нужно отредактировать сам SVG с кодировкой URL.
Обратите внимание (как в первой демонстрации) на изменение,viewBox
чтобы избавиться от ненужных пробелов в SVG. (Другой вариант - нарисовать другой SVG.)
Еще одна вещь, на которую следует обратить внимание, - это background-size
набор, 100% 100%
чтобы заставить ее растягиваться в обоих направлениях.