Самый простой способ сделать сложный div с волнами

Я хотел бы создать div со сложными волнами, я встречал много руководств и пробовал много вещей, но не могу этого сделать. Как лучше всего сделать волны, чтобы фон двигался и останавливался на волне? Каков наилучший/самый простой способ, я слышал о SVG, но не умею с этим. Сложно ли это осознать? Я хотел бы рисовать кривые и соответственно менять фон, как в этой теме WordPress: https://www.elegantthemes.com/blog/theme-releases/shape-dividers

Хотел бы я это сделать: http://www.zupimages.net/viewer.php?id=19/22/jr0r.png

Я должен изучить SVG? или использовать иллюстратор, слишком сложно прямо в CSS, если у меня есть несколько волн. Существует ли программное обеспечение, подобное иллюстратору, для бесплатного использования SVG?

а затем сделать остальную часть моего стиля с бутстрапом 4 и т. д.? ...Спасибо

SVG бесплатно? Инкскейп. Сначала Google, затем StackOverflow.

enhzflep 29.05.2019 13:58
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
118
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Обычно это можно сделать с помощью шума Перлина. Однако вы также можете сделать это, установив несколько точек с последовательными x и случайным y на холсте svg и соединив точки с Безье.

let w = 1000;
let h = 300;
svg.setAttributeNS(null,"viewBox",`0 0 ${w} ${h}`)
let n = 18; //number of points
let points = [];// the points array used to draw the curve

// add points to the points array
for(let x=0; x <= w; x+= w/n){
  let y = h - Math.random()*h;
  points.push({x:x,y:y})
}


// a function to connect all the points in the points array with beziers
function  connect(points) {    
   let d = "";// the d attribute for the path
   // move to the first point of the array
   d+= `M${points[0].x}, ${points[0].y}`;
    //build the path
    for (var i = 1; i < points.length - 2; i++) {
      var cp = {};
      cp.x = (points[i].x + points[i + 1].x) / 2;
      cp.y = (points[i].y + points[i + 1].y) / 2;
      
      d+=`Q${points[i].x},${points[i].y} ${cp.x},${cp.y}`
    }
    //the last curve
    let index = points.length-2
   d+=`Q${points[index].x},${points[index].y} ${points[index + 1].x},${points[index + 1].y}`;
   //close the path
   d+=`V${h}H0z`
    return d;
  }
//set the attribute `d` for the wave
wave.setAttributeNS(null,"d",connect(points))
svg{border:1px solid}
<svg id = "svg" >
  <path id = "wave" />
</svg>

Здравствуйте, этот скрипт волшебный, у меня бы такое никогда не получилось. Просто большая проблема. Форма кривой меняется каждый раз при перезагрузке страницы. Что делать, если я хочу сделать статическую кривую? Спасибо

clement 29.05.2019 15:31

В этом случае вы жестко задаете значения для точек. В качестве альтернативы, если вы видите кривую, которая вам нравится, вы можете открыть инспектор, скопировать элемент svg и использовать его в своем html.

enxaneta 29.05.2019 15:38

Я пробовал это раньше, просто используя изображение в качестве границы. Вы можете создать изображение с волнистой рамкой и поиграть с прозрачностью, чтобы получить нужный эффект.

Другие вопросы по теме