jQuery技术

小教程:自己创建一个jQuery长阴影插件(2)

字号+ 作者:H5之家 来源:H5之家 2017-08-19 12:02 我要评论( )

img变量将保存于我们应用效果原始图像元素的引用。我们需要监听图像的onload 事件,以确保在应用效果时图像被完全加载。此外,将注意到,在onload 之后 还有一个img.src = img.src;。这将触发 onload功能,因为我们

  img变量将保存于我们应用效果原始图像元素的引用。我们需要监听图像的onload 事件,以确保在应用效果时图像被完全加载。此外,将注意到,在onload 之后  还有一个img.src = img.src;。这将触发  onload功能,因为我们不确定浏览器加载图像和脚本的顺序。


在onload 处理程序内部  ,我们创建内存  canvas元素,我们将在其中绘制最终结果,与图像的大小相同spacing。然后,从最远点向中心开始,我们使用绘制的图像的偏移的极坐标变换绘制画布上的图像副本:


var x = Math.round(r * Math.cos(settings.shadowAngle * Math.PI / 180));
var y = Math.round(r * Math.sin(settings.shadowAngle * Math.PI / 180));


要在画布上绘制图像,我们使用画布2D上下文并调用  drawImage()函数。这将在画布上绘制图像的副本,但是我们需要的是它的彩色版本。为此,我们利用画布合成操作。在这个教程中,将 source-in与用shadowColor填充的矩形一起使用,这将使图像副本与原始图像具有相同形状但颜色是 shadowColor。 


请注意,如果你有多种颜色的图像,则结果将全部为相同的颜色,因为我们正在绘制阴影,而阴影通常是相同的颜色。


for循环负责绘制阴影; 然而,它是完全不透明的。我们希望能够使用shadowOpacity参数设置阴影不透明度  。为此,我们使用 copyCanvas()函数,该函数利用临时画布并将canvas内容的不透明度设置为指定的值。


我们必须在整个阴影被绘制出来时进行这一步,否则堆叠透明图像在彼此之上将导致渐变效果。


让我们来看看onload处理程序的最后两行  :


self.onload = null;
$(self).attr("src", canvas.toDataURL("image/png"));


第一行onload从图像中移除 处理程序。我们这样做是因为在下一行中,我们想将在画布上绘制的图像设置src为原始图像的新  图像。如果我们没有删除处理程序,那么我们将进入一个无限循环。


如何使用jQuery长阴影插件?


现在我们已经实现了这个插件,我们来看看我们如何实际使用它以及它产生的结果。为此,我们将使用该  script.js文件,我们将在其中调用刚创建的插件。


调用插件的最简单的方法是:


$(document).ready(function(){
    $("#logo").longshadows();
});


这将指示浏览器当页面完成加载时,调用longshadows()函数.


调用这样的插件将使用默认参数。由于使用这些默认参数的结果并不是很好,我们来看看我们如何改变它们。让我们像这样调用插件:


$(document).ready(function(){
    $("#logo").longshadows({
        spacing:50,
        shadowOpacity:30,
        shadowAngle:30,
        shadowLength:400
    });
});

这导致像这样的图像:


从我们的插件得到的图像

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • jquery 最新版框架下载(1.32-1.11.1-3.2.1)

    jquery 最新版框架下载(1.32-1.11.1-3.2.1)

    2017-08-07 15:00

  • jquery-mobile 学习笔记之二(表单创建)

    jquery-mobile 学习笔记之二(表单创建)

    2017-08-04 12:06

  • 针对开发者的20款移动开发框架

    针对开发者的20款移动开发框架

    2017-07-22 13:01

  • 学jQuery,JavaScript和css需要掌握到什么程度?

    学jQuery,JavaScript和css需要掌握到什么程度?

    2017-07-20 17:00

网友点评
v