JS实现背景透明度可变文字不透明的效果
来源:    发布时间: 2018-12-20 14:49   67 次浏览   大小:  16px  14px  12px
JS实现背景透明度可变文字不透明的效果

  最近项目里需要实现这么个功能,类似网游中的聊天框,背景都是透明的,但是文字是不透明。

  所以如果简单的使用opacity(非IE)和alpha滤镜(IE)是无法实现这个效果的,会造成全部透明。

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

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

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

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

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

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

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

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