在背景图像上使用css渐变
在背景图像上使用css渐变
我一直尝试在背景图片上使用线性渐变,以实现背景底部从黑色到透明的渐变效果,但似乎无法显示出来。
我阅读了其他案例和示例,但它们都对我无效。我只能看到渐变或图片,而不能同时显示两者。
这是我的CSS代码:
body { background: url('http://www.skrenta.com/images/stackoverflow.jpg') no-repeat, -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.1)), to(rgba(0, 0, 0, 1))); }
这是链接。
只需点击第一个标志,忽略那个效果,我在之后的整个站点中尝试的效果。
问题出现的原因是背景图片和渐变色的叠加导致渐变色无法显示。解决方法是将渐变色的代码放在背景图片的后面。
代码如下:
#multiple-background{ box-sizing: border-box; width: 123px; height: 30px; font-size: 12pt; border-radius: 7px; background: url("https://cdn0.iconfinder.com/data/icons/woocons1/Checkbox%20Full.png") no-repeat 5px center, linear-gradient(to bottom, #4ac425, #4ac425); background-size: 18px 18px, 100% 100%; color: white; border: 1px solid #e4f6df; box-shadow: .25px .25px .5px .5px black; padding: 3px 10px 0px 5px; text-align: right; }
<div id="multiple-background"> Completed </div>
这样修改之后,渐变色就可以正常显示在背景图片的上方了。
问题出现的原因是需要在背景图像的URL后面添加线性渐变的代码。解决方法是将背景图像的URL放在线性渐变代码的末尾。以下是解决方法的代码示例:
.css { background: linear-gradient(to bottom, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0) 59%, rgba(0, 0, 0, 0.65) 100%), url('https://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png?v=c78bd457575a') no-repeat; height: 200px; }
在HTML中,可以使用以下代码将样式应用到一个元素上:
根据其他人的回答,这种方法可以成功地将渐变效果覆盖在背景图像上。但是,有些人可能遇到了只显示渐变效果或只显示背景图像的问题。希望这篇文章能够帮助到大家解决这个问题。
问题的原因是该代码中使用了-webkit-前缀的CSS属性,只能在Webkit浏览器中起作用,因此在其他浏览器上无法显示渐变效果。
解决方法是使用适用于不同浏览器的渐变属性。可以使用以下代码替换原来的代码:
body { margin: 0; padding: 0; background: url('img/background.jpg') repeat; background: -moz-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%); background: -ms-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%); background: -o-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%); background: -webkit-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%); }
这样修改后,渐变效果将在不同浏览器中都能正常显示。
另外,如果需要动态设置背景图像,可以在HTML的style元素中使用以下代码:
<style> body { margin: 0; padding: 0; background: -moz-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%), url('/img/fondo-home.jpg') no-repeat; background: -ms-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%), url('/img/fondo-home.jpg') no-repeat; background: -o-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%), url('/img/fondo-home.jpg') no-repeat; background: -webkit-linear-gradient(top center, ellipse cover, rgba(255,255,255,0.2) 0%,rgba(0,0,0,0.5) 100%), url('/img/fondo-home.jpg') no-repeat; } </style>
这样可以动态设置背景图像,并且在不同浏览器中都显示渐变效果。如果需要兼容旧版本的IE浏览器,可以考虑使用CSS3Pie来实现渐变效果。可以访问css3pie.com获取更多信息。