CSS3渐变和背景图像

时间:2011-02-25 12:32:48

标签: jquery html css css3 gradient

我有一个功能,当复选框的状态发生变化时,它会切换其父级的类以提供不同的背景渐变。点击Lorem以查看它的实际效果

You can see it here

问题是它不能在我的例子中的大盒子上工作,因为有一个为我的元素指定的背景图像,我知道渐变不能存在于与背景图像相同的空间内。

是否有解决方法为元素添加背景渐变?我无法将其添加到图像中,因为这将动态填充,并且并非所有图像都具有相同的尺寸。

我根本不介意更改任何HTML / CSS。如果可以使用jQuery完成,那也很棒:)

2 个答案:

答案 0 :(得分:6)

CSS 3中的渐变实际上只是生成的图像。因此,如果您的浏览器支持多个背景(使用Modenizr进行测试),那么您可以添加2个背景图像。像:

.multiplebgs.cssgradients .button {
    background-image: url("img.png"), -webkit-gradient(linear, left top, left bottom, from(rgba(247,148,34,0)), to(#dc7703));
    background-image: url("img.png"), -webkit-linear-gradient(-90deg, rgba(247,148,34,0), #dc7703);
    background-image: url("img.png"), -moz-linear-gradient(-90deg, rgba(247,148,34,0), #dc7703);
    background-image: url("img.png"), linear-gradient(-90deg, rgba(247,148,34,0), #dc7703);
}

答案 1 :(得分:1)

您可以使用背景图像在元素周围添加另一个div,并将渐变应用于该背景图像。只要图像是透明的,渐变就会显示出来。

<div id="div-with-gradient">
    <div id="div-with-image">
        <!-- content -->
    </div>
</div>