zoukankan      html  css  js  c++  java
  • 鼠标跟随运动效果

    鼠标跟随运动效果展示
    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、使用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);
    }            
    复制代码
  • 相关阅读:
    使用Struts时,JSP中如何取得各个会话中的参数值?
    JUnit —— TestSuite 的使用
    如何修改 Ubuntu 的字符集?
    如何修改 VIM 制表符的空格数?
    最遥远的距离
    二分法求平方根(Python实现)
    Hadoop 学习之路之MapReduce原理
    JDK 1.8源码阅读 TreeMap
    JDK 1.8源码阅读 HashMap
    JDK 1.8源码阅读 HashSet
  • 原文地址:https://www.cnblogs.com/zhaodahai/p/6831123.html
Copyright © 2011-2022 走看看