CSS3 gradient background set on body doesn't stretch but instead repeats?
好吧,假设
如果我使用
然后我最大化我的窗口(或者只是让它高于300px),梯度将正好是300px高(内容的高度),然后重复以填充窗口的其余部分。
我假设这不是一个bug,因为webkit和gecko都是一样的。
但是有没有一种方法可以让渐变拉伸来填充窗口而不是重复?
应用以下CSS:
1 2 3 4 5 6 7 8 9 | html { height: 100%; } body { height: 100%; margin: 0; background-repeat: no-repeat; background-attachment: fixed; } |
编辑:根据评论在正文声明中添加了
编辑:根据评论在正文声明中添加了
关于之前的答案,如果内容需要滚动,将
例如。:
1 2 3 | body { background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#cbccc8)) fixed; } |
。
以下是我为解决这个问题所做的…它将显示内容的整个长度的渐变,然后简单地回退到背景色(通常是渐变中的最后一种颜色)。
1 2 3 4 5 6 7 8 9 10 | html { background: #cbccc8; } body { background-repeat: no-repeat; background: #cbccc8; background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#cbccc8)); background: -moz-linear-gradient(top, #fff, #cbccc8); filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#cbccc8'); } |
号
1 2 3 | <body> Hello world! </body> |
我在firefox 3.6、safari 4和chrome中测试过,对于任何不支持HTML标签样式的浏览器,我都会将背景色保留在正文中。
设置
1 2 3 4 | html { -moz-linear-gradient(top, #fff, #000); /* etc. */ } |
。
背景延伸到底部,不会发生奇怪的滚动行为。您可以跳过所有其他修复程序。这得到了广泛的支持。我没有找到一个不允许您将背景应用于HTML标记的浏览器。它是完全有效的CSS,已经有一段时间了。:)
我知道我参加晚会迟到了,但这里有一个更确切的答案。
您所需要做的就是使用
这样地:
1 2 3 4 5 6 7 | html { min-height: 100%; } body { background: linear-gradient(#ff7241, #ff4a1f); } |
号
这一页上有很多部分信息,但不完整。我要做的是:
下面是一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | html { background: #a9e4f7; /* Old browsers */ background: -moz-linear-gradient(-45deg, #a9e4f7 0%, #0fb4e7 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, right bottom, color-stop(0%,#a9e4f7), color-stop(100%,#0fb4e7)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(-45deg, #a9e4f7 0%,#0fb4e7 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(-45deg, #a9e4f7 0%,#0fb4e7 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(-45deg, #a9e4f7 0%,#0fb4e7 100%); /* IE10+ */ background: linear-gradient(135deg, #a9e4f7 0%,#0fb4e7 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#a9e4f7', endColorstr='#0fb4e7',GradientType=1 ); /* IE6-9 fallback on horizontal gradient */ background-attachment: fixed; } body { margin-top: 0px; margin-bottom: 0px; } /* OPTIONAL: div to store content. Many of these attributes should be changed to suit your needs */ #container { width: 800px; margin: auto; background-color: white; border: 1px solid gray; border-top: none; border-bottom: none; box-shadow: 3px 0px 20px #333; padding: 10px; } |
这已经通过IE、Chrome和Firefox在不同大小和滚动需求的页面上进行了测试。
脏的;也许你能加一个最小高度:100%;到HTML,和身体标签?或者至少设置一个默认的背景色,即结束渐变色。
我很难在这里找到答案。我发现把一个全尺寸的DIV固定在身体里,给它一个负的z索引,然后把梯度附加到它上面会更好。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | <style> .fixed-background { position:fixed; margin-left: auto; margin-right: auto; top: 0; width: 100%; height: 100%; z-index: -1000; background-position: top center; background-size: cover; background-repeat: no-repeat; } .blue-gradient-bg { background: #134659; /* For browsers that do not support gradients */ background: -webkit-linear-gradient(top, #134659 , #2b7692); /* For Safari 5.1 to 6.0 */ background: -o-linear-gradient(bottom, #134659, #2b7692); /* For Opera 11.1 to 12.0 */ background: -moz-linear-gradient(top, #134659, #2b7692); /* For Firefox 3.6 to 15 */ background: linear-gradient(to bottom, #134659 , #2b7692); /* Standard syntax */ } body{ margin: 0; } </style> <body > </body> |
。
这是一个完整的样品https://gist.github.com/morefromalan/8A4F6DB5CE43B5240A6DDAB611AFDC55
我使用了这个CSS代码,它对我很有用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | html { height: 100%; } body { background: #f6cb4a; /* Old browsers */ background: -moz-linear-gradient(top, #f2b600 0%, #f6cb4a 100%); /* FF3.6+ */ background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f2b600), color-stop(100%,#f6cb4a)); /* Chrome,Safari4+ */ background: -webkit-linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* Chrome10+,Safari5.1+ */ background: -o-linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* Opera 11.10+ */ background: -ms-linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* IE10+ */ background: linear-gradient(top, #f2b600 0%,#f6cb4a 100%); /* W3C */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f2b600', endColorstr='#f6cb4a',GradientType=0 ); /* IE6-9 */ height: 100%; background-repeat: no-repeat; background-attachment: fixed; width: 100%; background-position: 0px 0px; } |
相关信息是,您可以在http://www.colorzilla.com/gradient-editor上创建自己的大渐变。/
斯滕
我就是这样做的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | html, body { height:100%; background: #014298 ; } body { background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#5c9cf2), color-stop(100%,#014298)); background: -moz-linear-gradient(top, rgba(92,156,242,1) 0%, rgba(1,66,152,1) 100%); background: -o-linear-gradient(top, #5c9cf2 0%,#014298 100%); /*I added these codes*/ margin:0; float:left; position:relative; width:100%; } |
。
在我浮体之前,上面有一个间隙,它显示了HTML的背景色。如果我删除HTML的bgcolor,当我向下滚动时,渐变会被剪切。所以我浮动了物体,把它的位置设置为相对,宽度设置为100%。它适用于Safari、Chrome、Firefox、Opera、Internet Expl。哦,等等。P
你们觉得怎么样?
1 2 3 4 | background: #13486d; /* for non-css3 browsers */ background-image: -webkit-gradient(linear, left top, left bottom, from(#9dc3c3), to(#13486d)); background: -moz-linear-gradient(top, #9dc3c3, #13486d); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#9dc3c3', endColorstr='#13486d'); background-repeat:no-repeat; |
而不是100%,我只是添加了一些像素现在得到了这个,它适用于整个页面,没有间隙:
1 2 3 4 5 6 | html { height: 1420px; } body { height: 1400px; margin: 0; background-repeat: no-repeat; } |
。