So what happens here is that the <html>
element is just special. It is the height of the viewport, because it has to be, and it defaults to overflow:auto;
. and yet, it's height is not explicitly defined, it is granted by the browser. So the gradient doesn't know where to get it's height value, and goes insane.
body {
background: linear-gradient(#e66465, #9198e5);
}
If we give the <html>
element an explicit height, then all is fine. In fact not giving the <html>
element a height of 100% tends to be the cause of many issues, that are all fixed by giving <html>
a height. min-height: 100%;
will work as well.
html {
height: 100%;
}
body {
background-image: linear-gradient(#e66465, #9198e5);
}
You could alternatively give the gradient itself a height of 100vh.
body {
background-image: linear-gradient(#e66465, #9198e5);
background-size: 100% 100vh;
}