div的多种背景颜色

时间:2013-11-19 09:47:41

标签: javascript html css html5 css3

我有div

<div class="test">
   Some text
</div>

我希望通过百分比(水平着色)为同一div提供不同的背景颜色

-----------------------------
| 20%   |  30%   | 50%      |
| Red   | Yellow | Green    |
-----------------------------

这可以用CSS吗?

4 个答案:

答案 0 :(得分:11)

您可以使用CSS3 Gradients [1] 来实现此类效果

div {
    background: linear-gradient(to right,  #ff3236 0%,#ff3033 32%,#3e30ff 32%,#3e30ff 63%,#33ff30 63%,#33ff30 100%);
    height: 400px;
}

Demo

您可以在here

上创建此类渐变

如果您正在寻找静态渐变宽度,您还可以将px%一起使用

Demo (如果您正在寻找跨浏览器解决方案,请添加browser-prefixes,我没有在此演示中添加所有规则)

Demo 2 (垂直拆分,只需将to right更改为to bottom

1。 More on CSS3 Gradients 2。 Browser Support

答案 1 :(得分:3)

您可以使用渐变来实现此目的:

要么谷歌并创建自己的。 或者使用这样的生成器:

http://www.colorzilla.com/gradient-editor/

它为您提供以下css代码:

background: #ff3019; /* Old browsers */
background: -moz-linear-gradient(left,  #ff3019 0%, #d40000 20%, #f2f600 20%, #f2f600 50%, #1e7a00 50%, #1e7a00 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, right top, color-stop(0%,#ff3019), color-stop(20%,#d40000), color-stop(20%,#f2f600), color-stop(50%,#f2f600), color-stop(50%,#1e7a00), color-stop(100%,#1e7a00)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(left,  #ff3019 0%,#d40000 20%,#f2f600 20%,#f2f600 50%,#1e7a00 50%,#1e7a00 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(left,  #ff3019 0%,#d40000 20%,#f2f600 20%,#f2f600 50%,#1e7a00 50%,#1e7a00 100%); /* Opera 11.10+ */
background: -ms-linear-gradient(left,  #ff3019 0%,#d40000 20%,#f2f600 20%,#f2f600 50%,#1e7a00 50%,#1e7a00 100%); /* IE10+ */
background: linear-gradient(to right,  #ff3019 0%,#d40000 20%,#f2f600 20%,#f2f600 50%,#1e7a00 50%,#1e7a00 100%); /* W3C */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ff3019', endColorstr='#1e7a00',GradientType=1 ); /* IE6-9 */

答案 2 :(得分:1)

您可以在父级中创建三个后代div。绝对定位它们,使父透明,然后给三个div一个0的z索引,使它们位于文本下面,而不是在顶部。

答案 3 :(得分:1)

这种渐进增强方法适用于支持CSS 2.1伪元素及其定位的所有浏览器。无需CSS3支持

#div{
   position:relative;
   z-index:1;
   min-width:200px;
   min-height:200px;
   padding:120px 200px 50px;
   background:#d3ff99 url(vines-back.png) -10% 0 repeat-x;
}
#div:before,
#div:after {
   position:absolute;
   z-index:-1;
   top:0;
   left:0;
   right:0;
   bottom:0;
   padding-top:100px;
}

DEMO