南宁鼠标价格社区

javascript制作智能鼠标感知遮罩层,打造实用美食菜单

只看楼主 收藏 回复
  • - -
楼主


知识点:div盒子模型, css常用标签讲解, 列表与浮动, 相对定位与绝对定位, 蒙版层实现原理, jQuery实现智能鼠标感知event对象 , 正确的布局习惯与编程思维。


需要更多企业常用学习案例,项目实战,学习方法可以加一下我的前端群611256580,每天都会精选一个特效分享!

javascript智能鼠标感知遮罩层源码:



<!DOCTYPE HTML>

<html>

<head>

<title>index</title>

<meta charset="utf-8">

<meta name="Author" content="潭州学院-海牙">

<style type='text/css'>

* { margin: 0; padding: 0; }


body { background-color: #434343; }


img { display: block; }


#box { box-shadow: 0 0 8px #ffffff; background-color: #222222; width: 800px; height: auto; margin: 50px auto; padding: 20px; overflow: hidden }


#box ul li { margin: 10px 15px; list-style: none; float: left; border: 2px solid #cccccc; position: relative; overflow: hidden; }


.text {  width: 164px; height: 220px; position: absolute; background: #00b38a; left: 0px; top: -220px; background: url(images/new-bg.png); }


.text h2 { font-size: 24px; height: 24px; line-height: 24px; font-weight: bold; margin: 10px 8px 8px; font-weight: 400; text-align: center; color: #ffffff; padding-top: 30px; border-bottom: 1px dashed #ffffff; padding-bottom: 10px }


.text p { font-size: 14px; margin: 6px 8px; line-height: 18px; color: #ffffff; font-weight: 300;text-indent:2em; }


.text .btn { position: absolute; bottom: 5px; left: 0; right: 0; margin: auto; width: 58px; font-size: 14px; display: block; padding: 5px; background: #0ab5da; border-radius: 5px; line-height: 20px; cursor: pointer;box-shadow:0 0 8px 4px #08778F inset ,0 0 4px #08778f;}


.text .btn a { color: #fff7fb; font-size: 14px; text-decoration: none;text-align: center;}

</style>

<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>


</head>

<body>


<div id="box">

<ul>

<li>

<img src="images/1.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>杏鲍菇培根卷</h2>

<p>给大家带来一道喜庆点的菜,杏鲍菇培根卷.美味的杏鲍菇和培根都是饕餮精品</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/2.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>牙签肉</h2>

<p>肉切合适大小的块,加生抽,盐,花椒粉用手抓匀,腌制30分钟。</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/3.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>豆腐卷</h2>

<p>方这边吃豆腐卷是很多的,对于自己来说,隔几天不吃就会馋得慌.</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/4.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>南瓜煲</h2>

<p>菜品特色,粥约会糯,味鲜咸清香,属 利尿食谱 老人食谱 糖尿病食谱 贫血食谱</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/5.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>皮蛋拌豆腐</h2>

<p>健康功效香菜:健胃、透疹、增强免疫力 豆腐:清热泻火、益气、解毒</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/6.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>红烧鲤鱼</h2>

<p>无论是海鱼还是淡水鱼,家常红烧的做法大同小异,本次用到的海鱼,叫不上名字,不是当地常见的海鱼.</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/7.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>红烧茄子</h2>

<p>烧茄子是我个人比较喜欢的一道菜,但每次做都很难做出餐馆里那种咸鲜回甜,酱香浓郁,色泽美观的烧茄子。</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/8.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>凉拌西蓝花</h2>

<p>凉拌西兰花灿灿烂烂,新的一周又开始了,迎着明媚的阳光,灿烂上菜菜啦!</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/1.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>杏鲍菇培根卷</h2>

<p>给大家带来一道喜庆点的菜,杏鲍菇培根卷.美味的杏鲍菇和培根都是饕餮精品</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/2.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>牙签肉</h2>

<p>肉切合适大小的块,加生抽,盐,花椒粉用手抓匀,腌制30分钟。</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/3.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>豆腐卷</h2>

<p>方这边吃豆腐卷是很多的,对于自己来说,隔几天不吃就会馋得慌.</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

<li>

<img src="images/4.jpg" width="164" height="220" alt="#">

<div class="text">

<h2>南瓜煲</h2>

<p>菜品特色,粥约会糯,味鲜咸清香,属 利尿食谱 老人食谱 糖尿病食谱 贫血食谱</p>

<span class="btn"><a href="http://web.tanzhouedu.com/" target="_blank">点击查看</a></span>

</div>

</li>

</ul>

</div>

<script>

/*鼠标方位感知遮罩层 js*/

(function () {

/*获取 li */

var $Tz_li = $("#box ul li");

//li 鼠标移入事件 $.hover(function(){},funciton(){})

$Tz_li.hover(function (ev) {//鼠标移入

ev=ev||window.event;    //兼容性

move.call(this, ev, true);

}, function (ev) {//鼠标移出

ev=ev||window.event;

move.call(this, ev, false);

});

/*事件函数 move*/

function move(ev, bool) {//参数 ev 鼠标对象 bool 区分移入移除

/*获取当前对象 顶部相对于当前文档的顶部的位置(top)/底部的相对位置(bottom)/左边相对于文档左侧的位置(left)/右边相对位置(right) */

var top = $(this).offset().top,

bottom = top + $(this).height(),

left = $(this).offset().left,

right = left + $(this).width();

/*获取当前鼠标的坐标位置 pageX:鼠标相对于整个页面的x坐标 pageY:鼠标相对于整个页面的Y坐标*/

var x = ev.pageX,

y = ev.pageY;

/*取得鼠标相对于盒子各个边的位置并取绝对值*/

var sT = Math.abs(y - top),

sB = Math.abs(y - bottom),

sL = Math.abs(x - left),

sR = Math.abs(x - right);

var min = Math.min(sT, sB, sL, sR)//找出其中最小的值,说明鼠标是从最小值的方位进入的

switch (min) {

//如果最小值是sT ,说明鼠标是从盒子顶部进入的

case sT:

if (bool) {

// 如果是要移入.我们就让.text先定位到盒子的上方

$(this).find(".text").css({

left: 0,

top: "-220px"

}).stop().animate({//然后从上方进行动画向下划入,下面的原理一样,不再赘述

top: "0"

}, 200)

} else {//如果是移出.就让遮罩层自下向上移动到-117px的定位位置

$(this).find(".text").stop().animate({

top: "-220px"

}, 200)

}

break;

case sB:

if (bool) {

$(this).find(".text").css({

left: 0,

top: "220px"

}).stop().animate({

top: "0"

}, 200)

} else {

$(this).find(".text").stop().animate({

top: "220px"

}, 200)

}

break;

case sL:

if (bool) {

$(this).find(".text").css({

left: "-164px",

top: 0

}).stop().animate({

left: 0

}, 200)

} else {

$(this).find(".text").stop().animate({

left: "-164px"

}, 200)

}

break;

case sR:

if (bool) {

$(this).find(".text").css({

left: "164px",

top: 0

}).stop().animate({

left: 0

}, 200)

} else {

$(this).find(".text").stop().animate({

left: "164px"

}, 200)

}

break;

default:

return;

}

}

})();

</script>

</body>

</html>




ps.微信公众号每天会推送最新,最炫酷的知识点,案例特效,敬请关注~~

文档源码已上传群文件,有需要的效果版可以加群获取

点击“阅读原文”也可加入群






举报 | 1楼 回复

友情链接