当前位置:  开发笔记 > 前端 > 正文

背景颜色的不透明度,但不是文本

如何解决《背景颜色的不透明度,但不是文本》经验,为你挑选了4个好方法。

如何使跨浏览器(包括Internet Explorer 6)的透明度在一段div时间后文本保持不透明?

我需要在不使用任何库(如jQuery等)的情况下完成它.(但是如果你知道一个库那样做我很想知道,所以我可以查看他们的代码).



1> Austin Adams..:

使用rgba!

.alpha60 {
    /* Fallback for web browsers that don't support RGBa */
    background-color: rgb(0, 0, 0);
    /* RGBa with 0.6 opacity */
    background-color: rgba(0, 0, 0, 0.6);
    /* For IE 5.5 - 7*/
    filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);
    /* For IE 8*/
    -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";
}

除此之外,您还必须background: transparent为IE Web浏览器声明,最好通过条件注释或类似方式提供!

通过http://robertnyman.com/2010/01/11/css-background-transparency-without-affecting-child-elements-through-rgba-and-filters/


我试过这个解决方案,它在IE8中不起作用,因为IE8正确应用了背景颜色.我刚拿出其他浏览器的后备版本(这是什么,旧版本的Firefox?).这里解释:http://stackoverflow.com/questions/4508191/ie8-gradient-filter-not-working-if-a-background-color-exists/6300452#6300452 ps @Donotello ie7模式在ie9绝对不是100 %准确.我使用的是需要IE7/8的CMS,IE9中的兼容模式会破坏其中的各种内容.

2> Can Berk Güd..:

我使用alpha透明的PNG:

div.semi-transparent {
  background: url('semi-transparent.png');
}

对于IE6,你需要用一个PNG修复(1,2),虽然.


纯CSS>背景图像
@MarcySutton IMO并非总是如此,绝对不是.如果你看一下标记为答案的答案,你就会明白为什么.我们应该浪费多少小时来实现跨浏览器兼容性.所以,当你绝对可以,(当然,并非总是)你可以使用背景图像.就像我说的,JMO.
PNG修复1太棒了!接受答案的方法不适用于我的IE6.

3> Davy Landman..:

我在我的博客Landman Code上创建了这个效果.

我做的是

#Header {
  position: relative;
}
#Header H1 {
  font-size: 3em;
  color: #00FF00;
  margin:0;
  padding:0;
}
#Header H2 {
  font-size: 1.5em;
  color: #FFFF00;
  margin:0;
  padding:0;
}
#Header .Background {
  background: #557700;
  filter: alpha(opacity=30);
  filter: progid: DXImageTransform.Microsoft.Alpha(opacity=30);
  -moz-opacity: 0.30;
  opacity: 0.3;
  zoom: 1;
}
#Header .Background * {
  visibility: hidden; // hide the faded text
}
#Header .Foreground {
  position: absolute; // position on top of the background div
  left: 0;
  top: 0;
}


4> brillout..:

放宽您对IE6和旧版浏览器的工作要求,您可以使用:: before和display:inline-block

div
{
  display: inline-block;
  position: relative;    
}
div::before
{
  content: "";
  display: block;
  position: absolute;
  z-index: -1;
  width: 100%;
  height: 100%;
  background:red;
  opacity: .2;
}

演示在http://jsfiddle.net/KVyFH/172/

它适用于任何现代浏览器

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有