用CSS3做线性渐变效果

为了显示一个渐变而专门制作一个图片的做法是不灵活的,而且很快会成为一种不好的做法。但是遗憾的是,截至写这篇文章,可能还必须这样做,但是希望不会持续太久。多亏Firefox 和Safari/Chrome,我们现在可以使用最少的努力实现强大的渐变。在本文中,我们将展示CSS渐变的简单实现以及该属性在Mozilla和webkit内核浏览器中的不同。

PS:本文原文本来提供了一个视频,但是由于众所周知的原因,我们无法观看这个在Youtube上的视频,想看的同学请自己想办法观看(最高720P)

Webkit

尽管Mozilla和Webkit通常对CSS3属性采取同样的语法,但是对于渐变,他们很不幸的不能达成一致。Webkit是第一个支持渐变的浏览器内核,它使用下面的结构:

/* 语法,参考自: http://webkit.org/blog/175/introducing-css-gradients/ */ -webkit-gradient(, [, ]?, [, ]? [, ]*) /* 实际用法... */ background: -webkit-gradient(linear, 0 0, 0 100%, from(red), to(blue));

不要担心这些语法会让你看花眼,我也是这样的!只要记得我们需要用一个逗号来隔开这个参数组。

  • 渐变的类型? (linear)
  • 渐变开始的X Y 轴坐标(0 0 – 或者left-top)
  • 渐变结束的X Y 轴坐标(0 100% 或者left-bottom)
  • 开始的颜色? (from(red))
  • 结束的颜色? (to(blue))

Mozilla

Firefox,从3.6版本才开始支持渐变,更喜欢和Webkit略微不同的语法。

/* 语法,参考自: http://hacks.mozilla.org/2009/11/css-gradients-firefox-36/ */ -moz-linear-gradient( [ ,]? , [, ]* )   /* 实际用法*/ background: -moz-linear-gradient(top, red, blue);

  • 请注意我们将渐变的类型——linear——放到了属性前缀中了
  • 渐变从哪里开始? (top – 我们也可以使用度数,比如-45deg)
  • 开始的颜色? (red)
  • 结束的颜色? (blue)

Color-Stops

如果你不需要从一个颜色到另一个颜色的100%渐变怎么办?这就是color stop起作用的时候了。一个普遍的设计技术是使用一个较短而细微的渐变,比如:

注意顶部的浅灰色到白色的细小的渐变

在过去,标准的做法就是制作一个图片,并将其设为一个元素的背景图片,然后让其水平平铺。然而使用CSS3,这是个小Case。

