原生js螺旋运动
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螺旋运动的更多相关文章
- 原生JS封装Ajax插件(同域&&jsonp跨域)
抛出一个问题,其实所谓的熟悉原生JS,怎样的程度才是熟悉呢? 最近都在做原生JS熟悉的练习... 用原生Js封装了一个Ajax插件,引入一般的项目,传传数据,感觉还是可行的...简单说说思路,如有不正 ...
- 常用原生JS方法总结(兼容性写法)
经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...
- 原生JS实现"旋转木马"效果的图片轮播插件
一.写在最前面 最近都忙一些杂七杂八的事情,复习软考.研读经典...好像都好久没写过博客了... 我自己写过三个图片轮播,一个是简单的原生JS实现的,没有什么动画效果的,一个是结合JQuery实现的, ...
- 再谈React.js实现原生js拖拽效果
前几天写的那个拖拽,自己留下的疑问...这次在热心博友的提示下又修正了一些小小的bug,也加了拖拽的边缘检测部分...就再聊聊拖拽吧 一.不要直接操作dom元素 react中使用了虚拟dom的概念,目 ...
- React.js实现原生js拖拽效果及思考
一.起因&思路 不知不觉,已经好几天没写博客了...近来除了研究React,还做了公司官网... 一直想写一个原生js拖拽效果,又加上近来学react学得比较嗨.所以就用react来实现这个拖 ...
- 原生JS实现全屏切换以及导航栏滑动隐藏及显示——重构前
思路分析: 向后滚动鼠标滚轮,页面向下全屏切换:向前滚动滚轮,页面向上全屏切换.切换过程为动画效果. 第一屏时,导航栏固定在页面顶部,切换到第二屏时,导航条向左滑动隐藏.切换回第一屏时,导航栏向右滑动 ...
- 原生js实现autocomplete插件
在实际的项目中,能用别人写好的插件实现相关功能是最好不过,为了节约时间成本,因为有的项目比较紧急,没充分时间让你自己来写,即便写了,你还要花大量时间调试兼容性.但是出于学习的目的,你可以利用闲暇时间, ...
- 原生js封装ajax:传json,str,excel文件上传表单提交
由于项目中需要在提交ajax前设置header信息,jquery的ajax实现不了,我们自己封装几个常用的ajax方法. jQuery的ajax普通封装 var ajaxFn = function(u ...
- 原生JS实现购物车结算功能代码+zepto版
html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3 ...
随机推荐
- netty实现TCP长连接
所用jar包 netty-all-4.1.30.Final.jar 密码:rzwe NettyConfig.java,存放连接的客户端 import io.netty.channel.group.Ch ...
- Linux 关闭正在运行的程序---命令
Ctrl + C 终止 Ctrl + D 退出 Ctrl + S 挂起 Ctrl + Q 解挂 Ctrl + Z 强制结束
- 从”茄子快传”看应用程序怎样获取手机已安装程序的apk文件
"茄子快传"是联想开发的一款近距离文件共享软件.它通过wifi-direct(速度飞快,不须要联网)或者普通的网络(速度慢)在不同手机间传递文件. 不知为何.它就火了起来,火的也飞 ...
- Go语言核心之美 1.5-作用域
变量的作用域是指程序代码中能够有效使用这个变量的范围. 不要将作用域和生命期混在一起. 作用域是代码中的一块区域,是一个编译期的属性:生命期是程序执行期间变量存活的时间段.在此时间段内,变量能够被程序 ...
- 一些VPS
https://www.perfectip.net 5美元/1C/4G/20G/10Thttps://www.hetzne ...
- 妙味css3课程---1-2、css3中新增的伪类和伪元素有哪些
妙味css3课程---1-2.css3中新增的伪类和伪元素有哪些 一.总结 一句话总结: 1.div:target{}是什么意思? 比如a标签的锚点链接到div,div:target{}就可以找到这个 ...
- golang 函数传值
package main import ( "fmt" ) type Vertex struct { X, Y int } func dop(a Vertex, vl int) { ...
- vue的mode: 'history'模式
const router = new VueRouter({ mode: 'history', routes: [...] }) 不用mode: 'history'的时候,页面url地址后面会加上一个 ...
- JAVA MessageDigest(MD5加密等)
转自http://blog.csdn.net/hudashi/article/details/8394158 一.概述 java.security.MessageDigest类用于为应用程序提供信息摘 ...
- Django路由分配以及模版渲染
路由上: 在网络上区分不同的电脑通过IP.端口和网卡的MAC地址等,在web框架中怎么区分不同的请求呢,就是通过 ‘url(路由)’ ,url 学名叫做全球统一资源定位符,其实就是一个网址 一个url ...