前端小练——雪花特效插件

闲来无事,写写Js练练手,今天做了一个简单版的雪花特效背景插件,与大家分享下。

这里给出几个思路步骤及相应代码:

首先,我们要写一个雪花标本并隐藏,这里引入了jquery库,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>snowy</title>
    <script type="text/javascript" src="js/jquery.js"></script>
    <style type="text/css">
       body{
        background:url("img/town2.jpg");
       }
    </style>
</head>
<body>
<img  speed="slow"  size="small"  style="display:none;position:absolute;z-index:1001;" />
</body>
</html>

  你可以设置<img>标签里的 speed和size属性,speed:"slow,normal,fast"; size:"small,normal,big“。分别表示雪花的速度和大小。

然后,我们需要一个生产雪花标本的类。

在此之前,我们应该知道,雪花产生时其初始的横坐标位置应当是随机的,所以这里先提供了一个生产随机位置的函数:

 var snowyPic=$("img").eq(0); //雪花标本

     //雪花位置随机数
     function randomAt(){
        var widthPos = Math.random().toString().slice(0,5);
        widthPos =widthPos*1000;
        if(widthPos >= $(window).width()) widthPos=$(window).width()-100;
        return widthPos;
     }

     //生产雪花标本
     function snowyCreate(speed,size){
        this.speed=speed; //雪花速度
        this.pos_x=randomAt();  //横坐标
        this.pos_y=0;  //纵坐标

        var self=this;
        this.create=function(){
          var random=Math.random()+Math.random();
          random=random.toString().slice(2,9);  //id有长度限制
          $("body").append("<img src=‘img/snow.png‘ id= ‘"+random+"‘/>");
          var _star=$("#"+random);
          if(size === "normal"){ var snowySize="60px";}
          else if(size === "small"){ var snowySize="30px";}
           else if(size === "big"){var snowySize="90px";}
           _star.css({width:snowySize});
           _star.offset({left:this.pos_x,top:this.pos_y});
          return _star;
        };

        //下落
        this.drift=function(domOb){

            var _star=domOb;
            var drop=setInterval(function(){
               //self.pos_x=self.pos_x + Math.random()*50;
               self.pos_x=self.pos_x + 20;
               self.pos_y=self.pos_y +40;
               var _option={
                 left: self.pos_x,
                  top: self.pos_y,
               };
                  if(_star.offset().top <= $(window).height()-100 && _star.offset().left <= $(window).width()-100){
                     _star.offset(_option);

                  }
                  else {
                     _star.remove();
                     clearInterval(drop);
                  }
                },self.speed);
           } ;

             this.drift(this.create());
   }

  在上面这段代码中,我把雪花下落的行为函数放在了生产雪花的类中,并借用new()实例重新开辟新上下文并执行函数体的机制把生产create()后的雪花实例当作参数衔接到drift()函数中,实现雪花产生并带有下落动作。

最后,我提取了雪花标本里设置的参数们并放到options对象中,在最后读取各参数渲染。

具体的代码和文件完整的包在github上:https://github.com/Johnharvy/snowy-plugin

如果您有点兴趣,点个赞给我点鼓励吧!

时间: 2024-10-04 00:04:42

前端小练——雪花特效插件的相关文章

10款web前端优秀的jQuery特效插件

1.jQuery鼠标悬停文字渐隐渐现动画效果 这是一款基于JQuery实现的鼠标悬停文字渐隐渐现动画效果源码,是一款鼠标悬停后图片渐渐有一层透明遮罩层,同时说明文字从左侧滑入,鼠标离开后文字从右侧滑出,整体效果美观自然,用户体验较好.是一款比较优秀的特效源码.该源码兼容目前最新的各类主流浏览器. 在线演示 源码下载 2.jquery基于small2big实现的图片突出显示特效 这是一款基于Jquery的small2big插件实现的图片突出显示特效源码,鼠标滑过图片可实现图片的放大突出显示效果,有

PerfMap – 显示前端网站性能的热力图插件

PerfMap 是用来分析前端性能,基于资源定时 API 生成网页资源加载的前端性能热图.热图的颜色和第一个毫秒值指示在什么时候页面的图像加载完毕,这是用户体验的一个很好的指标.括号中的第二个值是浏览器加载特定图像的时间. Github主页     插件下载 您可能感兴趣的相关文章 Web 开发中很实用的10个效果[源码下载] 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 404 错误页面设计 让网站动起来!12款优秀的 jQuery 动画插件 十分惊艳的8个 H

