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实现放大镜特效
随机推荐
- 修改css
.content{ height: 100%; } .con{ border: 1px solid #eeeeee; display: inline-block; width:86.8%; ##修改这 ...
- 【动态规划】HDU 5791 Two
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5791 题目大意: A,B两个数列,问A的子集和B的子集相等的子集对数.子集内顺序按照数列顺序,相同的 ...
- HDU4099 Revenge of Fibonacci(高精度+Trie)
Revenge of Fibonacci Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 204800/204800 K (Java/ ...
- 【最短路】血色先锋军(scarlet) 解题报告
问题来源 BYVoid魔兽世界模拟赛 [问题描述] 巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物.孤立于联盟和部落的血色先锋军很快就遭 ...
- Appium移动自动化测试(三)--安装Android模拟器(转)
Appium移动自动化测试(三)--安装Android模拟器 2015-06-08 10:33 by 虫师, 30828 阅读, 9 评论, 收藏, 编辑 当Android SDK安装完成之后,并不意 ...
- Freemarker数字转时间
使用freemarker模板,展示一个时间字段,数据库保存的是毫秒.在网上找了许多文章,发现都是针对date或者是直接类似"1999-09-09"这样已经成型字符串进行操作的,心中 ...
- Python监控日志程序
一个简易的日志监控的脚本,功能如下:1.windows环境2.当匹配日志关键字时会发出声音,匹配的关键字不同,播放的声音不同3.能做到实时响应 注意:是在win环境下哦 直接上代码吧 1 2 3 4 ...
- media screen 响应式布局(知识点)
一.什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端--而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网 ...
- 使用IndexReader.repen提高搜索速度
1,使用indexreader创建indexsearcher. 2,indexsearcher在使用完了以后不要关闭. 3.使用indexreader.isCurrent()判断索引是否被indexw ...
- PNG文件格式具体解释
PNG文件结构分析(上:了解PNG文件存储格式) 前言 我们都知道,在进行J2ME的手机应用程序开发的时候,在图片的使用上,我们能够使用PNG格式的图片(甚至于在有的手机上,我们仅仅能够使用PNG ...