我建议使用渐变而不是文档元素来创建像这样的背景效果。
尝试这个:
body {
background-image: linear-gradient(to bottom, orange, orange 50%, green 50%, green);
background-size: cover;
background-repeat: no-repeat;
}
请注意,您需要使 body
元素填充页面:
html, body {
margin: 0;
height: 100%;
}
这是我的例子:http://dabblet.com/gist/4ba4bde188af953dcdcc
话虽如此,我不明白你所说的“水平缩小”或“原始高度”的含义 - 我希望我已经回答了你所寻找的答案。
更新:
根据评论区的Albert所说,OP希望在页面加载时将30%相对于视口的高度进行调整。 这是可以做到的,但必须通过JavaScript来完成。 我将提供一个纯JS实现而不使用jQuery。
window.addEventListener("DOMContentLoaded", setBodyGradientOnLoad);
function setBodyGradientOnLoad() {
var heightPx = window.innerHeight;
var gradientStop = Math.floor( heightPx * 0.3 );
var body = document.getElementsByTagName("body")[0];
body.style.backgroundImage = "linear-gradient(to bottom, orange, orange " + gradientStop + "px, green " + gradientStop + "px, green)";
}
注意,您仍需要其余的CSS来应用
background-size
和
background-repeat
选项,以及为禁用JavaScript的浏览器提供备用方案。
请注意,我使用的"
DOMContentLoaded
"和未加前缀的
linear-gradient
意味着这仅适用于现代浏览器(IE 9+,Safari 3.1+ - 2010年或之后的版本,基本上)。