我可以仅将不透明度设置为div的背景图像吗?让我说我有<div class="myDiv">Hi there</div>我想提出一个background-image并给它一个opacity的0.5-但我想,我写的文字将有充分的不透明度(1)。如果我像这样写CSS.myDiv { opacity:0.5 }一切都将是低透明度 - 我不希望这样。所以我的问题是 - 如何获得具有完全不透明度文本的低不透明度背景图像?
3 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
不,这不能做,因为opacity
影响整个元素,包括其内容,并没有办法改变这种行为。您可以使用以下两种方法解决此问题。
次要div
div
向容器添加另一个元素以保存背景。这是最友好的跨浏览器方法,甚至可以在IE6上运行。
HTML
<div class="myDiv"> <div class="bg"></div> Hi there</div>
CSS
.myDiv { position: relative; z-index: 1;}.myDiv .bg { position: absolute; z-index: -1; top: 0; bottom: 0; left: 0; right: 0; background: url(test.jpg) center center; opacity: .4; width: 100%; height: 100%;}
:before和::之前的伪元素
另一个技巧是使用CSS 2.1 :before
或CSS 3 ::before
伪元素。:before
IE版本8支持伪元素,而::before
根本不支持伪元素。这有望在第10版中得到纠正。
HTML
<div class="myDiv"> Hi there</div>
CSS
.myDiv { position: relative; z-index: 1;}.myDiv:before { content: ""; position: absolute; z-index: -1; top: 0; bottom: 0; left: 0; right: 0; background: url(test.jpg) center center; opacity: .4;}
补充说明
由于您的行为,z-index
您必须为容器设置z-index以及为z-index
背景图像设置负数。
测试用例
请参阅jsFiddle上的测试用例:
慕森卡
TA贡献1806条经验 获得超8个赞
所以这是另一种方式:
background-image: linear-gradient(rgba(255,255,255,0.5), rgba(255,255,255,0.5)), url("your_image.png");
紫衣仙女
TA贡献1839条经验 获得超15个赞
CSS
div { width: 200px; height: 200px; display: block; position: relative;}div::after { content: ""; background: url(image.jpg); opacity: 0.5; top: 0; left: 0; bottom: 0; right: 0; position: absolute; z-index: -1;}
HTML
<div> put your div content</div>
- 3 回答
- 0 关注
- 587 浏览
相关问题推荐
添加回答
举报
0/150
提交
取消