利用jQuery实现,蒙板随鼠标滑入滑出

今天学习了jQuery的一些知识点,做了一个练习:实现蒙板随鼠标移动,从元素的四个方向滑入滑出。如图:

jQuery知识点:

定位:获取相对于父元素的偏移量
           position().left
           position().top

获取元素相对于当前窗口的偏移量
           offset().left
           offset().top

步骤:

1、创建父元素、当前对象、蒙板

代码如下:

<div class="wrap">
     <div id="id01"></div>
     <div class="mb"></div>
</div>

其中,类名与id名可随意更改,这里创建四组,如完整代码

2、进行样式编写

<style>    body{        padding: 100px 200px;        margin: 0;    }    .wrap{        position: relative;        width: 102px;        height: 102px;        border: 1px solid purple;        overflow: hidden;           //将蒙板隐藏起来        float: left;        margin: 100px 5px 0 5px;    }    #id01,#id02,#id03,#id04{        position: absolute;        width: 100px;        height: 100px;        background: mediumpurple;        margin:1px;    }    .mb{        width: 100px;        height: 100px;        background: black;        opacity: 0.6;        position: absolute;    }</style>

3、蒙板随鼠标滑入

编写滑入函数slideIn(),代码如下
function slideIn(e){    var p_left=$(this).parent().offset().left;     //获取父元素相对于浏览器的左侧距离    var p_top=$(this).parent().offset().top;       //获取父元素相对于浏览器的上侧距离

    var v_left=$(this).offset().left;              //对象元素相对于当前窗口左侧偏移量    var v_top=$(this).offset().top;                    var v_width=$(this).width();                   //当前元素的宽    var v_height=$(this).height();                 

    var v_pleft=$(this).position().left;           //当前元素相对于父元素的偏移量、左侧    var v_ptop=$(this).position().top;             

    /*获取鼠标当前位置坐标*/    var x= e.pageX;     var y= e.pageY;

    /*判断鼠标滑入元素的方向*/    if(x>v_left && x<v_left+v_width && (y<(v_top+v_height) && y>(v_top+v_height-3))){        //下进          $(this).next().css({left:v_pleft,top:(v_ptop+v_height)});     //初始进入位置        $(this).next().animate({top:v_top-p_top+"px"},500);           //动画,0.5s移动到指定位置    }    if(x>v_left && x<v_left+v_width && (y>v_top-3 && y<(v_top+3))){                          //上进        $(this).next().css({left:v_pleft,top:(v_ptop-v_height)});        $(this).next().animate({top:v_ptop},500);    }    if(y>v_top && y<v_top+v_height && (x<(v_left+v_width+3) && x>(v_left+v_width-3))){       //右进        $(this).next().css({top:v_ptop,left:(v_pleft+v_width)});        $(this).next().animate({left:v_left-p_left+"px"},500);    }    if(y>v_top && y<v_top+v_height && (x>v_left-3 && x<(v_left+3))){                         //左进        $(this).next().css({top:v_ptop,left:(v_pleft-v_width)});        $(this).next().animate({left:v_pleft},500);    }
编写滑出函数slideOut(),代码如下
if(x>v_left && x<v_left+v_width && (y<(v_top+v_height+5) && y>(v_top+v_height-3))){           //下出    $(this).next().animate({top:v_ptop+v_height+p_top+"px"},500);}if(x>v_left && x<v_left+v_width && (y>v_top-5 && y<(v_top+3))){                               //上出    $(this).next().animate({top:(v_ptop-v_height)},500);}if(y>v_top && y<v_top+v_height && (x<(v_left+v_width+5) && x>(v_left+v_width-3))){            //右出    $(this).next().animate({left:(v_pleft+v_width)},500);}if(y>v_top && y<v_top+v_height && (x>v_left-5 && x<(v_left+3))){                              //左出    $(this).next().animate({left:(v_pleft-v_width)},500);}

将函数封装成js文件

4、调用函数
$(".mb").css({left:"100px",top:"100px"});   //蒙板初始位置,便于隐藏$("#id01").mouseover(slideIn);$("#id01").mouseout(slideOut);$("#id02").mouseover(slideIn);$("#id02").mouseout(slideOut);$("#id03").mouseover(slideIn);$("#id03").mouseout(slideOut);$("#id04").mouseover(slideIn);$("#id04").mouseout(slideOut);
HTML完整代码:
<!DOCTYPE html><html><head lang="en">    <meta charset="UTF-8">    <title></title>    <script src="js/jquery-1.8.2.js"></script>   //引入jQuery包    <script src="js/jquery-slide-yw.js"></script>  //引入封装函数包    <style>        body{            padding: 100px 200px;            margin: 0;        }        .wrap{            position: relative;            width: 102px;            height: 102px;            border: 1px solid purple;            overflow: hidden;            float: left;            margin: 100px 5px 0 5px;        }        #id01,#id02,#id03,#id04{            position: absolute;            width: 100px;            height: 100px;            background: mediumpurple;            margin:1px;        }        .mb{            width: 100px;            height: 100px;            background: black;            opacity: 0.6;            position: absolute;        }    </style>    <script>        $(function(){            $(".mb").css({left:"100px",top:"100px"});            $("#id01").mouseover(slideIn);            $("#id01").mouseout(slideOut);            $("#id02").mouseover(slideIn);            $("#id02").mouseout(slideOut);            $("#id03").mouseover(slideIn);            $("#id03").mouseout(slideOut);            $("#id04").mouseover(slideIn);            $("#id04").mouseout(slideOut);        })    </script></head><body><div class="wrap">    <div id="id01"></div>    <div class="mb"></div></div><div class="wrap">    <div id="id02"></div>    <div class="mb"></div></div><div class="wrap">    <div id="id03"></div>    <div class="mb"></div></div><div class="wrap">    <div id="id04"></div>    <div class="mb"></div></div></body></html>
 
 
 
 
时间: 2024-10-05 17:16:44

利用jQuery实现,蒙板随鼠标滑入滑出的相关文章

jQuery动画效果之滑入滑出slideDown,slideUp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <title>滑入滑出</title> <meta charset="UTF-8"> <style type="text/css&q

JS——侧栏导航点击滑入滑出效果

对于定位的侧栏导航点击滑入滑出这一效果,我想很多人都明白原理,并且很简单的就能运用JS+Jquery就能做出.而且是一个非常常见的简单效果.在此呢,小码哥只是为了自己以后能够翻看,还有就是给那些刚入门javascript的新人们一点启发. 作为入门javascript的人来说,明白一个效果是怎么实现的尤为重要.即原理是怎么回事尤为重要!小码哥昨天在路上偶遇一应届毕业生,刚从青岛来北京找工作.是学计算机的,C及C++起步,由此基础,我说你学什么语言都有优势.必定逻辑基础有了不是!? 废话不说了,直

WPF技术触屏上的应用系列(五): 图片列表异步加载、手指进行缩小、放大、拖动 、惯性滑入滑出等效果

原文:WPF技术触屏上的应用系列(五): 图片列表异步加载.手指进行缩小.放大.拖动 .惯性滑入滑出等效果 去年某客户单位要做个大屏触屏应用,要对档案资源进行展示之用.客户端是Window7操作系统,54寸大屏电脑电视一体机.要求有很炫的展示效果,要有一定的视觉冲击力,可触控操作.当然满足客户的要求也可以有其它途径.但鉴于咱是搞 .NET技术的,首先其冲想到的微软WPF方面,之前对WPF的了解与学习也只是停留在比较浅的层面,没有进一步深入学习与应用.所以在项目接来以后,也就赶鸭子上架了,经过努力

ios 页面滑入滑出

从左边滑进 CGRect r1,r2; r1 = app.testview.view.frame; r2 = self.view.frame; [app.testview.view setFrame:CGRectMake(320, r1.origin.y,r1.size.width,r1.size.height)]; [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.4]; [app.window a

类似通讯录分组的Android PinnedSectionListView,且分组标签悬停滑入滑出

 <类似通讯录分组的Android PinnedSectionListView,且分组标签悬停滑入滑出> 常用的联系人.通讯录,会按照联系人的姓氏从A,B,C,,,X,Y,Z,这样归类排列下去,方便用户快速查找和定位.PinnedSectionListView是一个第三方的开源框架,在github上的链接地址是:https://github.com/beworker/pinned-section-listview .Android PinnedSectionListView不仅是一个实现上

鼠标滑入滑出事件

$("#clo").mouseover(function(){//当id为clo的元素 鼠标滑入将id为hint_closs元素显示 $("#hint_closs").show(); }); $("#clo").mouseout(function(){//当id为clo的元素 鼠标滑出将id为hint_closs元素隐藏       $("#hint_closs").hide(); });

div层的滑入滑出实例

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> <script src

广告条滑入滑出

在html正文上面有一个广告,让整个文本向下滑动,让广告显示,然后再让广告滑到上面 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>广告条滚动</title> <style type="text/css"> *{ padding: 0px; margin: 0 auto;

jq_从右向右的滑入滑出效果

1 <!DOCTYPE html> 2 <html> 3 4 <head> 5 <meta charset="UTF-8"> 6 <title></title> 7 <style type="text/css"> 8 * { 9 margin: 0; 10 padding: 0; 11 } 12 13 html, 14 body { 15 height: 100%; 16 overf