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实现放大镜特效
随机推荐
- A Simple problem
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2497 题意:给出顶点数,边数及节点s,判断s是 ...
- HDU 2553 N皇后问题(详细题解)
这是一道深搜题目!问题的关键是在剪枝. 下面我们对问题进行分析: 1.一行只能放一个皇后,所以我们一旦确定此处可以放皇后,那么该行就只能放一个皇后,下面的就不要再搜了. 2.每一列只能放一个皇后,所以 ...
- POJ2286 The Rotation Game(IDA*)
The Rotation Game Time Limit: 15000MS Memory Limit: 150000K Total Submissions: 5691 Accepted: 19 ...
- 最小生成树 10.1.5.253 1505 poj 1258 http://poj.org/problem?id=1258
#include <iostream>// poj 1258 10.1.5.253 1505 using namespace std; #define N 105 // 顶点的最大个数 ( ...
- [Locked] Count Univalue Subtrees
Count Univalue Subtrees Given a binary tree, count the number of uni-value subtrees. A Uni-value sub ...
- VMware连不上网解决
在VMware里安装了ubuntu,但是某一天打开它,ubuntu忽然不能上网了,于是百度了好几个方法,最后是这样解决的: 额...现在连接的是无线,前两天出问题的时候连接的是有线,在Internet ...
- 《算法问题实战策略》-chaper8-动态规划法
Q1:偶尔在电视上看到一些被称为“神童”的孩子们背诵小数点以后几万位的圆周率.背诵这么长的数字,可利用分割数字的方法.我们用这种方法将数字按照位数不等的大小分割后再背诵. 分割形式如下: 所有数字都相 ...
- 嵌套fragment时必须要重写 onDetach()
/** * 嵌套fragment时必须要重写 onDetach()如下 */ @Override public void onDetach() { super.onDetach(); ...
- Linus:为何对象引用计数必须是原子的
Linus大神又在rant了!这次的吐槽对象是时下很火热的并行技术(parellism),并直截了当地表示并行计算是浪费所有人时间(“The whole “let’s parallelize” thi ...
- Apache-Tika解析JPEG文档
通常在使用爬虫时,爬取到网上的文章都是各式各样的格式处理起来比较麻烦,这里我们使用Apache-Tika来处理JPEG格式的图片,如下: package com.mengyao.tika.app; i ...