JQuery仿购物网站放大镜特效所遇问题及思考
JQuery仿购物网站放大镜特效所遇问题及思考
先贴下效果图,然后描述起来也就不会不知道我在说什么了。

我碰到的问题一: 一开始我自己总结了是因为两个小原因导致的①使用了mouseover,mouseout事件②因为层叠样式(z-index)的原因。一开始的HTML结构如图:
<ul>
<li class="first">
<img src="./image/ep.jpg" alt="">
<div class="tipbox"></div>
</li>
<div class="firBox">
<img src="./image/ep.jpg" alt="">
</div>
</ul>
我的思路是:一开始.firBox, .tipbox是隐藏的,当鼠标mouseover到li元素时,出现放大镜(.tipbox)和相应的放大区域(.firBox);而鼠标mouseout出li元素时,则隐藏二者。问题就出在这里了,我鼠标移动到li元素中,放大镜出现后就会莫名奇妙的消失了。然后我分析了是因为层叠样式导致的(并没有深刻理解mouseover,mouseout会冒泡,移入移出子元素也会触发mouseover,mouseout事件)。为搞清楚触发的顺序和层叠样式产生的影响,我参考了W3C的mouseover,mouseenter的区别例子,并在原来代码的基础上进行了测试。得出了结论:① 不论子元素的层叠样式多大,mouseover,mouseout在子元素还是会触发,而mouseenter,mouseleave在子元素还是不会触发。②若从父元素到子元素则会触发父元素的mouseout事件再触发子元素的mouseover事件,若从子元素到父元素则会触发子元素的mouseout事件再出来子元素的mouseover事件。贴出我改动的代码,感兴趣的可以按照自己需求改,得出自己的结论。
<html>
<head>
<style>
.over > h2 {
position: absolute;
z-index: 10;
display: none;
}
.enter > h2{
position: absolute;
z-index: 10;
}
</style>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
x=0;
y=0;
$(document).ready(function(){
$("div.over").mouseover(function(e){
$("div.over").find("h2").css('display', 'block');
$(".over span").text(x+=1);
alert('over'+ e.target);
});
$("div.over").mouseout(function(e) {
$("div.over").find("h2").css('display', 'none');
alert('out'+e.target);
});
$("div.enter").mouseenter(function(){
$(".enter span").text(y+=1);
alert('enter');
});
$("div.enter").mouseleave(function(){
alert('leave');
})
});
</script>
</head>
<body>
<p>不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。</p>
<p>只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。</p>
<div class="over" style="background-color:lightgray;padding:20px;width:40%;float:left;height: 100px">
<h2 style="background-color:white;height: 90px;">被触发的 Mouseover 事件:<span></span></h2>
</div>
<div class="enter" style="background-color:lightgray;padding:20px;width:40%;float:right;height: 100px">
<h2 style="background-color:white;">被触发的 Mouseenter 事件:<span></span></h2>
46 </div>
</body>
</html>
最后我得出了结论是因为事件的冒泡导致的,和层叠颜样式并无关系。然后我进行了改进使用一个空的透明DIV,宽高与li元素一样大小,覆盖在其上,z-index为2,.tipbox的z-index为1。最后对空的透明DIV使用JQ的hover()方法和mousemove()方法可完美解决。(注意:hover()方法是用来替代mouseenter,mouseleaver事件的,因此没有冒泡存在).
HTML结构:
<ul>
<li class="first">
<img src="./image/ep.jpg" alt="">
<!-- 空的透明DIV -->
<div class="zzc"></div>
<div class="tipbox"></div>
</li>
<div class="firBox">
<img src="./image/ep.jpg" alt="">
</div>
</ul>
.zzc的CSS样式:
.zzc {
width: 100%;
height: 100%;
left:;
top:;
z-index:;
cursor: crosshair;
}
.tipbox的CSS样式:
.tipbox {
width: 80px;
height: 60px;
bottom:;
left:;
background: rgba(0,0,0,0.5);
display: none;
z-index:;
}
看来虽然内容不多,但是在第一次做的过程中还是躺了,然后各种找办法解决。分析完且解决完后有稍微记录了下大概是什么问题,问题出在哪里。但是有了一点知识的沉淀后,你再去看,再分析,再去测试会发现不同的东西,推翻以前的结论,往深处又走了一步,这时候我感觉我获得的成就感会是double, 这是我这次记录所获得的最大感受。
JQuery仿购物网站放大镜特效所遇问题及思考的更多相关文章
- 基于jquery仿360网站图片选项卡切换代码
今天给大家分享一款基于jquery仿360网站图片选项卡切换代码.这款实例适用浏览器:IE8.360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗.效果图如下: 在线预 ...
- 基于jQuery仿淘宝产品图片放大镜特效
在开发商城的时候,往往会用到图片的放大功能,这里把自己在近期项目中使用的放大镜特效做一下总结(非插件). 放大镜效果 常用的js组件jquery.imagezoom,jquery.jqzoom,jqu ...
- 一款仿PBA官网首页jQuery焦点图的切换特效
一款仿PBA官网首页jQuery焦点图的切换特效,非常的简单大方, 在对浏览器兼容性的方面做了不少的功夫.IE6也勉强能过去. 还是一款全屏的焦点图切换特效.大气而清新.很适合简介大方的网站. 下图还 ...
- 一款jQuery仿海尔官网全屏焦点图特效代码
一款jQuery仿海尔官网全屏焦点图特效代码,带有左右箭头的jQuery焦点图切换特效. 当焦点图切换时,下方的三块小图也相对应的进行切换.并且特效还兼容头疼的IE6.赶快去和谐了它吧! 适用浏览器: ...
- 基于jQuery适合做图片类网站的特效
分享一款基于jquery适合做图片类网站的特效.这是一款鼠标经过图片滑动弹出标题效果代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="c ...
- 基于jQuery仿迅雷影音官网幻灯片特效
分享一款基于jQuery仿迅雷影音官网幻灯片特效迅.雷影音官网jQuery幻灯片特效是一款带左右箭头,索引按钮切换的jQuery幻灯片代码.效果图如下: 在线预览 源码下载 实现的代码. html ...
- 20款jquery下拉导航菜单特效代码分享
20款jquery下拉导航菜单特效代码分享 jquery仿京东商城左侧分类导航下拉菜单代码 jQuery企业网站下拉导航菜单代码 jQuery css3黑色的多级导航菜单下拉列表代码 jquery响应 ...
- 基于jQuery加入购物车飞入动画特效
基于jQuery加入购物车飞入动画特效.这是一款电商购物网站常用的把商品加入购物车代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div id="main& ...
- jquery仿搜狐投票动画代码
体验效果:http://hovertree.com/texiao/jquery/21/ 这是一款基于jquery实现的仿搜狐投票动画特效源码,运行该源码可见VS图标首先出现在中间位置,紧接着随着投票比 ...
随机推荐
- oralce如何修改默认的XDB监听端口
Oracle9i默认的XML DB把HTTP的默认端口设为8080,这是一个太常用的端口了,很多别的WebServer都会使用这个端口, 如果我们安装了它,最好修改一下,避免冲突,如果不使用呢,就最好 ...
- dsadsa
1.Swift预览 一般来说,编程语言教程中的第一个程序是在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现: println("Hello, world&qu ...
- GitHub Top 100 Objective-C 项目简介
主要对当前 GitHub 排名前 100 的项目做一个简单的简介, 方便初学者快速了解到当前 Objective-C 在 GitHub 的情况. 若有任何疑问可通过微博@李锦发联系我 GitHub 地 ...
- jQuery 五角星评分
五角星打分 我用的是搜狗输入法上带的特殊符号打出来的 空五角星:☆ 实五角星:★ 1.html <ul class="comment"> <li>☆&l ...
- spoj SUBLEX (Lexicographical Substring Search) RE的欢迎来看看
SPOJ.com - Problem SUBLEX 这么裸的一个SAM,放在了死破OJ上面就是个坑. 注意用SAM做的时候输出要用一个数组存下来,然后再puts,不然一个一个字符输出会更慢. 还有一个 ...
- 【BootStrap】--具有增删改查功能的表格Demo
[BootStrap]--具有增删改查功能的表格Demo 目录(?)[+] 前言 版本一 样式 代码 版本二 样式 代码 版本三 样式 代码 总结 前言 bootstrap的表格样式,有类似EasyU ...
- Pytorch使用tensorboardX可视化。超详细!!!
tensorboard --logdir runs 改为 tensorboard --logdir=D:\model\tensorboard\runs 重点 在网上看了很多方法后发现将原本链接中的计算 ...
- CSS检测窗口大小显示和隐藏内容
代码不多 用css写的话简单一点 @media (max-width: 1024px) { #hidden { display: none; } } max-width 是要检测的宽度
- better-scroll在移动端绑定click事件失效
在做一个列表的时候需要点击列表将列表信息输出,给<li>加个一个很简单的@click,可是没有反应. 原因是使用了better-scroll,默认它会阻止touch事件.所以在配置中需要加 ...
- LA 4973 Ardenia (3D Geometry + Simulation)
ACM-ICPC Live Archive 三维几何,题意是要求求出两条空间线段的距离.题目难度在于要求用有理数的形式输出,这就要求写一个有理数类了. 开始的时候写出来的有理数类就各种疯狂乱套,TLE ...