怎样让background-color在background-img的上边显示呢?

想给这个div的背景图上加一个遮罩层,但是设置之后background-color总是在背景图之下怎样解决呢?
图片描述

阅读 10.3k
7 个回答

如果兼容性要求不高,有另一个可选的思路,是使用渐变和多重背景图。因为渐变色gradient也属于background-image,所以题主想要纯色的遮罩,就可以这样写:

background-image: 
linear-gradient(rgba(0, 0, 0, .7), rgba(0, 0, 0, .7)),
url(../images/home-bg.jpg);

在多重背景的时候,写在前边的位于上方。

gradient的浏览器要求:http://caniuse.com/#search=gradients
multibackgrounds的浏览器要求:http://caniuse.com/#feat=multibackgrounds

这个问题有几种解决方案:
一、加一层遮罩元素,如div,定位到上层;
二、多用::before伪元素,操作同一
三、选用其它样式属性,如box-shadow

在背景div里再添一下div,width、height都是100%,background-color是rgba(0,0,0,0.7)。

不知道你要面对什么版本的浏览器,现代浏览器支持CSS 3里面的多背景,可以设置多个不同的背景,分别指定不同的background-position

border就行

加一个div或者用伪类:before :after都可以,但是如果后面还要操作的dom的话,不建议用伪类

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题