css 实现层半透明,且块内文字不透明(兼容ie6等各种浏览器)

   2023-02-08 学习力0
核心提示:兼容各浏览器且效果一致,有两种方法:一、使用 opacity + Alpha Filter其实见到这个的时候,我们的第一想法当然是 background + opacity,在不支持 opacity 的 IE 再使用 filter 的 alpha 滤镜来实现。但是如果仅仅只是如此,这个最外层,最内层和文字,

兼容各浏览器且效果一致,有两种方法:

一、使用 opacity + Alpha Filter

其实见到这个的时候,我们的第一想法当然是 background + opacity,在不支持 opacity 的 IE 再使用 filter 的 alpha 滤镜来实现。但是如果仅仅只是如此,这个最外层,最内层和文字,都被设置了 opacity(alpha 也是使用 opacity )导致文字模糊 。当然,我们可以给各层设置 opacity 变回来,但这是很麻烦的事,所以我这里将文字放在外层的p标签内,再给一个相对定位,(也可给绝对定位)让其显示在半透明的div里面。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
*{margin:0 auto;}
body{background:url(006.jpg)}
.div{
filter:Alpha(opacity=40); background:#000;/*实现IE背景透明*/
-moz-opacity:0.4;/*支持3.5以下低的火狐背景透明*/
opacity:0.4;/*支持3.5以上火狐遨游,opera等背景透明*/
width:500px;
height:200px;
border:1px solid #FF0;
font-size:18px;
text-align:center;
font-weight:bold;
margin-top:120px;
}
p{position:relative;width:500px;height:200px;top:-200px;left:0;color:#FFF;}
</style>
</head>
<body>
<div class="div"></div>
<p>第一种:opacity + Alpha Filter:我是里面不透明的文字</p>
</body>
</html>

 

兼容标准浏览器及ie的6.0-9.0版本,预览的效果为:

css 实现层半透明,且块内文字不透明(兼容ie6等各种浏览器)

 

二、最佳实践:rgba色彩 +Alpha Filter

其实我们可以选用 background-color: rgba() 来实现,同样可以实现透明效果,并且只应用于当前元素,不继承。而 IE 的 filter 却会使内部文字变透明(ie8-ie6),虽然ie的filter有很多滤镜效果,例如

(/* 

  1.  * filter 渐变滤镜详细用法,[参见这里] 
  2.  * StartColorStr 和 EndColorStr: 
  3.  *    #4c000000 是 30% 透明度的 #000000 的意思 
  4.  *    组成: # + 透明度 + 颜色 
  5.  *    算法: Math.floor(0.6 * 255).toString(16); 
  6.  */  
  7. .div{  
  8.     background:rgba(0, 0, 0, 0.3);  
  9.     filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#4c000000', EndColorStr='#4c000000');  

),来避免内部文字透明,但是这种方法不常见,也需要转化,这里我们不用不常见的filter效果,还是用相对定位,避免文字的透明。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<style type="text/css">
*{margin:0 auto;}
body{background:url(006.jpg)}
.div{
background:rgba(0, 0, 0, 0.4) none repeat scroll 0 0!important;/*实现FF背景透明*/
filter:Alpha(opacity=40); background:#000;/*实现IE背景透明*/
width:500px;
height:200px;
border:1px solid #FF0;
font-size:18px;
text-align:center;
font-weight:bold;
margin-top:120px;
}
:root .div{filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#00000000', EndColorStr='#00000000'); }  
p{position:relative;width:500px;height:200px;top:-200px;left:0;color:#FFF;}
</style>
</head>
<body>
<div class="div"></div>
<p>第二种:最佳实践:rgba色彩 +Alpha Filter,我是里面不透明的文字</p> </body> </html>

预览的效果为:

css 实现层半透明,且块内文字不透明(兼容ie6等各种浏览器)

如果没有

:root .div{ filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr='#00000000', EndColorStr='#00000000');  }  

IE9 的透明度竟然有 80%!! 这显然不是我们想法的。原因是:IE9 也支持 filter,使得 filter 的结果和 background-color 叠加,所以是 80%。

这里我们可以利用IE HACK,单独把 IE9 的 filter 变成透明度为 0 即可。高级浏览器大部分支持 :root 伪类,但不支持 filter 属性,而 IE 只有 IE9 支持,所以我们可以这样写。至于ie10以及更高的版本还有待继续测试。

 

ps:借鉴于高手的博客和自己的测试,有不对的地方,欢迎大家指正批评!

 

 

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • css实现弹出框 css弹出菜单
    弹出框也是前端里面经常使用的一个应用场景了,最开始想到的是用js实现这个效果,看到codepen上面有用css实现的。其实就是用到了css里面的一个:target选择器+visibility属性。URL 带有后面跟有锚名称 #,指向文档内某个具体的元素。这个被链接的元素就是目标
    03-08
  • jfinal框架页面找不到相关css,js文件404
    在JFinalConfig中添加配置: @Overridepublic void configHandler(Handlers handlers) {handlers.add(new ContextPathHandler());}页面中添加:base href="${CONTEXT_PATH}/"/之前页面找不到资源,把tomcat工程路径去掉了(path=""),这样暂时解决了问题推荐
    03-08
  • 纯CSS3实现的一些酷炫效果 css实现炫酷背景
    纯CSS3实现的一些酷炫效果 css实现炫酷背景
      之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的。一、笑脸猫动画实现效果如下:这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整。1.先看下页面结构:bodydiv class="container"!-- 脸 --div
    03-08
  • 移动端CSS底部固定和fixed定位在ios上的bug
    fixed定位在ios上的bugcss三栏布局假设我们页面的 HTML 结构是这样: div class="wrapper"div class="content"!-- 页面主体内容区域 --/divdiv class="footer"!-- 需要做到 Sticky Footer 效果的页脚 --/div/div方法1.:absolute通过绝对定位处理应该是常见的
    03-08
  • css实现图片翻转 css使图片旋转
    !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"html xmlns="http://www.w3.org/1999/xhtml"headmeta http-equiv="Content-Type" content="text/h
    03-08
  • css3 渐变gradient
    css3 渐变gradient
           CSS3引入了背景渐变、background-origin、background-clip、background-size、遮罩等多个属性。这里将记录我从网上和书上学习的笔记和心得体会。   首先是渐变,我这里讲述的渐变不仅仅是背景色的渐变还将包括透明度渐变。以前做这种背景色渐
    03-08
  • CSS3中的px,em,rem,vh,vw辨析 css3 vw
    1、px:像素,精确显示2、em:继承父类字体的大小,相当于“倍”,如:浏览器默认字体大小为16px=1em,始终按照div继承来的字体大小显示,进场用于移动端          em换算工具:http://www.runoob.com/tags/ref-pxtoemconversion.html3、rem:与em类似,
    03-08
  • gulp自动化构建工具--自动编译less为css--学习
     1.安装      命令:npm install gulp-less 或者 cnpm install gulp-less2.编写文件 //获取gulpvar gulp = require('gulp')//获取gulp-less模块var less = require("gulp-less")//编译less//在命令行输入gulp less启动此任务gulp.task('less',function(){
    03-08
  • 关于动画Animate.css的使用方法
        首先贴个官网:https://daneden.github.io/animate.css/  1、引入animate css文件 1 head2 link rel="stylesheet" href="animate.min.css"3 /head   2、给指定的元素加上指定的动画样式名div class="animated bounceOutLeft"/div    这里包
    03-08
  • selenium Firefox禁用js,css.falsh,缓存,设置
    1 profile = FirefoxProfile() 2 #请求头 3 #profile.set_preference("general.useragent.override", util.http_agent_insert(xinhuaUtil.agent_path)) 4 # 激活手动代理配置(对应着在 profile(配置文件)中设置首选项) 5 profile.set_preference("network
    03-08
点击排行