CSS兼容背景é€?明处ç?† - 凡事预则立,ä¸?预则废

说到CSS背景å?Šé€?明,å?„ä½?CSSer肯定都ä¸?陌生,写过页é?¢的大部分都干过这个事情,尤其是CSS2时代走过æ?¥的。

è€?题新解,现在已ç»?步入CSS3时代了,对于处ç?†CSS背景å?Šé€?明应该已ç»?ä¸?是很难的事了,ä¸?过请ä¸?è¦?忘了咱在天æœ?,IE6的份é¢?ä¾?旧ä¸?少, 。

ä¸?扯,入正题,先看完整DEMO:


opacity + filter:alpha

大部分情况下我们å?š背景é€?明都是这么写的,代ç ?简å?•,写起æ?¥也方便;ä¸?过大部分情况是需è¦?多增加一个标签,因为这么写会连文字一起é€?明


.opacity .test{ background:#fff; opacity:.4; filter:Alpha(opacity=40);}


Rgba + filter:progid:DXImageTransform.Microsoft.Gradient

首先说说background:rgab/hsla,这两个新的颜色函数都能定义alpha通é?“值,然å?Žå?¯以使得背景å?Šé€?明,甚至还å?¯以使用CSS3gradient的æ¸?å?˜函数,生æˆ?更为å¤?æ?‚的背景,具体请自行谷歌;

在CSS2å?Žé?¢æŸ?个时候,有童鞋å?‘现了filter:progid:DXImageTransform.Microsoft.GradientIE下能通过æ¸?å?˜滤镜去模拟背景é€?明,而ä¸?用文字é€?明

当然,有利必然有弊,这么写,代ç ?略长,写起æ?¥麻烦:

IE滤镜采用AARRGGBB(16进制)进行排列,AAä½?值也为 00-FF,也就是说10进制需è¦?转æˆ?16进制

计算规则 10进制值*256/100然å?Žå†?转16进制,就是说如果设置0.4的é€?明度0.4*256/100 = 102.4转16进制为66


.rgba .test{ background:rgba(255,255,255,.4); background:none\9; filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=#66FFFFFF,endColorStr=#66FFFFFF);}


Rgba with last-child

上é?¢背景é€?明的实现已ç»?是本文的核心部分,但是如果你够细心,会å?‘现此效果在IE9下é€?明度明显ä¸?对,

IE9当background:rgba和filterå?Œ时使用时,会出现两个效果å? 加,

ä¸?过我们å?¯以用:last-child巧妙修å¤?;因IE6ä¸?支æŒ? :first/last-child伪类,IE7,8-仅支æŒ?:first-child伪类,IE9+全部支æŒ?


.rgba_with_lastchild .test{ background:none; filter:progid:DXImageTransform.Microsoft.Gradient(startColorStr=#66FFFFFF,endColorStr=#66FFFFFF);}
.rgba_with_lastchild .test:last-child{ background:rgba(255,255,255,.4); filter:none;}

当看到此处的时候,应该本文应该是能结尾了,因为上é?¢的效果在å?„个æµ?览器下已ç»?接近完美了,ä¸?过还有个ä¸?得ä¸?说的密ç ?


Filter with overflow

IE7- 当使用滤镜时,大部分情况会使得元素具有 overflow:hidden 特性,具体请è§?DEMO最å?Ž




全文完,欢迎æ‹?砖。

最å?Ž在放一次DEMO地å?€

共1评论

  1. ä¸?错 哦,正需è¦?这个。

    回å¤?

å?‘表评论

最新评论å?Š回å¤?

    loading

最近å?‘表

    loading

网站分类

    loading

文章归档

    loading

å?‹情链接

Top Comments Footer