我有div
<div class="test">
Some text
</div>
我希望通过百分比(水平着色)为同一div
提供不同的背景颜色
-----------------------------
| 20% | 30% | 50% |
| Red | Yellow | Green |
-----------------------------
这可以用CSS吗?
答案 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;
}
您可以在here
上创建此类渐变如果您正在寻找静态渐变宽度,您还可以将px
与%
一起使用
Demo (如果您正在寻找跨浏览器解决方案,请添加browser-prefixes
,我没有在此演示中添加所有规则)
Demo 2 (垂直拆分,只需将to right
更改为to bottom
)
答案 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;
}