window.onload=function(){

var oSpiral=document.getElementById('spiral');

var oUl=oSpiral.getElementsByTagName('ul')[0];

var aLi=oUl.getElementsByTagName('li');

var size=6;

var len=size*size;

var eachSize=50;

var col=0;

var row=0;

var min=0;

var max=size-1;

var arr=[];

var bgArr=[];

oUl.style.width=size*(eachSize+1)+'px';

oUl.style.height=size*(eachSize+1)+'px';

for(var i=0;i<len;i++){

var oLi=document.createElement('li');

oLi.style.width=eachSize+'px';

oLi.style.height=eachSize+'px';

oUl.appendChild(oLi);

}

for(var j=0;j<len;j++){

//aLi[ row * size + col ].innerHTML = j;

arr.push(aLi[row*size+col]);

if(row === min && col < max){

col++;

}else if(col === max && row < max){

row++;

}else if(row ===max && col > min){

col--;

}else if(col === min && row > min){

row--;

}if(row-1===min && col===min){

min++;

max--;

}

}

for(var i=0;i<len;i++){

if(i%4===0){

var n=Math.floor(Math.random()*10);

var bgImg='url(../images/'+n+'.jpg)';

arr[i].style.backgroundImage=bgImg;

bgArr.push([i,bgImg]);

}

}

move();

setInterval(move,1000);

function move(){

for(var i=0;i<aLi.length;i++){

aLi[i].style.backgroundImage='';

aLi[i].className='';

}

for(var i=0;i<bgArr.length;i++){

bgArr[i][0]++;

if(arr[bgArr[i][0]]){

arr[bgArr[i][0]].style.backgroundImage=bgArr[i][1];

arr[bgArr[i][0]].className='active';

arr[bgArr[i][0]].style.animationDelay = -Math.random()*1 + 's';

arr[bgArr[i][0]].style.webkitAnimationDelay = -Math.random()*1 + 's';

}else{

bgArr.pop();

var n=Math.floor(Math.random()*10);

var bgImg='url(../images/'+n+'.jpg)';

bgArr.unshift([0,bgImg]);

}





}

}

}

原生js螺旋运动的更多相关文章

  1. 原生JS封装Ajax插件(同域&&jsonp跨域)

    抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...

  2. 常用原生JS方法总结(兼容性写法)

    经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...

  3. 原生JS实现"旋转木马"效果的图片轮播插件

    一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...

  4. 再谈React.js实现原生js拖拽效果

    前几天写的那个拖拽,自己留下的疑问...这次在热心博友的提示下又修正了一些小小的bug,也加了拖拽的边缘检测部分...就再聊聊拖拽吧 一.不要直接操作dom元素 react中使用了虚拟dom的概念,目 ...

  5. React.js实现原生js拖拽效果及思考

    一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...

  6. 原生JS实现全屏切换以及导航栏滑动隐藏及显示——重构前

    思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动 ...

  7. 原生js实现autocomplete插件

    在实际的项目中,能用别人写好的插件实现相关功能是最好不过,为了节约时间成本,因为有的项目比较紧急,没充分时间让你自己来写,即便写了,你还要花大量时间调试兼容性.但是出于学习的目的,你可以利用闲暇时间, ...

  8. 原生js封装ajax:传json,str,excel文件上传表单提交

    由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...

  9. 原生JS实现购物车结算功能代码+zepto版

    html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...

随机推荐

  1. Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory(转)

    1. Spring整合MyBatis切换SqlSessionFactory有两种方法,第一. 继承SqlSessionDaoSupport,重写获取SqlSessionFactory的方法.第二.继承 ...

  2. Android-Volley网络通信框架(二次封装数据请求和图片请求(包含处理请求队列和图片缓存))

    1.回想 上篇 使用 Volley 的 JsonObjectRequest 和 ImageLoader 写了 电影列表的样例 2.重点 (1)封装Volley 内部 请求 类(请求队列,数据请求,图片 ...

  3. AsyncTask源代码翻译

    前言: /** <p>AsyncTask enables proper and easy use of the UI thread. This class allows to perfor ...

  4. Android开发经验之获取画在画布上的字符串长度、宽度(所占像素宽度)

    Android中获取字符串长度.宽度(所占像素宽度) 计算出当前绘制出来的字符串有多宽,可以这么来! 方法1: Paint paint = new Paint(); Rect rect = new R ...

  5. String类型转Long类型需要注意的问题

    转自:https://blog.csdn.net/m819177045/article/details/52669785/

  6. Linux 常用解压缩归档命令

    linux 常见压缩.归档工具 创建压缩工具 压缩工具 后缀 描述 compress/uncompress .Z 早期工具,现在不常见了 gzip/gunzip .gz 进几年比较火的工具 bzip2 ...

  7. 洛谷P1852 奇怪的字符串

    题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00 ...

  8. 命令行SVN的使用

    1.检出svn  co  http://路径(目录或文件的全路径) [本地目录全路径]  --username 用户名 --password 密码svn  co  svn://路径(目录或文件的全路径 ...

  9. 虚拟机上的企业网络管理系统(cisco works 2000安装配置)

    虚拟机上的企业网络管理系统 北京 李晨光 相关文章 Cisco Works 2000 网络管理软件安装.配置全过程 http://you.video.sina.com.cn/b/18168631-14 ...

  10. C# json 总结

    json格式字符串转换为实体类,大括号 {} 表示对象,[] 数组表示列表. json文件读取到内存中就是字符串,.NET操作json就是生成与解析json字符串. 添加引用:using Newton ...