最近项目里需要实现这么个功能,类似网游中的聊天框,背景都是透明的,但是文字是不透明。所以如果简单的使用opacity(非IE)和alpha滤镜(IE)是无法实现这个效果的,会造成全部透明。

解决办法如下:

1.实现完全透明:

设置background为transparent即可,两个浏览器通用

2.实现透明度可调节:

要求改透明度,这里IE和非IE需要分开处理

非IE浏览器可通过支持CSS3的方式处理(不支持CSS3的这里忽略了),css的写法是

padding: 0px; color: rgb(51, 51, 51); font-family: Verdana, Arial, Helvetica, sans-serif; line-height: 24px;">前面3个参数是RGB,最后个是透明度

IE浏览器需要使用gradient滤镜,css写法是

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)

摘录CSS手册说明用法:

语法:

filter : progid:DXImageTransform.Microsoft.Gradient ( enabled= bEnabled , startColorStr= iWidth , endColorStr= iWidth )

属性:

enabled  :  可选项。布尔值(Boolean)。设置或检索滤镜是否激活。true | false true  :  默认值 。滤镜激活。

false  :  滤镜被禁止。

startColorStr  :  可选项。字符串(String)。设置或检索色彩渐变的开始颜色和透明度。

其格式为 #AARRGGBB 。 AA 、 RR 、 GG 、 BB 为十六进制正整数。取值范围为 00 – FF 。 RR 指定红色值, GG 指定绿色值, BB 指定蓝色值,参阅 #RRGGBB 颜色单位。 AA 指定透明度。 00 是完全透明。 FF 是完全不透明。超出取值范围的值将被恢复为默认值。

取值范围为 #FF000000 – #FFFFFFFF 。默认值为 #FF0000FF 。不透明蓝色。

EndColorStr  :  可选项。字符串(String)。设置或检索色彩渐变的结束颜色和透明度。参阅 startColorStr 属性。默认值为 #FF000000 。不透明黑色。

特性:

Enabled  :  可读写。布尔值(Boolean)。参阅 enabled 属性。

GradientType  :  可读写。整数值(Integer)。设置或检索色彩渐变的方向。1 | 0 1  :  默认值 。水平渐变。

0  :  垂直渐变。

StartColorStr  :  可读写。字符串(String)。参阅 startColorStr 属性。

StartColor  :  可读写。整数值(Integer)。设置或检索色彩渐变的开始颜色。 取值范围为 0 – 4294967295 。 0 为透明。 4294967295 为不透明白色。

EndColorStr  :  可读写。字符串(String)。设置或检索色彩渐变的结束颜色和透明度。参阅 startColorStr 属性。默认值为 #FF000000 。不透明黑色。

EndColor  :  可读写。整数值(Integer)。设置或检索色彩渐变的结束颜色。 取值范围为 0 – 4294967295 。 0 为透明。 4294967295 为不透明白色。当在脚本中使用此特性时,也可以用十六进制格式: 0xAARRGGBB 。

说明:

在对象的背景和内容之间显示定制的色彩层。

当此效果通过转变显示时,在渐变册色彩层之上的文本程序性的初始化为透明的,当色彩渐变实现后,文本颜色会以其定义的值更新。

3. 补充完美支持IE6和IE7

这么写在IE7和IE6中会有点小问题,原因是使用transparent的背景时,鼠标居然能点到透明层后面的内容。。。还会造成部分事件的实效。解决办法是在外面套个div,然后给他加个完全透明的背景图(PNG),写法参考:

background:url('http://aaa.com/image/transparent.png')!important;background:none;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://aaa.com/image/transparent.png',sizingMethod='scale'

这样在里面被嵌套的div点击就不会点到最外面的内容了。当然非IE就不需要加这个了。

另外,对于不支持CSS3的浏览器,还有个解决办法就是把背景层和显示文字的层分开处理,放在同一级,只是通过位置上的调整做到看似有层级关系,这样使用透明效果就直接做也不会对文字有影响了。

补充:

IE6下,上述办法仍然无效,解决办法是套层iframe,在html代码里可以这么写:

<div><BR><!–[if lte IE 6.5]><iframe id=”ie6_filter” style=”position:absolute;left:0px;top:0px;z-index:-1;filter:mask();display:block;width:100%;height:100%;”></iframe><![endif]–><BR></div>