background: white; /* 为较旧的或者不支持的浏览器设置备用属性 */ background: -moz-linear-gradient(top, #dedede, white 8%); background: -webkit-gradient(linear, 0 0, 0 8%, from(#dedede), to(white)); border-top: 1px solid white;

这次,我们让渐变结束于8%,而不是默认的100%。请注意我们也在头部采用了一个边框,以形成对比。这很常用。
如果我们想要添加多一种(几种)颜色,我们可以这样做:

background: white; /* 备用属性 */ background: -moz-linear-gradient(top, #dedede, white 8%, red 20%); background: -webkit-gradient(linear, 0 0, 0 100%, from(#dedede), color-stop(8%, white), color-stop(20%, red);

  • 对于-moz 版本,我们定义,从元素的20%的高度的地方开始是红色。
  • 而对于-webkit,我们使用color-stop,采用两个参数:哪里开始停止,使用哪种颜色。

IE

IE并不支持CSS渐变,但是提供了渐变滤镜,可以实现最简单的渐变效果:

filter: progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#ff0000"); /* IE6,IE7 */ -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffff", endColorstr="#ff0000")"; /* IE8 */

PS:事实上,我们在《RGBa色彩的浏览器支持》提到的IE的解决方法,就是使用这个渐变滤镜。

关于CSS渐变的一些要点:

  • 尽可能的使用它。如果让IE用户看到一个固定的纯色,我鼓励你使用这种方法;
  • IE6/7/8, Opera, Safari 3, 和Firefox 3 不能渲染CSS3 渐变,Firefox 和Safari用户通常经常升级浏览器,而Chrome的自动升级机制会在后台自动升级,所以这并不是个大问题;
  • 总是为不支持这些浏览器私有属性的浏览器应用一个默认的,纯色背景;
  • 永远不要使用红色到蓝色的渐变,就像我用作例子的这种;
  • 页面无须在每个浏览器里面看起来完全一样!
  • Firefox可以使用角度来设定渐变的方向,而webkit只能使用x和y轴的坐标。
时间: 2025-01-31 06:26:03

用CSS3做线性渐变效果的相关文章

跳转-html5+css3做的项目google和firefox可以正操操作,IE要手动刷新

问题描述 html5+css3做的项目google和firefox可以正操操作,IE要手动刷新 如题所示,我用html5+css3做的页面google和firefox可以正常操作,但是IE要手动刷新才可以页面内跳转,但是IE8又可以正常操作,我这IE11却不行.真心郁闷了,比如IE环境下载订单页面点发票按钮,就跳不进发票的页面(发票页面在订单页面内).请问有什么好的办法解决吗?还有一个问题,firefox环境下,p标签里面写的文字右边无法对齐(包含中英文),加了text-align:justif

算法-单链表做线性表的存储

问题描述 单链表做线性表的存储 以带头结点的单链表做线性表的存储表示,编写算法删除表中的偶数序号结点,使(a1,a2,a3,a4,a5...)变成(a1,a3,a5...) 解决方案 #include<stdio.h> #include<malloc.h> typedef struct LNode { int data; struct LNode *next; }*LinkList; LinkList Creat_List(int n) { LinkList head,p,q; h

如何制作线性渐变效果?

渐变 效果: 步骤: 1. 打开一幅人物图和一幅游鱼图,如下图所示. 2. 切换至人物图像,打开图层面板,然后双击面板中的背景层,弹出一个对话框,直接单击"好"按钮,将背景层转换为普通层"图层0". 3. 使用魔术棒工具 将人物周围的空白处选中,然后按Shift键单击手臂内侧的空白处也选中. 4. 按Delete键对选区进行透明删除,然后按Ctrl+D组合键取消选区. 5. 按Q键或单击工具箱底部的"快速蒙版"按钮 ,进入快速蒙版模式. 6. 先

图解css3:核心技术与案例实战

 Web开发技术丛书 图解CSS3:核心技术与案例实战 大 漠 著 图书在版编目(CIP)数据 图解CSS3:核心技术与案例实战/大漠著. -北京:机械工业出版社,2014.7 (Web开发技术丛书) ISBN 978-7-111-46920-9 I. 图- II.大- III. 网页制作工具 IV. TP393.092 中国版本图书馆CIP数据核字(2014)第116144号 图解CSS3:核心技术与案例实战 大 漠 著 出版发行:机械工业出版社(北京市西城区百万庄大街22号 邮政编码:100

html5+css3网页制作实例:制作comingsoon页面

文章简介:这个页面用到了html5的标签元素和css3的线性渐变.圆角.阴影效果,以及当前流行的parallax视差特效和一些其他结合jquery的动画,在chrome,Safari,opera,firefox下都可以完美显示,如果你还使用IE浏览器,我想效果支持的并不是那么完美,不过尽管这样,我还是对IE6,7,8 这个页面用到了html5的标签元素和css3的线性渐变.圆角.阴影效果,以及当前流行的parallax视差特效和一些其他结合jquery的动画,在chrome,Safari,ope

使用CSS3配合IE滤镜实现渐变和投影的效果

 线性渐变在CSS3和IE滤镜中的实现 对于完美主义者来说,为了一个渐变而使用一张图片是一件痛苦的事情,就像有鼻屎不抠掉一样痛苦= =.所以对于普通的渐变而言,能用CSS解决的就不去动用图片. CSS3中为我们提供了linear-gradient方法,可以直接对背景设置渐变. CSS Code复制内容到剪贴板 <!DOCTYPE> <style> div { width:100px;height:100px;text-align:center; font:16px/100px '微

CSS3魔法堂:背景渐变(Gradient)

一.前言   很久之前就了解过CSS3的线性渐变(Linear-Gradient),这段时间决定进一步认知这一特性,以下笔记以便日后查阅.   二.CSS3的各种背景渐变   1. 线性渐变      示例--七彩虹           代码: <style type="text/css"> .rainbow-linear-gradient{ width: 460px; height: 160px; background-image: -webkit-linear-grad

LinearGradient在android开发中实现字体渐变效果实例

android 使用LinearGradient进行字体渐变的效果,如下图显示: 开发中实现字体渐变效果实例-linear gradient"> 就像上面的显示效果一样一束白光闪过,这种效果主要还是使用了LinearGradient类来进行的 LinearGradient也称作线性渲染,LinearGradient的作用是实现某一区域内颜色的线性渐变效果 它有两个构造函数  代码如下 复制代码 public LinearGradient(float x0, float y0, float

javascript 线性渐变三_javascript技巧

IE还有一个利器至今没有被使用过,那就是VML.虽然比不上SVG,但它还是非常强大的.在实现渐变上,其fill还比IE的Gragient滤镜强悍得多了.不过VML出现得比较早,只支持很少的颜色名,如red,blue,yellow,其他如orange就可以搞死它了.因此要使用VML做线性渐变,我们得对这些颜色名做一下转换. HTML4的颜色值 black = #000000 green = #008000 silver = #c0c0c0 lime = #00ff00 gray = #808080