时间:2021-05-26
IE还有一个利器至今没有被使用过,那就是VML。虽然比不上SVG,但它还是非常强大的。在实现渐变上,其fill还比IE的Gragient滤镜强悍得多了。不过VML出现得比较早,只支持很少的颜色名,如red,blue,yellow,其他如orange就可以搞死它了。因此要使用VML做线性渐变,我们得对这些颜色名做一下转换。
HTML4的颜色值
black = #000000green = #008000silver = #c0c0c0lime = #00ff00gray = #808080olive = #808000white = #ffffffyellow = #ffff00maroon = #800000navy = #000080red = #ff0000blue = #0000ffpurple = #800080teal = #008080fuchsia = #ff00ffaqua = #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元素,用来设置渐变。伪码如下:
复制代码 代码如下:
<div class="gradient" style="position:relative;width:width;height:height">
javascript线性渐变 by 司徒正美 实现多重水平渐变效果
<vml:rect style="position:absolute;width:width;height;top:0;left:0" stroked="f" >
<vml:fill colors="与SVG相对应的color-stop" focus="100%" type="gradient" method="linear"/>
</vml:rect>
</div>
javascript线性渐变 by 司徒正美 .gradient{ width:800px; height:100px; } 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 司徒正美 .gradient{ width:800px; height:100px; } javascript线性渐变 by 司徒正美 实现多重水平渐变效果 javascript线性渐变 by 司徒正美 实现多重垂直渐变效果 javascript线性渐变 by 司徒正美 实现多重角度渐变效果 [Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Flutter中渐变有三种:LinearGradient:线性渐变RadialGradient:放射状渐变SweepGradient:扇形渐变看下原图,下面的渐
以PS2019版本为例,ps中的渐变有有线性渐变、径向渐变、角度渐变、对称渐变、菱形渐变五种。 1、线性渐变,即同一方向上的渐变。 2、径向渐变,即以中心为
CSS3Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。线性渐变在Webkit下的应用CSSCode
本文聊一聊线性渐变的凹面矩形过渡动效的难点和思路,主要介绍凹面矩形实现、给凹面矩形加线性渐变、线性渐变背景色的过渡。如果有更好的实现方案,欢迎在评论区和我讨论。
fillStyle的第二种使用情况就是渐变色的填充。渐变色就分为线性渐变色和径向渐变色。线性渐变:大致分为两步这里又会使用到canvas的两个新的函数。第一步: