Program Wave with Javascript

Here is what I am now http://jsfiddle.net/6GEfr/

It works, but I want it to be like a wave. Instead of the ā€œvā€ shape, it should look like a real wave. How do you do it gradually?

var height = 0;

setInterval(function () {
    $('#container').prepend('<div style="height:' + Math.abs(height++) + '%"></div>');
    height = (height == 100) ? -100 : height;
}, 10);

my css:

html, body, #outerContainer, #container {
    height:100%;
}
#outerContainer {
    display : table;
}
#container {
    display : table-cell;
    vertical-align:bottom;
    white-space:nowrap;
}
#container > div {
    width:5px;
    background:black;
    display:inline-block;
}
+4
source share
1 answer

Just use Math.sin()to simulate the wave.

Updated example

var i = 5, height = 0;
setInterval(function () {
    $('#container').prepend('<div style="height:' + height + '%"></div>');
    i += 0.05;
    height = 50 * Math.sin(i) + 50;
}, 10);

If you want to make the wave smoother, decrease the increment value and the width of the elements. Here is an example.

+10
source

Source: https://habr.com/ru/post/1538924/


All Articles