Find out how to create Rainbow Mouse Path utilizing html css and js. Designed by Marjo Sobrecaray a codepen consumer.

HTML
<p>transfer your mouse</p>
CSS (SCSS)
@import url('https://fonts.googleapis.com/css?household=Paytone+One');
@import 'compass/css3';
physique,html {
background:#060a19;
width:100%;
peak: 100%;
overflow:hidden;
font-family: Paytone One;
}
@mixin keyframes($animationName) {
@-webkit-keyframes #{"$animationName"} {
@content material;
}
@-moz-keyframes #{$animationName} {
@content material;
}
@-ms-keyframes #{$animationName} {
@content material;
}
@keyframes #{$animationName} {
@content material;
}
}
p {
coloration: #fff;
background: #000;
mix-blend-mode: lighten;
font-size:30px;
text-align: heart;
place: absolute;
left:0;
proper: 0;
high:0;
backside: 0;
margin:auto;
peak: 100px;
@embody animation(filterHue2 2s linear infinite);
&::earlier than {
content material: '';
show: block;
place: absolute;
high: 0;
proper: 0;
backside: 0;
left: 0;
background: #e23b4a; //fallback
@embody background(linear-gradient(to proper,#23966c, #faaa54, #e23b4a, #db0768, #360670));
pointer-events: none;
mix-blend-mode: multiply;
}
}
.loader-container {
width:100px;
peak:100px;
place: absolute;
@embody animation(scaleUp .5s linear);
@embody remodel(scale(0));
opacity: 0;
.loader {
background: #ff0c0c;
@embody background(linear-gradient(50deg,#ff0c0c,#21d400));
border-radius:10px;
@embody filter(hue-rotate(0deg));
animation: filterHue 2.5s linear infinite;
peak:100%;
width: 100%;
remodel:rotate(0deg);
&::after {
content material:'';
place:absolute;
peak: 80px;
width:80px;
left:10px;
high:10px;
border-radius: 100%;
}
}
}
@embody keyframes(filterHue2) {
50%{@embody filter(hue-rotate(1000deg));}
100% {@embody filter(hue-rotate(2000deg)); }
}
@embody keyframes(filterHue) {
50%{@embody filter(hue-rotate(1000deg));}
100% {@embody filter(hue-rotate(2000deg));
@embody remodel(rotate(360deg));}
}
@embody keyframes(scaleUp) {
50%{@embody remodel(scale(0.5));opacity: 1}
100% {@embody remodel(scale(0.25));}
}
@helps (-ms-ime-align: auto) {
p {
coloration: #21d400;
background: clear;
mix-blend-mode: lighten;
font-size: 30px;
text-align: heart;
place: absolute;
left: 0;
proper: 0;
high: 0;
backside: 0;
margin: auto;
peak: 100px;
@embody animation(filterHue2 2s linear infinite);
}
p::earlier than {
content material: '';
show: block;
place: absolute;
high: 0;
proper: 0;
backside: 0;
left: 0;
background: clear;
}
}
@media all and (-ms-high-contrast: none), (-ms-high-contrast: lively) {
p {
coloration: #ff447c;
background: clear;
mix-blend-mode: lighten;
font-size: 30px;
text-align: heart;
place: absolute;
left: 0;
proper: 0;
high: 0;
backside: 0;
margin: auto;
peak: 100px;
@embody animation(filterHue2 2s linear infinite);
}
p::earlier than {
content material: '';
show: block;
place: absolute;
high: 0;
proper: 0;
backside: 0;
left: 0;
background: clear;
}
.loader {
@embody background(linear-gradient(50deg,rgba(240, 0, 80, 1),#2380ff) !vital);
}
}
JS
window.addEventListener("mousemove", perform (e) {
var to_append = doc.getElementsByClassName('loader-container')[0];
var all = doc.getElementsByClassName('loader-container');
var parent_div = doc.createElement('div');
parent_div.className = "loader-container";
var inner_div = doc.createElement('div');
inner_div.className = "loader";
parent_div.appendChild(inner_div)
var d = doc.physique.appendChild(parent_div);
parent_div.fashion.left = (e.clientX - 50)+'px';
parent_div.fashion.high = (e.clientY - 50)+'px';
if(doc.getElementsByClassName('loader-container').size > 50) {
doc.physique.removeChild(to_append)
}
});
Â

