JS实现可以用键盘方向键控制的动画


Posted in Javascript onDecember 11, 2020

用JS写一个可以用键盘方向键控制的动画:

效果如下:

JS实现可以用键盘方向键控制的动画

好了,代码如下:

<!DOCTYPE html>
<html lang="en">

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <style>
  body {
   overflow: hidden
  }
  
  img {
   position: absolute;
   top: 0;
   left: 10px;
   width: 100px;
   height: 82px
  }
  
  .right {
   transform: rotateY(180deg)
  }
  
  .top {
   transform: rotateZ(45deg)
  }
  
  .bottom {
   transform: rotateZ(-45deg)
  }
 </style>
</head>

<body>
 <img src="./img//Blue ocean11.png" alt="" class="move-background">
 <script>
  var oImg = document.querySelector("img");

  /* 思路: */
  /* 监听键盘的事件(<- -> 上 下) */
  document.onkeydown = function(e) {
   e = e || window.event;

   var code = e.which || e.keyCode;
   var offset = 10;
   switch (code) {
    case 37:
     console.log("left");
     console.log('innerWidth',innerWidth,oImg.offsetLeft);
     oImg.className = "";
     var left = oImg.offsetLeft - offset;
     if (left <= -oImg.offsetWidth) {
      left = window.innerWidth;
     }
     oImg.style.left = left + "px";
     break;
    case 38:
     console.log("top");
     oImg.className = "top";
     var top = oImg.offsetTop - offset;
     if (top <= -oImg.offsetHeight) {
      top = window.innerHeight;
     }
     oImg.style.top = top + "px";
     break;
    case 39:
     console.log("right");
     oImg.className = "right";
     var left = oImg.offsetLeft + offset;
     if (left >= window.innerWidth) {
      left = -oImg.offsetWidth;
     }
     oImg.style.left = left + "px";
     break;
    case 40:
     console.log("bottom");
     oImg.className = "bottom";
     var top = oImg.offsetTop + offset;
     if (top >= window.innerHeight) {
      top = -oImg.offsetHeight;
     }
     oImg.style.top = top + "px";
     break;
    default:
     break;
   }

   /* 临界值检查 */
  }
 </script>
</body>

</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
juqery 学习之三 选择器 层级 基本
Nov 25 Javascript
Node调试工具JSHint的安装及配置教程
May 27 Javascript
jQuery实现表格行上移下移和置顶的方法
May 22 Javascript
Node.js编写组件的三种实现方式
Feb 25 Javascript
js实现文字列表无缝滚动效果
Jun 23 Javascript
Angular弹出模态框的两种方式
Oct 19 Javascript
jQuery插件Validation表单验证详解
May 26 jQuery
vue cli使用融云实现聊天功能的实例代码
Apr 19 Javascript
小程序实现新用户判断并跳转激活的方法
May 20 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
动态实现element ui的el-table某列数据不同样式的示例
Jan 22 Javascript
JS实现京东商品分类侧边栏
Dec 11 #Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 #Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 #Vue.js
一行JavaScript代码如何实现瀑布流布局
Dec 11 #Javascript
react中hook介绍以及使用教程
Dec 11 #Javascript
js实现菜单跳转效果
Dec 11 #Javascript
jquery实现拖拽小方块效果
Dec 10 #jQuery
You might like
基于PHP生成静态页的实现方法
2013/05/10 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
检测codeigniter脚本消耗内存情况的方法
2015/03/21 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
PHP中mysqli_get_server_version()的实例用法
2020/02/03 PHP
jQuery页面滚动浮动层智能定位实例代码
2011/08/23 Javascript
javascript中简单的进制转换代码实例
2013/10/26 Javascript
jquery+javascript编写国籍控件
2015/02/12 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
JavaScript简单实现弹出拖拽窗口(一)
2016/06/17 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
2017/08/15 jQuery
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
5种Python单例模式的实现方式
2016/01/14 Python
在centos7中分布式部署pyspider
2017/05/03 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
阿波罗盒子:Apollo Box
2017/08/14 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
学习十八届三中全会精神实施方案
2014/02/17 职场文书
同居协议书范本
2014/04/23 职场文书
关于美容院的活动方案
2014/08/14 职场文书
影视广告专业求职信
2014/09/02 职场文书
2014大学生职业生涯规划书最新范文
2014/09/13 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
开工典礼致辞
2015/07/29 职场文书
总结Pyinstaller打包的高级用法
2021/06/28 Python
mysql中int(3)和int(10)的数值范围是否相同
2021/10/16 MySQL
CSS实现五种常用的2D转换
2021/12/06 HTML / CSS