JS实现背景透明度可变,文字不透明的效果

最近项目里需要实现这么个功能,类似网游中的聊天框,背景都是透明的,但是文字是不透明。所以如果简单的使用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>

时间: 2024-10-12 03:02:57

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

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

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

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

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

JS配合css实现slide文字框缩放伸展效果

<!DOCTYPE html> <html> <head> <meta http-equiv="content" content="text/html charset=gb2312"> <title>JS配合css实现slide文字框缩放伸展效果</title> <style type="text/css"> *{margin:0; padding:0;} ul{

div css背景颜色半透明 文字不透明兼容ie、火狐等浏览器

针对透明背景,包括背景图片和背景色(兼容IE,FF,OP等浏览器) 一.背景完全透明 .bg{background:transparent } 二.背景半透明 这里要分两个div,一个单独设置背景透明度,另外一个放内容 margin-top:-33px;使用这个方法让文字叠加在透明背景图上. css: .bg{ width: 1000px; height:33px; background-color:#fffff; background-image:url(img.jpg);filter:alp

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

以背景黑色,透明度0.5举例为大家详细介绍下关于背景透明,文字不透明的最佳方法同时兼容IE,具体实现如下,感兴趣的朋友可以参考下哈希望对大家有所帮助 以背景黑色,透明度0.5举例 非IE:background:rgba(0,0,0,0.5); IE: filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#7f000000,endColorstr=#7f000000); PS:#7f000000 其中7f是透明度0.5转换

css实现背景透明文字不透明

设置元素的透明度: -moz-opacity:0.8; /*在Firefox中设置元素透明度 filter: alpha(opacity=80); /*ie使用滤镜设置透明 但是当我们对一个标签设置背景的透明度时,往往我们并不希望该标签上的文字图片也变成半透明了. 例如: <div><p>不透明</p></div> div{-moz-opacity:0.3;filter:alpha(opacity=30);background:#000;width:500p

解决css设置背景透明,文字不透明

设置元素的透明度: -moz-opacity:0.8; /*在Firefox中设置元素透明度 filter: alpha(opacity=80); /*ie使用滤镜设置透明 但是当我们对一个标签设置背景的透明度时,往往我们并不希望该标签上的文字图片也变成半透明了. 例如: <div><p>不透明</p></div> div{-moz-opacity:0.3;filter:alpha(opacity=30);background:#000;width:500p

css如何实现背景透明,文字不透明?

之前做了个半透明弹层,但设置背景半透明时,子元素包含的字体及其它元素也都变成了半透明.对opacity这个属性认识的不透彻,在这里做一些总结,方便以后使用. 背景透明,文字不透明的解决方法: 为元素添加一个绝对定位的子元素,设置大小和该元素一样,把半透明加在绝对定位元素上作为遮罩,z-index设置到最底部,达到背景半透明效果. 使用CSS3新属性rgba. 实现透明的方法: css3的opacity,取值从 0 到 1,如opacity : 0.5,IE9及以上版本和标准浏览器都支持.IE8

Android TextView文字透明度和背景透明度设置

textview1.setTextColor(Color.argb(255, 0, 255, 0)); //文字透明度 控件设为半透明: 控件名.getBackground().setAlpha(int); int 在0-255之间 package net.android.alpha; import android.widget.TextView; import android.os.Bundle; import android.view.ViewGroup; import android.ap