js鼠标跟随运动效果


Posted in Javascript onMarch 11, 2017

本文实例为大家分享了js鼠标跟随效果展示的具体代码,供大家参考,具体内容如下

1、使用命令创建基本结构ul.cursorPlay#cursorPlay>li*12>a>img+div>span
2、给span标签添加字段
3、设置基本的样式

  • cursorPlay的宽度 992px,高度600px
  • cursorPlay li背景为白色,内边距为8px,外边距5px,显示浮动为左浮动
  • cursorPlay li a,cursorPlay li a img显示为块状并且为相对布局
  • cursorPlay li a添加overflow:hidden
  • 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、使用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 相关文章推荐
直接生成打开窗口代码,不必下载
May 14 Javascript
实现超用户体验 table排序javascript实现代码
Jun 22 Javascript
在服务端(Page.Write)调用自定义的JS方法详解
Aug 09 Javascript
JS操作数据库的实例代码
Oct 17 Javascript
jquery实现键盘左右翻页特效
Apr 30 Javascript
JQuery.Ajax()的data参数类型实例详解
Nov 20 Javascript
实例讲解js验证表单项是否为空的方法
Jan 09 Javascript
解决修复npm安装全局模块权限的问题
May 17 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
js中apply()和call()的区别与用法实例分析
Aug 14 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
详解微信开发中snsapi_base和snsapi_userinfo及静默授权的实现
Mar 11 #Javascript
基于Node.js的WebSocket通信实现
Mar 11 #Javascript
js原生Ajax的封装和原理详解
Mar 11 #Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 #Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 #Javascript
基于Bootstrap框架实现图片切换
Mar 10 #Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 #Javascript
You might like
php中的curl使用入门教程和常见用法实例
2014/04/10 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
Nodejs实现批量下载妹纸图
2015/05/28 NodeJs
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
高性能JavaScript 重排与重绘(2)
2015/08/11 Javascript
如何利用Promises编写更优雅的JavaScript代码
2016/05/17 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
2016/12/28 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
详解webpack-dev-server 设置反向代理解决跨域问题
2018/04/18 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
微信小程序select下拉框实现源码
2019/11/08 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
在Python中调用ggplot的三种方法
2015/04/08 Python
python实现RSA加密(解密)算法
2016/02/17 Python
Python实现将数据库一键导出为Excel表格的实例
2016/12/30 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python pymongo模块用法示例
2018/03/31 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
安装不同版本的tensorflow与models方法实现
2021/02/20 Python
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
出生医学证明样本
2014/01/17 职场文书
硕士生工作推荐信
2014/03/07 职场文书
出国签证在职证明
2014/09/20 职场文书
2014年督导工作总结
2014/11/19 职场文书
mybatis源码解读之executor包语句处理功能
2022/02/15 Java/Android
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android