欢迎提供更好的方法!

<!--http://www.cnblogs.com/webzhangnan/p/3244920.html -->
<html>
<head>
<title>IOS shake by conan</title>
<style type="text/css">
.box{
display: -webkit-box;
padding: 20px;
}
.icon{
height: 100px;
width: 100px;
margin: 20px;
background: red;
}
#start{
width: 200px;
height: 60px;
line-height: 60px;
text-align: center;
margin: 10px;
border: 1px solid #ddd;
}
</style>
</head>
<body>
<div class="box">
<div class="icon"></div>
<div class="icon"></div>
<div class="icon"></div>
<div class="icon"></div>
</div>
<div id="start">run shake</div>
<script type="text/javascript">
shake = function($item) {
if ($item.length) {
var timeIdAry = [] , len = $item.length;
while(len--) timeIdAry.push(shake($item[len]));
return function() {
var stop;
while (stop = timeIdAry.shift()) {
stop();
}
}
} else {
var timeId, runing = true,
duration = '-webkit-transition: -webkit-transform 100ms;',
d = false;
var loop = function() {
if (!runing) return;
if(!$item.getAttribute('pause'))
$item.style.cssText = duration + '-webkit-transform: translate3d(' + (d ? 0 : 0) + 'px,' + (d ? 0 : 0) + 'px, 0) rotate(' + (d ? -1 : 1) + 'deg);-webkit-transform-origin: '+(d ? 20 : 80) + '% ' + (d ? 80 : 20) + '%'
d = !d;
timeId = setTimeout(loop, 100);
}
loop();
return function() {
clearTimeout(timeId);
$item.setAttribute('style', '');
delete $item;
loop = null;
itemId = runing = null;
}
}
}
var icons = document.querySelectorAll('.icon');
var stop;
document.querySelector('#start').addEventListener('click', function(){
if(stop) stop(),stop=null,this.innerHTML = 'run shake';
else stop = shake(icons), this.innerHTML = 'kill shake';
}); var s = icons.length , EV = 'ontouchstart' in window ? {start : 'touchstart',end:'touchend'} : {start : 'mouseover',end:'mouseout'};
while(s--){
icons[s].addEventListener(EV.start, function(e){
e.target.setAttribute('pause', 1);
e.target.setAttribute('style', '-webkit-transform: scale(1.5);-webkit-transition: -webkit-transform 100ms;opacity:.5');
});
icons[s].addEventListener(EV.end, function(e){
e.target.setAttribute('pause', '');
});
}
</script> </body>
</html>

最新文章

  1. js计算两个日期的差值
  2. LaTeX用dvi编译,Yap浏览器弹出对话框,决解办法(傻瓜教程)
  3. elasticsearch 文档
  4. 【BZOJ1003】1003: [ZJOI2006]物流运输trans SPFA+DP
  5. iOS:融云即时通讯快速集成
  6. STL之优先队列(1)
  7. c# 甘蔗斗地主1.4存档修改器
  8. ASP.NET中POST数据并跳转页面
  9. 近期刷题的c语言总结。
  10. CFS: 虚拟运行时间
  11. C#程序设计基础——类、对象、方法
  12. spring aop实现原理
  13. RequiredFieldValidator验证下拉列表框
  14. [CSS3备忘] transform animation 等
  15. 显示ubuntu 10.4右上角网络图标
  16. 修改maven项目jdk版本,并解决Dynamic Web Module 3.1 requires Java 1.7 or newer错误
  17. [BZOJ]1003 物流运输(ZJOI2006)
  18. &ldquo;.Net 社区大会&rdquo;(dotnetConf) 2018 Day 1 主题演讲
  19. android 调用 screenrecord 实现录屏
  20. flutter 登录后跳转到根路由

热门文章

  1. 用LAMP构架创建DISCUZ论坛
  2. ubuntu 16.4 安装mysql-python
  3. 版本控制git之一 仓库管理 安装 基础
  4. 2017 计蒜之道 初赛 第一场 A 阿里的新游戏
  5. HTML、CSS常用技巧
  6. hdu 1075 字典树
  7. 新装mvn建第一个项目报错org.apache.maven.plugins:maven-resources-plugin:2.6
  8. 【ZJOI2017 Round1练习】D8T3 stone(Nim游戏)
  9. openjudge6252 带通配符的字符串匹配
  10. SQL SERVER 2012 第三章 T-SQL 基本语句 group by 聚合函数