jQuery元素跟随鼠标手势滑动【原】

使用jquery编写的简洁易用的鼠标hover交互效果;
可以传递3个参数:
cover[Boolean]: 隐藏元素滑动时是否覆盖默认显示的元素;
speed[Number]: 元素滑动的速度;
easing[String]: 动画缓动效果,需要另外调用jquery.easing.js

<!DOCTYPE html>
<html>
<head>
    <title>mouseDirectorySlide</title>
    <meta charset="utf-8">
</head>
<style>
    *{margin: 0;padding: 0;}
    body{background: #f3f3f3;}
    ul{position: absolute;top: 50%;left: 50%;width: 750px;margin: -250px -375px;overflow: hidden;list-style: none;}
    ul li{float: left;cursor: default;}
    ul li .fore{float: left;width: 250px;height: 250px;font: 18px/250px "Consolas";color: #fff;text-align: center;letter-spacing: 1px;text-transform: capitalize;}
    ul li .box{float: left;width: 150px;padding: 85px 50px;background: #fff;font: 14px/40px "Microsoft YaHei";color: #222;text-align: center;letter-spacing: 1px;}
    ul li.item-1 .fore{background: #c03;}
    ul li.item-2 .fore{background: #393;}
    ul li.item-3 .fore{background: #036;}
    ul li.item-4 .fore{background: #639;}
    ul li.item-5 .fore{background: #0ff;}
    ul li.item-6 .fore{background: #f90;}
</style>
<body>
    <ul>
        <li class="item-1">
            <div class="fore">red</div>
            <div class="box">吉祥 喜气 热烈<br>奔放 激情 斗志</div>
        </li>
        <li class="item-2">
            <div class="fore">green</div>
            <div class="box">和平 希望 宁静<br>自然 成长 生机</div>
        </li>
        <li class="item-3">
            <div class="fore">blue</div>
            <div class="box">美丽 冷静 理智<br>安详 广阔 永恒</div>
        </li>
        <li class="item-4">
            <div class="fore">purple</div>
            <div class="box">优雅 高贵 魅力<br>自傲 神秘 权威</div>
        </li>

        <li class="item-5">
            <div class="fore">cyan</div>
            <div class="box">坚强 希望 古朴<br>庄重</div>
        </li>
        <li class="item-6">
            <div class="fore">orange</div>
            <div class="box">明亮 华丽 兴奋<br>温暖 欢乐 辉煌</div>
        </li>
    </ul>
</body>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script>
    $.fn.mouseDirectorySlide = function(option) {
        var options = $.extend(true, {
            cover: true,
            speed: 300,
            easing: ‘swing‘
        }, typeof option === ‘object‘ && option);

        return $(this).each(function() {
            var $visibleElem = $(this).children(‘:first‘),
                $hiddenElem = $(this).children(‘:last‘);

            if ($(this).css(‘position‘) === ‘static‘) {
                $(this).css(‘position‘, ‘relative‘);
            }

            if ($(this).css(‘overflow‘) === ‘visible‘) {
                $(this).css(‘overflow‘, ‘hidden‘);
            }

            if ($visibleElem.css(‘position‘) === ‘static‘) {
                $visibleElem.css(‘position‘, ‘relative‘);
            }

            $visibleElem.css({
                top: 0,
                left: 0
            });

            $hiddenElem.css({
                position: ‘absolute‘,
                zIndex: 1,
                top: ‘100%‘,
                left: ‘100%‘
            });

            $(this).mouseenter(function(e) {
                if ($(this).is(‘:animated‘)) return;

                e = event || window.event;

                var pointerX = e.pageX,
                    pointerY = e.pageY,
                    width    = $(this).width(),
                    height   = $(this).height(),
                    top      = $(this).offset().top,
                    left     = $(this).offset().left;

                var pointerToTop    = Math.abs(pointerY - top),
                    pointerToBottom = Math.abs(pointerY - top - height),
                    pointerToLeft   = Math.abs(pointerX - left),
                    pointerToRight  = Math.abs(pointerX - left - width);

                var pointerToBorderMin = Math.min(pointerToTop, pointerToRight, pointerToBottom, pointerToLeft),
                    $slideElem = options.cover ? $hiddenElem : $(this).children(),
                    hiddenElemInit = {},
                    slideElemTarget = {},
                    setOriginProp = function() {
                        $slideElem.attr(‘origin-top‘, function() {
                            return $(this).css(‘top‘);
                        });

                        $slideElem.attr(‘origin-left‘, function() {
                            return $(this).css(‘left‘);
                        });
                    };

                switch (pointerToBorderMin) {
                    case pointerToTop:
                        hiddenElemInit = { top: ‘-100%‘, left: 0 };
                        slideElemTarget = { top: ‘+=100%‘ };
                        break;

                    case pointerToRight:
                        hiddenElemInit = { top: 0, left: ‘100%‘};
                        slideElemTarget = { left: ‘-=100%‘ };
                        break;

                    case pointerToBottom:
                        hiddenElemInit = { top: ‘100%‘, left: 0 };
                        slideElemTarget = { top: ‘-=100%‘ };
                        break;

                    case pointerToLeft:
                        hiddenElemInit = { top: ‘0‘, left: ‘-100%‘};
                        slideElemTarget = { left: ‘+=100%‘ };
                        break;
                }

                $hiddenElem.css(hiddenElemInit);

                setOriginProp();

                $slideElem.stop(true, false).animate(slideElemTarget, options.speed, options.easing);

                $(this).mouseleave(function() {
                    $slideElem.each(function() {
                        $(this).stop(true, false).animate({
                            top: $(this).attr(‘origin-top‘),
                            left: $(this).attr(‘origin-left‘)
                        }, options.speed, options.easing);
                    });
                });
            });
        });
    };

    $(‘ul li‘).mouseDirectorySlide();
</script>
</html>
时间: 2024-10-12 20:45:36

jQuery元素跟随鼠标手势滑动【原】的相关文章

jQuery粘性跟随滚动条滚动的导航栏源代码下载

jQuery粘性跟随滚动条滚动的导航栏源代码下载 作者:网页模板 大小:0.005MB 点击次数:3494 发布时间:2014-03-07 12:55 分享到:0 特效介绍 jQuery粘性跟随滚动条滚动的导航栏源代码下载,不兼容IE6.点击导航栏不同的按钮,滑动到不同的内容.滚动条滚动,导航栏会自始至终保持在浏览器可是区域的最顶端. 使用方法 第一步.在head区域引入下面的css样式: 01 <link href="http://fonts.googleapis.com/css?fam

JQuery元素获取

前言:这是本类别博文JQuery即用即查开篇. 因为查手册太麻烦,而且有时候需要深入命令所在详细页面才能了解此命令的具体作用是什么. 写这几篇文章就是为了,工作遇到问题时,一看这几篇文章就可以查到哪个命令的作用正好符合,然后自己再深入手册进行具体学习用法. 写的都是常用的一些,前提是你对jquery命令有一定了解,且有jquery手册. 第一篇:JQuery元素获取常见用法 1.利用标签名获取元素 $("标签名") 2.通过ID获取元素 $("#id_name")

jQuery背景跟随鼠标移动的网页导航

首页 PSD模板 CSS模板 特效插件 源码下载 酷站欣赏 建站资源 建站教程 心境之旅 在线留言 设为首页 加入收藏 我要投稿 联系站长 Search 首页 PSD模板 CSS模板 特效插件 源码下载 酷站欣赏 建站资源 建站教程 心境之旅 在线留言 滚动图片 广告特效 选项卡特效 鼠标特效 表单按钮 表格图层 窗口特效 文字特效 色彩特效 图像特效 日期特效 导航菜单 在线客服 当前位置:模板网首页 > 特效插件 > 导航菜单 >  jQuery背景跟随鼠标移正文 jQuery背景跟

事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流

一.事件冒泡定义 事件冒泡是指在一个对象触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,甚至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层级的最顶层,即document对象(有些浏览器是window).. 二.事件冒泡的作用 事件冒泡允许多个操作被集中处理(把事件处理器添加到一个父级元素上,避免把事件处理器添加到多个子级元

通用元素跟随鼠标移动效果

封装鼠标指针定位是一件很有意义的事情,这样在日常开发中就不需要再为鼠标指针定位问题而犯愁了. 设计思路:能够根据传递的具体对象,以及相对鼠标指针的偏移值,即命令该对象能够跟随鼠标移动. JS代码: function getMousePos(o,x,y,event){ //o-->对象;x,y-->相对鼠标指针的偏移距离;event-->事件对象; var posX = 0,posY = 0; //临时变量 var event = event || window.event; //标准化事

jQuery层动画定位滑动效果代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>jQuery层动画定位滑动</title&

javascript元素跟随鼠标在指定区域运动

元素跟随鼠标在指定区域运动通常是用在商城图片的放大镜中,下面是完整的Demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>鼠标区域</title> <style type="text/css"> *{margin:0;padding:0;} .area{ width:

jquery元素的历遍

今天遇到的问题是,jQuery元素的历遍要使用jquery自己的each函数 例如 $('.img_big').each(function(){ $(this).text() }) 如果用js的for循环历遍,元素就得使用js原生的方法进行操作

基于jQuery超级酷动画滑动插件

分享一款基于jQuery超级酷动画滑动插件.这是一款基于jquery.pogo-slider插件实现的多个滑块切换特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="pogoSlider" id="js-main-slider"> <div class="pogoSlider-slide" data-transition="slideOverLeft" data-