Этот код работает для меня в chrome браузере
Просто вызовите свою функцию создания после объявления.
Вы также можете использовать функцию готовности документа для того же
function create(i) {
var width = Math.random() * 8;
var height = width * 0.4;
var colourIdx = Math.ceil(Math.random() * 3);
var colour = "red";
switch (colourIdx) {
case 1:
colour = "yellow";
break;
case 2:
colour = "blue";
break;
default:
colour = "red";
}
$('<div class="confetti-' + i + ' ' + colour + '"></div>').css({
"width": width + "px",
"height": height + "px",
"top": -Math.random() * 20 + "%",
"left": Math.random() * 100 + "%",
"opacity": Math.random() + 0.5,
"transform": "rotate(" + Math.random() * 360 + "deg)"
}).appendTo('.wrapper');
drop(i);
}
function drop(x) {
$('.confetti-' + x).animate({
top: "100%",
left: "+=" + Math.random() * 15 + "%"
}, Math.random() * 3000 + 3000, function() {
reset(x);
});
}
function reset(x) {
$('.confetti-' + x).animate({
"top": -Math.random() * 20 + "%",
"left": "-=" + Math.random() * 15 + "%"
}, 0, function() {
drop(x);
});
}
for (var i = 0; i < 250; i++) {
create(i);
}
body {
margin: 0;
overflow: hidden;
}
.wrapper {
position: relative;
min-height: 100vh;
border: 1px solid red;
}
[class|="confetti"] {
position: absolute;
}
.red {
background-color: #E94A3F;
}
.yellow {
background-color: #FAA040;
}
.blue {
background-color: #5FC9F5;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper"></div>