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. Ansible学习记录一:Linux下部署

    0.Ansible介绍 Ansible 是一个简单的自动化运维管理工具,可以用来自动化部署应用.配置.编排 task(持续交付.无宕机更新等),采用 paramiko 协议库(fabric 也使用这个 ...

  2. groupadd---创建一个新的工作组

    groupadd命令   groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中. 语法 groupadd(选项)(参数) 选项 -g:指定新建工作组的id: -r:创建系统工 ...

  3. mysql允许外部连接设置

    错误信息: SQL Error (1130): Host ‘192.168.1.88’ is not allowed to connect to this MySQL server 说明所连接的用户帐 ...

  4. 威佐夫博奕(Wythoff Game)

    出现奇异局面,先取者必败,反之后拿者必败 奇异局面:(0,0) (1,2) (3,5) (4,7) (ak,bk) ak=bk-k,ak=k*(1+√5)/2: 代码实现(poj 1067): #in ...

  5. Exclusive or

    题目连接 题意: 每次给一个n.求 (2≤n<10500) 分析: 先说一下自己的想法,假设将n换成二进制数,也就一两千位左右,那么一位一位处理是能够接受的. 将0-n写成二进制形式后,显然全部 ...

  6. redmine-bug 问题修改流程

    1.当我们接受到测试发过来的bug以后,首先就是针对描述,弄清出问题,如果不能重现或者是对问题不清楚,那么可以去找提出者确认 注意:有时候一个问题可能是经过几次重开或者追加提出的,这时候你一定要从头到 ...

  7. 版本管理系统:svn和git

    svn是常用的版本管理系统,解决团队协作开发和版本管理问题, 一.服务器端:是一个文件存储仓库,可以设置用户并管理其访问的权限.主要功能包括 ①设置文件存储路径,是管理文件版本的基础 ②设置用户:可以 ...

  8. session应用二

    从session中获取mapper对象,利用mapper对象进行增删改查 Date now = new Date(); SqlSession session = this.yangchebaoDbMa ...

  9. 洛谷——P1101 单词方阵

    https://www.luogu.org/problem/show?pid=1101#sub 题目描述 给一nXn的字母方阵,内可能蕴含多个“yizhong”单词.单词在方阵中是沿着同一方向连续摆放 ...

  10. HTML基础第七讲---框架

    转自:https://i.cnblogs.com/posts?categoryid=1121494 框架(Frame)也就是所谓的分割窗口.分割画面.框窗效果(还真是五花八门),这个技巧在运用上问题比 ...