原生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 ...
随机推荐
- Spring3 整合MyBatis3 配置多数据源 动态选择SqlSessionFactory(转)
1. Spring整合MyBatis切换SqlSessionFactory有两种方法,第一. 继承SqlSessionDaoSupport,重写获取SqlSessionFactory的方法.第二.继承 ...
- Android-Volley网络通信框架(二次封装数据请求和图片请求(包含处理请求队列和图片缓存))
1.回想 上篇 使用 Volley 的 JsonObjectRequest 和 ImageLoader 写了 电影列表的样例 2.重点 (1)封装Volley 内部 请求 类(请求队列,数据请求,图片 ...
- AsyncTask源代码翻译
前言: /** <p>AsyncTask enables proper and easy use of the UI thread. This class allows to perfor ...
- Android开发经验之获取画在画布上的字符串长度、宽度(所占像素宽度)
Android中获取字符串长度.宽度(所占像素宽度) 计算出当前绘制出来的字符串有多宽,可以这么来! 方法1: Paint paint = new Paint(); Rect rect = new R ...
- String类型转Long类型需要注意的问题
转自:https://blog.csdn.net/m819177045/article/details/52669785/
- Linux 常用解压缩归档命令
linux 常见压缩.归档工具 创建压缩工具 压缩工具 后缀 描述 compress/uncompress .Z 早期工具,现在不常见了 gzip/gunzip .gz 进几年比较火的工具 bzip2 ...
- 洛谷P1852 奇怪的字符串
题目描述 输入两个01串,输出它们的最长公共子序列的长度 输入输出格式 输入格式: 一行,两个01串 输出格式: 最长公共子序列的长度 输入输出样例 输入样例#1: 复制 01010101010 00 ...
- 命令行SVN的使用
1.检出svn co http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名 --password 密码svn co svn://路径(目录或文件的全路径 ...
- 虚拟机上的企业网络管理系统(cisco works 2000安装配置)
虚拟机上的企业网络管理系统 北京 李晨光 相关文章 Cisco Works 2000 网络管理软件安装.配置全过程 http://you.video.sina.com.cn/b/18168631-14 ...
- C# json 总结
json格式字符串转换为实体类,大括号 {} 表示对象,[] 数组表示列表. json文件读取到内存中就是字符串,.NET操作json就是生成与解析json字符串. 添加引用:using Newton ...