当我使用渐变,内容很少时,渐变重复,我该如何防止?
我可以尝试使用html { height: 100%; }
,但是当我的内容需要滚动时...渐变重复
如何解决此问题
答案 0 :(得分:3)
您需要在CSS渐变上设置百分比,而不是绝对像素。只要您只关心现代浏览器(即您不关心IE6),我建议您远离图像,CSS工作正常。
我从这个问题的答案中得出答案,我希望我可以100次投票: How to get a vertical gradient background to work in all browsers?已接受的答案包含完全跨浏览器兼容性所需的一切。
以下是我举例并使其有效的地方:http://jsfiddle.net/HJvpf/1/
body {
background: -moz-linear-gradient(top, red 0%, blue 100%);
background: -webkit-gradient(linear, left top, left 100%, from(red), to(blue));
}
哦,在你的第二个jsFiddle链接中,它重复渐变的原因是因为你在html
上设置了100%的高度,但是渐变位于body
。您将height: 100%;
移至body
并且效果相当不错,但正如您在我的解决方案中所看到的,您根本不需要指定高度。
修改:所以你不希望它重复,但你也不希望它占据整个高度。只需设置repeat-x
即可。 http://www.w3schools.com/css/pr_background-repeat.asp
body {
background: -moz-linear-gradient(top, red, blue) repeat-x;
background: -webkit-gradient(linear, left top, left bottom, from(red), to(blue)) repeat-x;
}
让底部渐变色填充剩下的空间:
body {
background: blue -moz-linear-gradient(top, red, blue) repeat-x;
background: blue -webkit-gradient(linear, left top, left bottom, from(red), to(blue)) repeat-x;
}
答案 1 :(得分:0)
为什么不将渐变渲染为1px宽的图像并使用以下内容:
body {
background-color: #fff;
background-image: url("images/background.jpg");
background-position: center top;
background-repeat: repeat-x;
}
设置背景重复值将帮助您控制背景重复的方式。在这种情况下,它将被渲染为顶部的实心带。
http://www.w3schools.com/css/pr_background-repeat.asp
此外,使用图像应适用于所有浏览器,而moz-gradient可能会有问题。上面的图像方法应该在所有浏览器中呈现非常可预测的结果。
答案 2 :(得分:-1)
我遇到了同样的问题,但意识到这是有道理的,所以只是接受了滚动/重复渐变。您可以设置固定高度,而不是%,但为了确保渐变不重复,您需要将高度设置为比想要查看它的任何人的屏幕更大。你不知道人们有什么决议。我的建议是离开它。