HTML5技术

CSS实现背景透明而背景上的文字不透明 - jerrylsxu

字号+ 作者:H5之家 来源:博客园 2016-02-02 08:45 我要评论( )

在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6下的BUG,但这也不困难,加上一段js处理就行了。但假如我们需要一个半透明遮罩的弹出层,如登陆框、注册框、提示等

在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了。但假如我们需要一个半透明遮罩的弹出层,如登陆框、注册框、提示等,这时可能需要整个页面都要被半透 明的遮罩层覆盖,那么如用背景平铺的话,此时此刻也许就不是一个好办法了,图片大了会影响加载速度,图片小了同样会增加页面的渲染计算量,那么这时也许就 需要用CSS滤镜了。

 

假如有这样一个例子:“有一个DIV块,此DIV是黑色半透明的,但此DIV里面的内容要保持原状,不能透明”,那么我们该怎么做呢?

 

假如HTML部分我们这样写的

Html代码  收藏代码
  1. <div class="touMingDiv">  
  2.     <div>  
  3.         <h1>这是透明的层这是透明的层这是透明的层这是透明的层  
  4.             这是透明的层这是透明的层这是透明的层这是透明的层这是透明的层  
  5.         </h1>  
  6.     </div>  
  7.     <p>  
  8.         这是透明的层,但上边的文字和图片均不透明,兼容ie7,ie8,ie9,ie10,FF,Chrome  
  9.     </p>  
  10.     <img src="bg.jpg"/>  
  11. </div>  

 

对于CSS我们也许就这样写了

Html代码  收藏代码
  1. .touMingDiv{  
  2.     filter:Alpha(opacity=60);  
  3.     opacity:0.6;  
  4. }  

 

但经过测试我们发现,不仅div容器半透明了,连div里面的文字和图片都把透明了。由于这些滤镜的属性已经继承给了子元素,所以会出现这种效果。

 

我们可以用下面这种发法来实现

Html代码  收藏代码
  1. .touMingDiv{  
  2.     width:800px;  
  3.     min-height:300px;  
  4.     color:#fff;  
  5.     background:rgba(0,0,0,0.6);  
  6.     background:#000 9;/*CSS Hack,只能对ie9以下浏览器ie6,ie7,ie8有效,否侧ie10,FF,Cherome会失去透明效果*/  
  7.     filter:Alpha(opacity=60);/*只对ie7,ie8有效*/  
  8. }  
  9. .touMingDiv p,  
  10. .touMingDiv div,  
  11. .touMingDiv img{  
  12.     position:relative;  
  13.     /*或者是absolute,都可以使文字不透明,这样做还是为了  
  14.     兼容ie9,ie8,ie7下背景透明而而背景上的文字不透明的效果*/  
  15. }  

 

注意,上面background:rgba(0,0,0,0.6);只对ie9,ie10,FF,Chrome...等有效,不包括ie6,ie7,ie8,所以有了这几句代码:

Html代码  收藏代码
  1. background:#000 9;/*CSS Hack,只能对ie9以下浏览器ie6,ie7,ie8有效,否侧ie10,FF,Cherome会失去透明效果*/  
  2. filter:Alpha(opacity=60);/*只对ie7,ie8有效*/  

 

另外还要对子级元素设置relative或者absolute属性,这样才能出现背景透明而背景上面的文字和图片正常显示的效果。

 

但这里的代码毅然不适合ie6,建议对于ie6就用png图片吧,然后用js做一下处理。

 

来源: http://beyondweb.cn/article_detail.php?id=43

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Hero Patterns - 聚合各种 SVG 背景纹理素材的网站 - 梦想天空(山边小溪)

    Hero Patterns - 聚合各种 SVG 背景纹理素材的网站 - 梦想天空(山边

    2017-05-02 12:00

  • HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    2017-05-02 11:02

  • 调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加信息标注 - QISHUANG

    调取百度地图接口,实现取自己的实时位置,然后可以在百度地图上添加

    2017-04-18 10:02

  • 计算机网络——DNS协议的学习与实现 - 学数学的程序猿

    计算机网络——DNS协议的学习与实现 - 学数学的程序猿

    2017-04-16 10:00

网友点评