您好,欢迎访问一九零五行业门户网

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 olive = #808000 white = #ffffff yellow = #ffff00
maroon = #800000 navy = #000080 red = #ff0000 blue = #0000ff
purple = #800080 teal = #008080 fuchsia = #ff00ff aqua = #00ffff
我们可以在火狐官网以及w3c了解到更多的颜色值。
复制代码 代码如下:
var htmlcolor={ black :#000,green :#008000,silver :#c0c0c0,lime :#0f0,
gray :#808080,olive :#808000,white :#fff,yellow :#ff0,
maroon :#800000,navy :#000080,red :#f00,blue :#00f,
purple :#800080,teal :#008080,fuchsia :#f0f,aqua :#0ff,
indigo :#4b0082,orange : #ffa500,sienna :#a0522d,plum :#dda0dd,
gold :#ffd700, tan :#d2b48c, snow :#fffafa,violet :#ee82ee
}
接着我们在需要线性渐变的那个元素内部创建一个同样大小的rect元素,然后里面再添加一个fill元素,用来设置渐变。伪码如下:
复制代码 代码如下:
javascript线性渐变 by 司徒正美 实现多重水平渐变效果
javascript线性渐变 by 司徒正美javascript线性渐变 by 司徒正美 实现多重水平渐变效果
javascript线性渐变 by 司徒正美 实现多重垂直渐变效果
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]
利用vml实现ie的线性渐变后整个类的长度减少一半。
我们再来看如何实现角度渐变,ie那边好办,直接传入一个角就行了(0—360,也可以为负数)。svg比较麻烦,它由lineargradient 的四个属性来控制倾斜度,x1,x2,y2,y2,实质就是两个点。假设第一个点为(0,0),第二个点为(100,0),它就是水平渐变。假设第一个点为(0,0),第二个点为(0,100),它就是垂直渐变。要实现倾斜就必须让第二个点的坐标与第一个点的坐标完全不相等,无论是x轴还是y轴。这就要用到三角函数了。
复制代码 代码如下:
var x = (math.sin(angle*math.pi/180) * 100).tofixed(2)+%;
var y = (math.cos(angle*math.pi/180)* 100).tofixed(2)+%;
this.attr(lineargradient,{x2:x,y2:y});
我们也应该看得出水平渐变与垂直渐变其实只是一个特例,我们大可以废除type这个属性,改成angle,传入一个0至360的数。
javascript线性渐变 by 司徒正美javascript线性渐变 by 司徒正美 实现多重水平渐变效果
javascript线性渐变 by 司徒正美 实现多重垂直渐变效果
javascript线性渐变 by 司徒正美 实现多重角度渐变效果
[ctrl+a 全选 注:如需引入外部js需刷新才能执行]
其它类似信息

推荐信息