JS实现背景透明度可变,文字不透明的效果的更多相关文章

  1. CSS实现背景透明而背景上的文字不透明完美解决

    在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...

  2. CSS实现背景透明而背景上的文字不透明

    在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...

  3. css 背景透明色, 文字不透明。

    [原]CSS实现背景透明,文字不透明,兼容所有浏览器 background-color: rgba(0,0,0,0.5); filter:Alpha(opacity=50);

  4. css实现遮罩层(解决透明背景上的文字不透明)

    .PopUp_layer{   position:fixed;   top: 0;   left: 0;   right:0;   bottom:0;   width:100%;   height:1 ...

  5. css实现背景半透明文字不透明的效果

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. CSS实现DIV层背景透明而文字不透明

    在我们设计制作一些网页的时候可能会用到半透明的效果,首先我们可能会想到用PNG图片处理,当然这是一个不错的办法,唯一的兼容性问题就是ie6 下的BUG,但这也不困难,加上一段js处理就行了.但假如我们 ...

  7. 背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)

    以背景黑色,透明度0.5举例为大家详细介绍下关于背景透明,文字不透明的最佳方法同时兼容IE,具体实现如下,感兴趣的朋友可以参考下哈希望对大家有所帮助 以背景黑色,透明度0.5举例 非IE:backgr ...

  8. 【原】CSS实现背景透明,文字不透明,兼容所有浏览器

    11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...

  9. CSS实现背景透明,文字不透明,兼容所有浏览器

    11.11是公司成立的日子,16岁啦,我呢3岁半,感谢公司给了这样一个平台,让我得以学习和成长,这里祝愿公司发展越来越好~ 进入主题,每年11月11号是光棍节,产生于校园,本来只是一流传于年轻人的娱乐 ...

随机推荐

  1. [How to] Phoenix 与 CDH5.4.2 HBase的整合

    1.简介 Phoenix将SQL带回到了NOSQL的世界,其在HBase之上做了一个layer,客户端通过SQL调用Phoenix,Phoenix在转化为HBase客户算API进行访问HBase,其很 ...

  2. js中的盒子模型

    说到盒子模型,你第一时间会想到css盒子模型,css中的盒子模型包括(内容区+内边距+边框).那在js中怎么去获取这些属性值呢?下面一起来学习js中的盒子模型. css样式 body { margin ...

  3. 拉格朗日(Lagrange)插值算法

    拉格朗日插值(Lagrange interpolation)是一种多项式插值方法,指插值条件中不出现被插函数导数值,过n+1个样点,满足如下图的插值条件的多项式.也叫做拉格朗日公式.  这里以拉格朗日 ...

  4. hdu 5078(2014鞍山现场赛 I题)

    数据 表示每次到达某个位置的坐标和时间 计算出每对相邻点之间转移的速度(两点间距离距离/相隔时间) 输出最大值 Sample Input252 1 9//t x y3 7 25 9 06 6 37 6 ...

  5. mycat性能调优

    http://blog.csdn.net/wangshuang1631/article/details/69056070

  6. SQLite数据库、ListView控件的使用

    android下数据库的创建(重点) 在Android平台上,集成了一个轻量级嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本 ...

  7. 7-10 守卫棋盘 uva11214

    输入要给n*m的棋盘  均小于10   某些格子有标记  用最少的皇后  辐射到所有的标记 限时 6666ms 用IDA*    时间6000  尴尬. #include<bits/stdc++ ...

  8. thinkphp数据查询方法总结select ,find,getField,query

    thinkphp已经封装好了常用的查询方法,且都比较实用,对于不常用的查询框架也保留了原始查询方法query. 1 2 $Model = new Model() // 实例化一个model对象 没有对 ...

  9. shell script执行的几种方式

    编写一个shell脚本test.sh,内容如下 a='测试执行方式' echo $a 方式1 使用路径的方式执行 chmod a+x test.sh ./test.sh 执行结果如下 当脚本执行之后, ...

  10. 【java】Hibernate saveOrUpdate失效以及补救方案

    有个需求是如果unique key不存在则插入,存在则更新. 简单的方式先select一下再insert 或者update,但是嫌太麻烦而且慢,所以采用Hibernate中session.saveOr ...