首页 > 其他分享 >CSS实现兼容性的渐变背景(gradient)效果

CSS实现兼容性的渐变背景(gradient)效果

时间:2023-06-04 16:35:25浏览次数:44  
标签:兼容性 浏览器 效果 gradient 背景 渐变 IE CSS



一、有点俗态的开场白
要是两年前,实现“兼容性的渐变效果”这个说法估计不会被提出来的,那个时候,说起渐变背景,想到的多半是IE的渐变滤镜,其他浏览器尚未支持,但是,在对CSS3支持日趋完善的今天,实现兼容性的渐变背景效果已经完全成为可能,本文就将展示如何实现兼容性的渐变背景效果。在众多的浏览器中,目前不支持Opera浏览器。
本文实例效果都是同样的效果,就是垂直渐变,起始颜色红色,结束颜色蓝色,结束的蓝色的透明度是0.5。
二、IE浏览器下的渐变背景
IE浏览器下渐变背景的使用需要使用IE的渐变滤镜。如下代码:

filter: progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=1);


相关说明:


上面的滤镜代码主要有三个参数,依次是:startcolorstr, endcolorstr, 以及gradientType。


其中gradientType=1代表横向渐变,gradientType=0代表纵向淅变。startcolorstr=”色彩” 代表渐变渐变起始的色彩,endcolorstr=”色彩” 代表渐变结尾的色彩。


上面代码实现的是红色至蓝色的渐变,但是不含透明度变化,这是由于IE目前尚未支持opacity属性以及RGBA颜色,要实现IE下的透明度变化,还是需要使用IE滤镜,IE的透明度滤镜功能比较强大,这种强大反而与Firefox或是Safari浏览器下的css-gradient背景渐变的用法类似。例如下面的使用:


filter:alpha(opacity=100 finishopacity=0 style=1 startx=0,starty=5,finishx=90,finishy=60)


其中各个参数的含义如下:


opacity表示透明度,默认的范围是从0 到 100,他们其实是百分比的形式。也就是说,0代表完全透明,100代表完全不透明。


finishopacity 是一个可选参数,如果想要设置渐变的透明效果,就可以使用他们来指定结束时的透明度。范围也是0 到 100。


style用来指定透明区域的形状特征:


0 代表统一形状


1 代表线形


2 代表放射状


3 代表矩形。


startx 渐变透明效果开始处的 X坐标。


starty 渐变透明效果开始处的 Y坐标。


finishx 渐变透明效果结束处的 X坐标。


finishy 渐变透明效果结束处的 Y坐标。


综合上述,实现IE下含透明度变化红蓝垂直渐变的代码如下:


.gradient{
    width:300px;
    height:150px;
    filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=1);
    -ms-filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=1);
}

<div class="gradient"></div>


结果如下图:


[img]http://image.zhangxinxu.com/image/blog/201004/gradient-ie.png[/img]


IE6下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活


三、Firefox浏览器下的渐变背景


对于Firefox浏览器下(Firefox 3.6+)渐变背景的实现需使用CSS3渐变属性,-moz-linear-gradient属性,在之前文章我详细介绍了Firefox3.6下渐变背景的实现,您有兴趣可以狠狠地点击这里:CSS渐变之CSS3 gradient在Firefox3.6下的使用 。这里我就不再具体讲述了,对于本文开头提到的要实现的效果的实现可以参见下面的代码:


.gradient{
    width:300px;
    height:150px;
    background:-moz-linear-gradient(top, red, rgba(0, 0, 255, 0.5));  
}

<div class="gradient"></div>


此段代码在Firefox3.6浏览器下的效果是:


[img]http://image.zhangxinxu.com/image/blog/201004/gradient-ff.png[/img]


Firefox3.6下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活


四、chrome/Safari浏览器下的渐变背景实现


对于webkit核心的浏览器,如Chrome/Safari浏览器下渐变背景的实现也是使用CSS3 渐变方法,css-gradient,具体为-webkit-gradient,使用语Firefox浏览器是有一些差异的。我在上上一篇文章对此进行了非常详细的介绍,您可以狠狠地点击这里:CSS gradient渐变之webkit核心浏览器下的使用 。具体使用就不详述了,参见下面的代码:


.gradient{
    width:300px;
    height:150px;
    background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ff0000), to(rgba(0, 0, 255, 0.5)));  
}

<div class="gradient"></div>


此段代码在Safari 4浏览器下的效果是:


[img]http://image.zhangxinxu.com/image/blog/201004/gradient-safari.png[/img]


Safari下含半透明的渐变背景效果 张鑫旭-鑫空间-鑫生活


补充于2011-04-07


Opera11也支持了CSS3渐变。其用法与Firefox一致,需要使用-o-的前缀。另外,Chrome的渐变用法也开始向FireFox浏览器下的用法靠拢。


五、综合 – 兼容性的渐变背景效果


相关代码如下:


