JQuery仿购物网站放大镜特效所遇问题及思考

news/2024/5/19 20:26:01/文章来源:https://blog.csdn.net/weixin_34029680/article/details/94658777

        JQuery仿购物网站放大镜特效所遇问题及思考

    先贴下效果图,然后描述起来也就不会不知道我在说什么了。

           

    我碰到的问题一: 一开始我自己总结了是因为两个小原因导致的①使用了mouseover,mouseout事件②因为层叠样式(z-index)的原因。一开始的HTML结构如图:

1 <ul>
2     <li class="first">
3         <img src="./image/ep.jpg" alt="">
4         <div class="tipbox"></div> 
5     </li>
6     <div class="firBox">
7         <img src="./image/ep.jpg" alt="">
8     </div>
9 </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事件。贴出我改动的代码,感兴趣的可以按照自己需求改,得出自己的结论。

 1 <html>
 2   <head>
 3     <style>
 4           .over > h2 {
 5            position: absolute;
 6            z-index: 10;
 7           display: none; 
 8         }
 9          .enter > h2{
10            position: absolute;
11            z-index: 10;
12          }
13     </style>
14 <script type="text/javascript" src="/jquery/jquery.js"></script>
15 <script type="text/javascript">
16   x=0;
17   y=0;
18 $(document).ready(function(){
19   $("div.over").mouseover(function(e){
20     $("div.over").find("h2").css('display', 'block');
21     $(".over span").text(x+=1);
22     alert('over'+ e.target);
23   });
24   $("div.over").mouseout(function(e) {
25      $("div.over").find("h2").css('display', 'none');
26     alert('out'+e.target);
27   });
28   $("div.enter").mouseenter(function(){
29     $(".enter span").text(y+=1);
30     alert('enter');
31   });
32   $("div.enter").mouseleave(function(){
33     alert('leave');
34   })
35 });
36 </script>
37    </head>
38    <body>
39        <p>不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。</p>
40        <p>只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。</p>
41        <div class="over" style="background-color:lightgray;padding:20px;width:40%;float:left;height: 100px">
42            <h2 style="background-color:white;height: 90px;">被触发的 Mouseover 事件:<span></span></h2>
43        </div>
44        <div class="enter" style="background-color:lightgray;padding:20px;width:40%;float:right;height: 100px">
45             <h2 style="background-color:white;">被触发的 Mouseenter 事件:<span></span></h2>
46        </div>
47    </body>
48 </html>

    最后我得出了结论是因为事件的冒泡导致的,和层叠颜样式并无关系。然后我进行了改进使用一个空的透明DIV,宽高与li元素一样大小,覆盖在其上,z-index为2,.tipbox的z-index为1。最后对空的透明DIV使用JQ的hover()方法和mousemove()方法可完美解决。(注意:hover()方法是用来替代mouseenter,mouseleaver事件的,因此没有冒泡存在).

   HTML结构:

 1 <ul>
 2     <li class="first">
 3         <img src="./image/ep.jpg" alt="">
 4         <!--  空的透明DIV -->
 5         <div class="zzc"></div>
 6         <div class="tipbox"></div>
 7     </li>
 8     <div class="firBox">
 9         <img src="./image/ep.jpg" alt="">
10     </div>
11 </ul>

    .zzc的CSS样式:

1 .zzc {
2     width: 100%;
3     height: 100%;
4     left: 0;
5     top: 0;
6     z-index: 2;
7     cursor: crosshair;
8 }

    .tipbox的CSS样式:

.tipbox {width: 80px;height: 60px;bottom: 0;left: 0;background: rgba(0,0,0,0.5);display: none;z-index: 1;
}

    看来虽然内容不多,但是在第一次做的过程中还是躺了,然后各种找办法解决。分析完且解决完后有稍微记录了下大概是什么问题,问题出在哪里。但是有了一点知识的沉淀后,你再去看,再分析,再去测试会发现不同的东西,推翻以前的结论,往深处又走了一步,这时候我感觉我获得的成就感会是double,  这是我这次记录所获得的最大感受。

