I have done a simple layout to demostrate this.
First, I will put 4 divs, the first to show the partial results, and the last to see the final result. The markup is just:
<div class="box mesh1"></div>
<div class="box mesh2"></div>
<div class="box mesh3"></div>
<div class="box mesh"></div>
here box is just for dimensions, mesh1 to 3 hold the partial results, in mesh we put it all together.
The CSS is:
.box {
width: 400px;
height: 150px;
position: relative;
display: inline-block;
}
.mesh1, .mesh {
background:
-webkit-linear-gradient(5deg, rgba(0, 250, 0, 0.5), rgba(0, 100, 0, 0.5))
}
.mesh:after, .mesh:before {
content: "";
position: absolute;
left: 0px;
bottom: 0px;
top: 0px;
right: 0px;
}
.mesh2, .mesh:after {
background: -webkit-radial-gradient(center center, circle cover, rgba(250, 0, 0, 0.6) 0%, rgba(120, 0, 10, 0.5) 100%);}
.mesh3, .mesh:before {
background: -webkit-radial-gradient(10% 10%, ellipse cover, rgba(0, 0, 250, 0.6) 0%, white 100%);}
I am giving to the mesh1 class a background linear, inclinated 5 degrees, and specifying colors in rgba format to allow for transparency.
Then, to be able to overlay more gradients, I specify to pseudo elements as before and after, sharing the same layout properties.
To the after element I give a circular gradient, shared with the mesh2
To the before element I give an elliptical gradient, off center.
All of them can be rgba.
At the end, you see in the mesh div the result of overlapping everything
(I have used everywhere the webkit notation to make it short)
I wouldn't say it is much artistic, but I leave this part to you :-)
fiddle here