Js 旋转平滑特效
效果图
源码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html style="height: 100%;"> <body style="height: 100%;"> </body> <script type="text/javascript"> // ============================================================================= // Util. // var Util = { getBody: function() { return document.body; }, appendToBody: function(tag) { this.getBody().appendChild(tag); }, createShape: function(x, y, width, height) { var div = document.createElement("div"); div.style.position = "absolute"; div.style.border = "solid"; div.style.background= "rgb(180, 230, 29)"; //div.style.color = "rgb(180, 230, 29)"; div.style.left = x + "px"; div.style.top = y + "px"; div.style.width = width + "px"; div.style.height = height + "px"; //div.style.webkitTransform = "rotate(70deg)"; return div; }, equal: function(v1, v2) { return Math.abs(v1 - v2) < 0.0001; }, parseAngle: function(angle) { return "rotate(_angledeg)".replace("_angle", angle); }, parseRect: function(x, y, width, height) { var result = "rect(_ypx, _endxpx, _endypx, _xpx)"; result = result.replace("_x", x).replace("_y", y); result = result.replace("_endx", x + width).replace("_endy", y + height); return result; }, getTagPoint: function(tag) { return { "x": parseInt(tag.style.left.replace("px", "")), "y": parseInt(tag.style.top.replace("px", "")) }; }, setTagPoint: function(tag, point) { tag.style.left = point.x + "px"; tag.style.top = point.y + "px"; } }; // // ============================================================================= // // 获取鼠标坐标. // var cursor = { "x": 0, "y": 0, "setPosition": function(e) { this.x = e.clientX; this.y = e.clientY; } }; // 绑定全局, 获取鼠标坐标. ( function() { Util.getBody().onmousemove = cursor.setPosition; } )(); // // ============================================================================= // ============================================================================= // 元素信息. // function ElementInfo(tag) { var self = this; tag.onmousemove = function() { self.step1 = 10; self.step2 = 5; }; this.angle = 0; this.step1 = 0; // 旋转. this.step2 = 0; // 移动. this.tag = tag; Util.appendToBody(tag); } // 执行旋转. ElementInfo.prototype.onRotate = function() { if ( !Util.equal(this.step1, 0) ) { this.angle += this.step1; this.angle = parseInt(this.angle); this.angle = parseInt(this.angle % 360); this.step1 -= 0.05; this.tag.style.webkitTransform = Util.parseAngle(this.angle); } } // 执行移动. ElementInfo.prototype.onMove = function() { if ( !Util.equal(this.step2, 0) ) { var tagPoint = Util.getTagPoint(this.tag); var toX = this.step2 * Math.sin(3.14 / 180 * this.angle) + tagPoint.x; var toY = this.step2 * Math.cos(3.14 / 180 * this.angle) + tagPoint.y; Util.setTagPoint(this.tag, {"x": toX, "y": toY}); this.step2 -= 0.05; } } // // ============================================================================= var elements = []; ( function() { var screenWidth = document.documentElement.clientWidth; var screenHeight = document.documentElement.clientHeight; var cellWidth = 50; var cellHeight = 50; var cellNumX = 16; var cellNumY = 6; var viewWidth = cellNumX * cellWidth; var viewHeight = cellNumY * cellHeight; var viewX = parseInt( (screenWidth - viewWidth) / 2); var viewY = parseInt( (screenHeight - viewHeight) / 2); for (var i = 0; i != cellNumX * cellNumY; ++i) { var x = viewX + parseInt(i % cellNumX) * cellWidth; var y = viewY + parseInt(i / cellNumX) * cellHeight; var tag = Util.createShape(x, y, cellWidth, cellHeight); var ele = new ElementInfo(tag); elements.push(ele); } setInterval(handleLogic, 10); } )(); function handleLogic() { for (var i in elements) { elements[i].onRotate(); elements[i].onMove(); } } </script> </html>
鼠标经过时, 方块会旋转并且移动.
Js 旋转平滑特效的更多相关文章
- JS框架_(coolShow.js)图片旋转动画特效
百度云盘 传送门 密码:ble6 coolShow.js插件图片旋转动画效果 <!DOCTYPE HTML> <head> <meta http-equiv=" ...
- 基于jQuery和CSS3炫酷图片3D旋转幻灯片特效
在线预览 源码下载 iPresenter是一款效果非常炫酷的jQuery和CSS3 3D旋转幻灯片特效插件.你可以使用它来制作产品展示.图片画廊或者各种幻灯片和轮播图特效.这款幻灯片插件的特点有: ...
- 基于jQuery环形图标菜单旋转切换特效
分享一款基于jQuery环形图标旋转切换特效.这是一款鼠标点击图标菜单圆形顺时针或者逆时针旋转切换代码.效果图如下: 在线预览 源码下载 实现的代码. js代码: /* 图片地址可以是相对路径或绝 ...
- 一款基于jQuery和CSS3炫酷3D旋转画廊特效插件
这是一款效果炫酷的jQuery和CSS3 3D旋转画廊特效插件.该3D画廊插件可以通过前后导航按钮来切换图片,效果就像旋转木马一样.它还带有点击放大图片,显示图片标题和用键盘操作等功能. 在线预览 ...
- css3动画应用-音乐唱片旋转播放特效
css3动画应用-音乐唱片旋转播放特效 核心点: 1.设置图片为圆形居中,使图片一直不停旋转. 2.文字标题(潘玮柏--反转地球)一直从左到右不停循环移动. 3.点击图标,音乐暂停,图片停止旋转:点击 ...
- js页面载入特效如何实现
js页面载入特效如何实现 一.总结 一句话总结:可以加选择器(里面的字符串)作为参数,这样函数就可以针对不同选择器,就很棒了. 1.特效的原理是什么? 都是通过标签的位置和样式来实现特效的. 二.js ...
- Rotating Image Slider - 图片旋转切换特效
非常炫的图片旋转滑动特效,相信会给你留下深刻印象.滑动图像时,我们会稍稍旋转它们并延缓各元素的滑动.滑块的不寻常的形状是由一些预先放置的元素和使用边框创建.另外支持自动播放选项,鼠标滚轮的功能. 在线 ...
- 可控制转速CSS3旋转风车特效
以前制作网页动画一般使用javascript,现在已经有越来越多动动画使用纯CSS实现,并且动画的控制也可以使用CSS3实现,因为CSS 3来了,CSS 3的动画功能确实强大.以下是一个纯CSS3制作 ...
- 案例:用JS实现放大镜特效
案例:用JS实现放大镜特效 案例:用JS实现放大镜特效
随机推荐
- java数组排序之冒泡排序
上一篇文章说了,选择排序. 选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推. 这一节当中我们来看下冒泡排序: 思路: 1.首先拿第一个数字跟第二个 ...
- 在线LCA模板
在线LCA 如求A,B两点的LCA,先计算出各个结点的深度d[],然后,通过递推公式求出各个结点的2次方倍的祖先p[],假设d[A] > d[B],则找到d[p[A][i]] == d[B]也就 ...
- POJ-1330--Nearest Common Ancestors(离线LCA)
LCA离线算法 它需要一次输入所有的询问,然后有根节点开始进行深度优先遍历(DFS),在深度优先遍历的过程中,进行并查集的操作,同时查询询问,返回结果. 题意: 求A ,B两点的最近公共祖先 分析: ...
- Contains Duplicate III —— LeetCode
Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...
- MySQL选用可重复读之前一定要想到的事情
原文地址:http://blog.itpub.net/29254281/viewspace-1398273/ MySQL选用可重复读隔离级别之前一定要想到的事情.间隙锁 MySQL在使用之前有三个务必 ...
- SRM 392(1-250pt)
DIV1 250pt 题意:给两个各含有一个*号的字符串s1和s2,可以用一个任意字符串代替*号(注意是串,不是只能用单个字符代替,也可以为用空串代替),问能否将s1和s2变为相同的字符串.如果能输出 ...
- js中的运算符和条件语句
js中的运算符大体上可以分为4类:1算术运算符.2一元操作符.3比较运算符.4逻辑运算符. 算术运算符一般指的是加减乘除求余这五种操作符:+,-,*,/,%.通过算术运算符可以对js中的变量进行操作. ...
- PHP 計算字符串長度函數
PHP內置的字符串長度函數strlen無法正確處理中文字符串,它得到的只是字符串所占的字節數.對於GB2312的中文編碼,strlen得到的值是漢字個數的2倍,而對於UTF-8編碼的中文,就是3倍的差 ...
- java中的泛型(转)
什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个 ...
- SPOJ 3937 - Wooden Sticks 最长上升子序列LIS
给了n个(n<=5000)木棍的长度hi与宽度wi(均小于10000),现在机器要打磨这些木棍,如果相邻连个木棍hi<=hj并且wi<=wj就不需要调整机器,问如何排序使得机器调整的 ...