.gradient{
    width:300px;
    height:150px;
    filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=0);
    -ms-filter:alpha(opacity=100 finishopacity=50 style=1 startx=0,starty=0,finishx=0,finishy=150) progid:DXImageTransform.Microsoft.gradient(startcolorstr=red,endcolorstr=blue,gradientType=0);/*IE8*/	
    background:red; /* 一些不支持背景渐变的浏览器 */  
    background:-moz-linear-gradient(top, red, rgba(0, 0, 255, 0.5));  
    background:-webkit-gradient(linear, 0 0, 0 bottom, from(#ff0000), to(rgba(0, 0, 255, 0.5)));  
    background:-o-linear-gradient(top, red, rgba(0, 0, 255, 0.5)); 
}

<div class="gradient"></div>


效果分别为上面三个分类的截图。


您可以狠狠地点击这里:兼容性的渐变背景效果demo


六、结语


CSS3的潜力非常的大,就渐变这一块可以创建很多精湛的UI效果,而以往这些效果都只能使用图片实现。CSS渐变背景的实现可以有效降低网页的图片数,也就是降低了HTTP请求,是非常受用的。但是IE浏览器一直蹲在茅厕边啃鸡腿——自以为美味,得使用资源消耗很高的滤镜才能实现渐变效果。所以,目前而言,渐变背景的的应用与否还是有待于利弊权衡的。


标签:兼容性,浏览器,效果,gradient,背景,渐变,IE,CSS
From: https://blog.51cto.com/u_3871599/6410949

相关文章

  • CSS3动画简介
    http://www.ruanyifeng.com/blog/2014/02/css_transition_and_animation.html[/url]参考:[color=red]CSS3transform旋转属性[/color][url]http://www.w3school.com.cn/cssref/pr_transform.asp[/url][color=red]CSS3transition渐变属性[/color][url]h......
  • CSS选择器笔记
    [color=red][b]一、基本选择器[/b][/color][table]序号选择器含义|1.|*|通用元素选择器,匹配任何元素|2.|E|标签选择器,匹配所有使用E标签的元素|3.|.info|class选择器,匹配所有class属性中包含info的元素|4.|#footer|id选择器,匹配所有id属性等于footer的元素[/table]......
  • css基础
    css2基础CSS简介全称为:层叠样式表(CascadingStyleSheets),用于给HTML结构设置样式,例如:文字大小、颜色、元素宽高等等。简单理解:CSS可以美化HTML,让HTML更漂亮。核心思想:HTML搭建结构,CSS添加样式,实现了:结构与样式的分离。基本使用介绍CSS的编写位置行内样......
  • css清除浮动
    1、为什么清除浮动  当子元素浮动时其父元素没有高度(比如列表页,父元素需要通过子元素的数量来确定高度),这时就会影响标准流父元素下面元素的布局,那么我们就需要清除浮动了。示例:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-......
  • html+css简单易懂的轮播图实现
    实现轮播图感觉好复杂啊,这个比较简单的实现了但是还是没有怎么理解代码,只能先发出来慢慢学习学习了话不多说,直接上代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge">......
  • CSSYZ Algorithm Round #2
    [ABC192F]Potion分析设选择的总和为\(sum\)。不难发现:\(x\%k=sum\%k\)。又因为:\(ans=(x-sum)/k\)。不难发现\(sum\)只与\(\%k\)有关,且当\(k\)一定时,\(sum\)越大,\(ans\)越小。因为\(k\)的值域很小,显然可以对于每一个\(k\),用01背包求解出\(\%k\)意义下的最大\(sum\)。计......
  • Vue进阶(幺零八):npm run build 错误 (node:7852) UnhandledPromiseRejectionWarning: Cs
    (文章目录)一、前言在项目打包过程中,突然报如下错误:Vuenpmrunbuild错误(node:7852)UnhandledPromiseRejectionWarning:CssSyntaxError:xxxx.但是在执行npmrundev过程中,并未错误或告警信息。二、解决方案打开webpack.prod.conf.js,注释掉以下配置代码newOptimiz......
  • 优秀的CSS布局大全
    这份列表收集一些比较优秀的CSS布局,这些布局都免费供个人和商业使用。当然,你使用之前还是得看版权说明,也许会发生许可协议变更。LayoutGala-这个网站收集了40多个专业的CSS布局,每个布局都通过了CSS和HTML验证,且不需要Hack,兼容各大主流浏览器。CSSLayouts –另一个专门收集CSS......
  • CSS---写三角形
    我们在做项目开发的时候,经常会遇到需要三角小按钮,如果不引入图片和字体,其实用样式也是可以写处理的。具体示例:.div{width:50px;height:50px;border-left:50pxsolidred;border-right:50pxsolidyellow;border-top:50pxsolidblue;border-bottom:50pxsolidgreen......
  • CSS 第8天
    CSS第8天复习定位 position​ relative top,left,right,bottom 子绝父相​ absolute 居中​ fixed​ 遮盖 1,2​ z-index 拼爹浏览器hack​ htmlhack ​ csshack​ 值hack ie6-_ 7! 8|9\0 678910\9​ 选择器hack 6*htlm 7selector......