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 相关文章推荐
用函数式编程技术编写优美的 JavaScript_ibm
May 16 Javascript
js汉字转拼音实现代码
Feb 06 Javascript
JavaScript中伪协议 javascript:使用探讨
Jul 18 Javascript
JS是按值传递还是按引用传递
Jan 30 Javascript
一道常被人轻视的web前端常见面试题(JS)
Feb 15 Javascript
基于bootstrap-datetimepicker.js不支持IE8的快速解决方法
Nov 07 Javascript
详解JS异步加载的三种方式
Mar 07 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
Jun 01 Javascript
解决webpack -p压缩打包react报语法错误的方法
Jul 03 Javascript
详解webpack多页面配置记录
Jan 22 Javascript
vue中使用v-model完成组件间的通信
Aug 22 Javascript
vue.js实现双击放大预览功能
Jun 23 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
一个目录遍历函数
2006/10/09 PHP
在smarty中调用php内置函数的方法
2013/02/07 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
PHP中list方法用法示例
2016/12/01 PHP
JavaScript版代码高亮
2006/06/26 Javascript
JavaScript toFixed() 方法
2010/04/15 Javascript
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
nodejs读取本地中文json文件出现乱码解决方法
2018/10/10 NodeJs
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
windows上安装Anaconda和python的教程详解
2017/03/28 Python
对python实时得到鼠标位置的示例讲解
2018/10/14 Python
python 对多个csv文件分别进行处理的方法
2019/01/07 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
彻底搞懂python 迭代器和生成器
2020/09/07 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
最新的大学生找工作自我评价
2013/09/29 职场文书
求职自荐信格式
2013/12/04 职场文书
超市创业计划书
2014/04/24 职场文书
服装店员工管理制度
2015/08/07 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
Go中的条件语句Switch示例详解
2021/08/23 Golang
MySQL 主从复制数据不一致的解决方法
2022/03/18 MySQL
Win11更新失败并提示0xc1900101
2022/04/19 数码科技