js实现鼠标跟随运动效果


Posted in Javascript onAugust 02, 2020

鼠标跟随运动效果展示

1、使用命令创建基本结构ul.cursorPlay#cursorPlay>li*12>a>img+div>span

2、给span标签添加字段

3、设置基本的样式

1、cursorPlay的宽度 992px,高度600px
2、cursorPlay li背景为白色,内边距为8px,外边距5px,显示浮动为左浮动
3、cursorPlay li a,cursorPlay li a img显示为块状并且为相对布局
4、cursorPlay li a添加overflow:hidden
5、cursorPlay li a div为绝对布局,宽度和高度均为100%,设置背景颜色为rgba

4、js添加动态效果(方向0,1,2,3分别为上,右,下,左)

1)、给绑定鼠标进入或者出去的事件

$("#cursorPlay li").on("mouseenter mouseleave",function(event){
var evType = event.type;
var direction = getDir($(this), {
x: event.pageX,
y: event.pageY
});
// console.log("evtype:"+evType+",dir:"+direction);
moveTo($(this),direction, evType);
});
2、

2)、使用getDir获取鼠标移动的方向,coordinates坐标

计算鼠标划入画出方向函数(搜索关键词“jquery计算鼠标划入划出方向”)

direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4;
function getDir($el, coordinates){
var w = $el.width(),
h = $el.height(),
x = (coordinates.x - $el.offset().left - (w / 2)) * (w > h ? (h / w) : 1),
y = (coordinates.y - $el.offset().top - (h / 2)) * (h > w ? (w / h) : 1),
direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4;
return direction;
}

3)、添加移动函数moveTo,三个参数分别为选择器,方向,鼠标划入画出类型,通过判断鼠标划入类型,来自定义选择器初始位置,然后重定义css样式,当鼠标划出时再重定义每个方向上的位置

function moveTo($el, direction, type){
 var $layer = $el.find("div");
 var coord = {};
 if(type === "mouseenter"){
  switch(direction){
   case 0 :  $layer.css("top","-100%").css("left","0px");break;
  case 1 : $layer.css("left","100%").css("top","0px");break;
  case 2 : $layer.css("top","100%").css("left","0px");break;
  case 3 : $layer.css("left","-100%").css("top","0px");break;
 }
  coord = {left:0,top:0}
 }else{
 switch(direction){
  case 0 : coord = {left:0,top:'-100%'};break;
  case 1 : coord = {left:'100%',top:0};break;
  case 2 : coord = {left:0,top:'100%'};break;
  case 3 : coord = {left:'-100%',top:0};break;
 }
}
$layer.animate(coord,300);
}

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

Javascript 相关文章推荐
js类中获取外部函数名的方法
Aug 19 Javascript
javascript FormatNumber函数实现方法
Dec 30 Javascript
JavaScript DOM学习第四章 getElementByTagNames
Feb 19 Javascript
基于Jquery的仿照flash放大图片效果代码
Mar 16 Javascript
js在数组中删除重复的元素自保留一个(两种实现思路)
Aug 22 Javascript
node.js中使用socket.io的方法
Dec 15 Javascript
jquery中toggle函数交替使用问题
Jun 22 Javascript
Bootstrap媒体对象的实现
May 01 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
Jan 19 Javascript
vue-cli如何添加less 以及sass
Jul 06 Javascript
Vue 中可以定义组件模版的几种方式
Aug 06 Javascript
一个手写的vue放大镜效果
Aug 09 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
Sep 05 #Javascript
javascript观察者模式实现自动刷新效果
Sep 05 #Javascript
js使用generator函数同步执行ajax任务
Sep 05 #Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 #Javascript
详解Vue2.0 事件派发与接收
Sep 05 #Javascript
JavaSctit 利用FileReader和滤镜上传图片预览功能
Sep 05 #Javascript
jQuery实现注册会员时密码强度提示信息功能示例
Sep 05 #jQuery
You might like
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
表单元素事件 (Form Element Events)
2009/07/17 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
Javascript中找到子元素在父元素内相对位置的代码
2012/07/21 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
jquery实现点击弹出可放大居中及关闭的对话框(附demo源码下载)
2016/05/10 Javascript
Jquery Easyui表单组件Form使用详解(30)
2016/12/19 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
View.post() 不靠谱的地方你知道多少
2017/08/29 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
2017/12/05 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
Vue中computed及watch区别实例解析
2020/08/01 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python中的生成器和yield详细介绍
2015/01/09 Python
使用Python的内建模块collections的教程
2015/04/28 Python
Python进阶篇之字典操作总结
2016/11/16 Python
Python队列的定义与使用方法示例
2017/06/24 Python
Python中pillow知识点学习
2018/04/30 Python
python用post访问restful服务接口的方法
2018/12/07 Python
python:目标检测模型预测准确度计算方式(基于IoU)
2020/01/18 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
全天然狗零食:Best Bully Sticks
2016/09/22 全球购物
语文高效课堂实施方案
2014/05/03 职场文书
和谐社区口号
2014/06/19 职场文书
雷人标语集锦
2014/06/19 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
销售口号霸气押韵
2015/12/24 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python
图文详解nginx日志切割的实现
2022/01/18 Servers