TouchSlide触屏滑动特效插件的使用

官方连接:http://www.superslide2.com/TouchSlide/ TouchSlide 是纯javascript打造的触屏滑动特效插件,面向手机.平板电脑等移动终端, 能实现触屏焦点图.触屏Tab切换.触屏多图切换等常用效果.插件开源.体积小.简单实用.功能强大,是你架构移动终端网站的重要选择!ps:如果你SuperSlide的使用者,那么你会发现它是那么熟悉和易用.v1.1 宽度自适应(修复安卓横屏时滑动范围不变的bug) 演示案例:http://www.supersli

3.12课程小练以及vim编辑器的基本用法(部分)

 课程小练 1. 通过man帮助手册,自行总结which.whereis.whatis命令的使用方法: which:展示出shell命令的完整路径: 格式: which [options] [--] programname [...] whereis:基于二进制的,有源的,和文件或命令的记录手册 格式:whereis [options] name... whatis:在 whatis 数据库里查找完整的单词 格式:whatis - 2. du命令: du - 报告磁盘空间使用情况 du -a,

CSDN开源夏令营 基于Compiz的switcher插件设计与实现之compiz特效插件介绍及特效实现

compiz自带的特效插件不够多,也不够强大,为了更好的体验compiz的特效,我们可以安装特效插件,在终端输入命令:sudo apt-get install compiz-plugins就可以下载特效插件安装了. 一.安装compiz特效插件 在此过程中可能会出现一些问题,比如说依赖问题,我们需要把源更新一下.对于更新源,我们需要注意以下几点: 1.设置软件更新 注意:这里要选主服务器 2.更新源 在终端输入命令:sudo apt-get update来更新源,一般情况下,这样是可以的,但是,

前端小知识点积累

作为一名前端,一直想说,一入前端深似海啊.也许在很多人眼中,前端就是简简单单的写页面的,但实际上前端的水还都是很深的,具体就不做叙述了. 今天来的主要目的是分享平时积累的一些前端小知识 一:js,jq获取各种高度 Javascript: alert(window.screenTop);                     //浏览器距离Top alert(window.screenLeft);                     //浏览器距离Left alert(window.scre

ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件

1. 为啥要做这个点赞插件?    praise.js是一款小巧的jQuery点赞插件,使用简便,效果美观. 在做个人博客时遇到了文章点赞问题.联想到各大社交网络中的点赞特效:手势放大.红心放大等等,很酷很炫.但是并没有现成的好用的插件,于是就打算自己做一个类似的点赞插件,放上自己喜欢的点赞图标. 先来看一下效果图吧:也可以去我的博客站 www.zynblog.com亲身体验一下. 注:(博客地址:www.zynblog.com,采用ASP.NET MVC + Bootstrap搭建) 2. 插

一款基于jQuery和CSS3炫酷3D旋转画廊特效插件

这是一款效果炫酷的jQuery和CSS3 3D旋转画廊特效插件.该3D画廊插件可以通过前后导航按钮来切换图片,效果就像旋转木马一样.它还带有点击放大图片,显示图片标题和用键盘操作等功能. 在线预览   源码下载 简要教程 这是一款效果非常炫酷的jQuery和CSS3 3D旋转画廊特效插件.第一个DEMO是一个简单的例子,使用CSS3来制作3d旋转效果,然后用js来控制前后导航按钮.第二个DEMO是第一个DEMO的升级版,它增加了图片标题.查看图片.键盘控制等其它功能. HTML结构 这个3D画廊

Web前端开发人员实用Chrome插件收集

越来越多的前端开发人员喜欢在Chrome里开发调试代码,Chrome有许多优秀的插件可以帮助前端开发人员极大的提高工作效率.尤其Chrome本身是可以登录的,登录后你所有的插件都会自动同步到每一个登录后的Chrome的,非常方便啊. Postman - REST Client Postman是Ajax开发的神器,对于Restful开发方式特别有帮助,可以用来模拟各种请求来测试API的正确性,比如用来模拟Ajax请求.它还支持认证,比如简单的用户名/密码,或者Oauth1.0.Rest Conso