js之方向检测

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>方向检测</title>
    <style type="text/css">
        * {
            margin: 0;
            padding: 0;
        }
        ul {
            list-style: none;
        }
        #box {
            margin: 30px auto;
            width: 1250px;
            overflow: hidden;
        }
        #box li{
            position: relative;
            float: left;
            width: 250px;
            height: 250px;
            overflow: hidden;
        }
        #box li img {
            width: 100%;
            height: 100%;
        }
        #box li .shadow {
            position: absolute;
            left: -1000px;
            top: 0;
            width: 100%;
            height: 100%;
            line-height: 100px;
            font-size: 30px;
            text-align: center;
            background: rgba(255, 255, 255, .4);
        }
    </style>
</head>
<body>
    <ul id="box">
        <li>
            <img src="images/1.png" >
            <div class="shadow">第1页</div>
        </li>
        <li>
            <img src="images/2.png" >
            <div class="shadow">第2页</div>
        </li>
        <li>
            <img src="images/3.png" >
            <div class="shadow">第3页</div>
        </li>
        <li>
            <img src="images/4.png" >
            <div class="shadow">第4页</div>
        </li>
        <li>
            <img src="images/5.png" >
            <div class="shadow">第5页</div>
        </li>
    </ul>
    <script src="https://cdn.bootcss.com/jquery/1.12.1/jquery.js"></script>
    <script>
        $(‘#box li‘).bind(‘mouseenter mouseleave‘, function (e) {
            var w = $(this).width();
            var h = $(this).height();
            var x = (e.pageX - this.offsetLeft - (w / 2)) * (w > h ? (h / w) : 1);
            var y = (e.pageY - this.offsetTop - (h / 2)) * (h > w ? (w / h) : 1);
            var direction = Math.round((((Math.atan2(y, x) * (180 / Math.PI)) + 180) / 90) + 3) % 4;

            if(e.type === ‘mouseenter‘) {
                var startPos = {left: 0, top: 0};
                switch(direction) {
                    case 0:
                        startPos = {left: 0, top: -h};
                        break;
                    case 1:
                        startPos = {left: w, top: 0};
                        break;
                    case 2:
                        startPos = {left: 0, top: h};
                        break;
                    case 3:
                        startPos = {left: -w, top: 0};
                        break;
                }

                $(this).children(‘.shadow‘).css(startPos).stop(true).animate({left: 0, top: 0});
            } else if(e.type === ‘mouseleave‘) {
                var endPos = {left: 0, top: 0};
                switch(direction) {
                    case 0:
                        endPos = {left: 0, top: -h};
                        break;
                    case 1:
                        endPos = {left: w, top: 0};
                        break;
                    case 2:
                        endPos = {left: 0, top: h};
                        break;
                    case 3:
                        endPos = {left: -w, top: 0};
                        break;
                }

                $(this).children(‘.shadow‘).stop(true).animate(endPos);
            }
        });
    </script>
</body>
</html>

以上图片路径更换即可。

原文地址:https://www.cnblogs.com/bgwhite/p/9476286.html

时间: 2024-08-30 17:34:29

js之方向检测的相关文章

【回忆1314】鼠标离开方向检测

直接看效果点这里 <html> <head>鼠标离开方向检测</head> <body> <div id="msg">鼠标放到框上,然后移开.</div> <div id="wrap" style="width:200px; height: 100px; line-height:30px; margin: 100px auto; text-align: center; borde

js通用方法检测浏览器是否已安装指定插件(IE与非IE通用)

/* * 检测是否已安装指定插件 * * pluginName 插件名称 */ function checkPlugins(pluginName) { var np = navigator.plugins; if (window.ActiveXObject) { // IE // ActiveXObject的对象名 var activexObjectName = pluginName + "." + pluginName; try { var axobj = eval("ne

js 数据类型及其检测方法

1.js数据类型分类: a.基本类型:string.number.undefined.null.boolean b.引用类型: 其他任何一种对象.Object. 2.typeof 操作符可以方便的检测出 string.number.undefined.boolean. typeof 1.1;"number" typeof '';"string" typeof undefined;"undefined" typeof true;"bool

js 正则之检测素数

相信很多人应该看过这篇文章,我第一次看到的时候是11年的样子,那时候学vbs的时候看过这个问题.原文<检查素数的正则表达式>,在文章里已经解释了他是怎么判断的,我就不啰嗦了.我们来说说 js 如何实现它吧. 先来看看什么是素数,在<质数 - 百度百科>里有详细的说明,而且也说了一些求素数的方法,什么6N+1法等..这些什么算法都不是我们要谈的,我们只说正则. 在那篇文章里给出的正则是 /^1?$|^(11+?)\1+$/其实我觉得完全没必要检测 0 1 之类的,因为根据百度百科里的

js/css 检测移动设备方向的变化 判断横竖屏幕

最近做的站点是既要电脑各个浏览器能访问,ipad又要能访问,ipad又分几种,又有横竖屏区别,需要考虑的东西还是很多.下面是一些区分横竖屏的代码. 方法一:用触发手机的横屏和竖屏之间的切换的事件 window.addEventListener("orientationchange", function() { // 宣布新方向的数值 alert(window.orientation); }, false); // 方法二:监听调整大小的改变 /* portrait */ @media

【JavaScript】js简易实现检测系统字体是否存在

来自ampedZ的博客园,原文地址:http://www.cnblogs.com/ampedZ/p/CheckFont.html 原理是根据设置span的字体,如果系统不存在指定名称对应的字体,则会以默认字体显示. 根据对比指定字体和默认字体的offsetWidth.offsetHeight值,以判断字体是否存在. 通过一个杜撰的字体名称来设置默认字体. 一般说来,span指定的文本越复杂,准确度越高. <!DOCTYPE html> <html><head><s

JS 校验,检测,验证,判断函数集合

http://jc-dreaming.iteye.com/blog/754690 /** *判断对象是否为空 *Check whether string s is empty. */  function isEmpty(s)  {  return ((s == undefined || s == null || s == "") ? true : false);  } js检测是否为数字 http://hi.baidu.com/zhoufeng0401/blog/item/bb18f9

【JS】类型检测

本文首发于我的个人博客 : http://cherryblog.site/ 前言 js 中的类型检测也是很重要的一部分,所以说这篇文章我们就来讲一下怎么对 JavaScript 中的基本数据类型进行检测.其实这也是在读 Zepto 源码中学习到的,所以阅读源码对我们的提升还是很有帮助的.本文基于参考了前辈们的文章之后个人理解此文写的有不当的地方,请各位大佬指正. 其实常规方法主要有四种 typeof instanceof Object.prototype.toString construcor

js数组类型检测

一.typeof检测给定变量的数据类型: 语法:typeof 变量 未定义undefined:undefined boolean:boolean 字符串:string 数值:number 对象:object null:object 函数:function 数组(也是对象):object 二.instanceof 语法:变量 instanceof Array 如果是数组的话返回true,操作undefined和null会报错:检测其他类型的变量会返回false. 三.ECMAScript5新增了A