转载于:https://www.cnblogs.com/cleaverlove/p/6373697.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_851540.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bind、click、mouseover、mouseout及简写实现显示与隐藏效果

1、$().bind("click", function() {...........});也可以写成 $().click(function() {..........}); 2、$().bind("mouseover", function() {...........}) .bind("mouseout", function() {...........}); 也可以写成 $().mouseover(function…

如何修改XAMPP默认网站目录

XAMPP默认网站目录保存在...\xampp\htdocs文件夹下&#xff0c;修改目录步骤&#xff1a; 1.XAMPP面板&#xff0c;点击Apache服务器Config按钮&#xff0c;选择Apache&#xff08;httpd.conf&#xff09;&#xff1b; 2.在打开的记事本中&#xff0c;使用快捷键CtrlF进行查找&…

nodejs微信公众号开发——9.爬取网站素材定时推送消息

上一篇文章&#xff1a;nodejs微信公众号开发——8.群发消息&#xff0c;介绍了高级群发接口的实现&#xff0c;并通过一个简单例子加以说明。本节的内容可能和微信公众号开发本身关系不大&#xff0c;只是我小项目中涉及到的内容&#xff0c;知识点包含nodejs爬虫和定时模块。…

jQuery-鼠标事件及使用unbind移除mouseover、mouseout、mousemove绑定

$item.mouseover(function(){//鼠标滑入... }).mouseout(function(){//鼠标滑出... }).mousemove(function(){//鼠标移动... }); 如上&#xff0c;对dom绑定了鼠标事件&#xff0c;那么如何解除绑定呢&#xff1f;如下设置即可&#xff1a; $item.unbind(mouseover).unbind(m…

阿里云ECS建网站(建站)超详细全套完整图文教程!菜鸟必看!

第一步&#xff1a;如何以最低价格快速买到阿里云服务器&#xff1f; 1.1 如果我是学生&#xff0c;我如何通过&#xffe5;9.9买到价值&#xffe5;117的服务&#xff1f; 答&#xff1a;用&#xffe5;9.9购买云服务器ECS是阿里云学生专属活动。首先&#xff0c;你需要在阿里…

云服务器更换PHP版本升级的问题_升级PHP后_网站打不开

摘要&#xff1a; 升级PHP版本后网站打不开解决办法&#xff0c;切换PHP版本后网站打不开解决办法。 文章前面说一下&#xff0c;本人是小白&#xff0c;写这篇文章是因为自己解决了问题&#xff0c;高兴之余&#xff0c;是因为没有这样的文章写出来&#xff0c;可能是太基础的…

【服务器】搭建vue3+vite+koa2+mongodb网站 ----- 安装宝塔面板(步骤一)

介绍 我的是百度云的轻量应用服务器LS&#xff0c;新用户可以试用&#xff0c;百度云官网 1. 在服务器上安装宝塔面板 宝塔面板官网&#xff0c;我的服务器系统镜像是 Centos 7&#xff08;别用 Centos 8 宝塔面板会无法安装 Nginx&#xff0c;如果已经安装了 8 那就重装系统…

【服务器】搭建vue3+vite+koa2+mongodb网站 ----- 部署前端项目(步骤二)

部署前端项目 1. 前端项目打包&#xff08;npm run build&#xff09;&#xff0c;上传打包后的 dist 文件夹到服务器&#xff0c;下面是操作步骤 新建文件夹 health-web &#xff0c;根据自己项目来 打包后的 dist 文件夹内容上传至 新建的 health-web 文件夹内 2. 新建一个…

【服务器】搭建vue3+vite+koa2+mongodb网站 ----- 部署后端项目(步骤三)

部署后端项目 1. 在宝塔面板的文件中&#xff0c;新建 health-server 文件夹&#xff0c;然后上传后端代码&#xff08;千万不要上传 node_modules 文件夹&#xff09; 需要上传的文件和文件夹 上传成功后的界面 在 health_server 文件夹下&#xff0c;安装 node_modules 文…

【服务器】搭建vue3+vite+koa2+mongodb网站 ----- 使用mongodb数据库(步骤四)

使用 mongodb 数据库 在软件商店里找到 mongodb &#xff0c;点击修改 mongodb 配置&#xff0c; 允许任何机器都可以访问该数据库 使用 mongodb 客户端 MongoDB Compass 连接服务器数据库 如果刷新页面出现 404&#xff0c;可以通过配置 nginx 解决 location / {try_files …

【服务器】搭建vue3+vite+koa2+mongodb网站 ----- http变成https(步骤五)

1. 介绍 因为微信小程序请求接口需要 https&#xff0c;所以这里把 http 转换为 https 2. 申请 ssl 证书 其他免费证书 https://freessl.cn/ 因为我有百度云账号&#xff0c;这里免费申请了百度云的 ssl 证书&#xff0c;支付成功后还需要申请一下 申请成功后 下载证书&…

【服务器】搭建vue3+vite+koa2+mongodb网站 ----- 常见问题

一. 接口不通 需要查看是否开启线上配置&#xff0c;默认是开发环境&#xff0c;需要配置一个生成环境&#xff0c;这里 VITE_BASE_API 使用线上地址加端口&#xff0c;也就是马赛克挡住的部分 二. 刷新页面出现404 如果刷新页面出现 404&#xff0c;可以通过配置 nginx 解决…

推荐 | 基于Linux命令行的五个文件下载和网站浏览工具

Linux命令行是GNU/Linux中最神奇迷人的部分&#xff0c;它是非常强大的工具。命令行本身功能多样&#xff0c;多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大。Linux Shell支持多种不同类型的网络应用&#xff0c;无论是BT下载软件&#xff0c;专用下载器或者互联…

使用laravel快速开发网站流程(composer)

一、下载安装composer 1、composer官方下载地址 2、安装 中间的选项可以不用操作忽略掉直接下一步到安装结束 3、完成 cmd中输入composer出现下面的信息证明安装结束 4、配置中文镜像 快速down包 , 不需要的可以忽略这一步 。直接在cmd中输入命令 命令地址 二、laravel应用 …

标题党:如何写出SEO与新媒体平台都吸喜欢的标题!

标题党&#xff0c;这里先简述一下&#xff0c;大部分作者往往将标题党定义为那些利用浮夸标题吸引眼球的写手&#xff0c;基本上文不对题&#xff0c;但实际上我认为“标题党”这个词应该作为中性词。 道理很简单&#xff0c;在任何时期&#xff0c;我们都得承认标题的作用&am…

在线压力测试,测试网站并发量

原文 最近都在折腾这个站点&#xff0c;发现有时内存挺高的&#xff0c;本身使用的就是廉价小内存VPS&#xff0c;所以比较担心站点的稳定性&#xff0c;对运维压测也不是特别熟悉&#xff0c;所以找了两个在线的压力测试网站&#xff0c;小试一下&#xff0c;下面介绍给大家&a…

记录一次垃圾短信网站短链分析

垃圾办信用卡短信数据分析 最近天天收到叫我办理某银行的信用卡的短信&#xff0c;让我们感觉和真的一样&#xff0c;其实&#xff0c;很多都是套路&#xff0c;都是别人拿来套用户的信息的。下面我们来看下短信 常理分析 分析一下下面这条短信&#xff0c;首先乍一看这个短信好…

针对网站漏洞怎么修复区块链漏洞之以太坊

2019独角兽企业重金招聘Python工程师标准>>> 前段时间以太坊升级架构&#xff0c;君士坦丁堡的硬分叉一个升级代号&#xff0c;被爆出含有高危的网站漏洞&#xff0c;该漏洞产生的原因是由于开启了新的协议模式eip1283导致的&#xff0c;也是区块链漏洞当中危害较为…

网站负载均衡

1、什么是负载均衡 负载均衡就是由多台服务器&#xff08;群集&#xff09;对同一个网站提供服务&#xff0c;用户的请求被分配给群集中某台服务器来处理。不同的用户访问同一个网站&#xff0c;但后台提供服务的服务器可能是不同的。当有大量的并发访问时&#xff0c;这种群集…