IE9及以下 span元素无法触发鼠标事件解决办法
来源:互联网 发布:8051 单片机有哪些 编辑:程序博客网 时间:2024/05/16 15:05
IE9及以下 span元素无法触发鼠标事件解决办法
今天向往常一样练习原生JS,做了个放大镜效果的小Demo,但是发现如下bug,测试了半天终于解决了!
部分代码如下:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" /> <title>Document</title></head><style type="text/css"> *{margin: 0;padding: 0} img{border:none;} #wrap{width: 350px;box-sizing: border-box;margin: 50px} #imgContainer{width: 350px;height: 350px;box-sizing: border-box;border: 1px solid #000;position: relative;margin-bottom: 5px} #maskImg{width: 100%;height: 100%;} #maskTop{width: 100%;height: 100%; position: absolute;left: 0;top: 0;/*background: #fff;opacity: 0;filter: alpha(opacity=0**)这里是关键***/} #mask{position: absolute;left:0;top: 0;width: 100px;height: 100px;background: #ffa;opacity: 0.5;filter: alpha(opacity=50);display: none;}</style><body> <div id="wrap"> <div id="imgContainer"> <img id="maskImg" src="images/2.jpg"> <span id="mask"></span> <span id="maskTop"></span> </div> </div><script type="text/javascript">var maskImg=document.getElementById("maskImg"), oMaskTop=document.getElementById("maskTop"), oMask=document.getElementById("mask");function addEvent(elem,type,hander){ if(elem.addEventListener){ elem.addEventListener(type,hander,false) }else if(elem.attachEvent){ elem.attachEvent("on"+type,hander) }else{ elem["on"+type]=hander }} function maskMove(event){ var event=event||window.event; x=event.clientX-oMaskTop.getBoundingClientRect().left; y=event.clientY-oMaskTop.getBoundingClientRect().top; w=oMask.offsetWidth; h=oMask.offsetHeight; lf=x<w/2 ? 0:(x-w/2); tp=y<h/2 ? 0:(y-h/2); lf=lf>oMaskTop.offsetWidth-w?(oMaskTop.offsetWidth-w):lf; tp=tp>oMaskTop.offsetHeight-h?(oMaskTop.offsetHeight-h):tp; oMask.style.left = lf+'px'; oMask.style.top = tp+'px';}function maskOver(){ oMask.style.display="block";}function maskOut(){ oMask.style.display = 'none';}addEvent(oMaskTop,"mouseover",maskOver);addEvent(oMaskTop,"mousemove",maskMove);addEvent(oMaskTop,"mouseout",maskOut);</script></body></html>
本来想鼠标移动到oMastTop上时出现oMask,但是IE死活不出来。。后来尝试着在`<span id="mask">aaaaaa</span>` 这里面随便加个字,发现这个span只有字的大小,但是鼠标移动到span上就可以触发事件了,我擦。。我兴奋了。。。但是。。。它的width和height也太小了吧。。也不等于imgContainer的宽高啊。。。再后来我尝试着给oMask加个背景色。。我擦oMask终于牛逼了一回,终于变大了,终于跟他的爸爸imgContainer一样大了,而且各种事件也好使了。。。最后,为了欺骗观众给oMask 在加个opacity就假装这里啥元素都没有。。哦了。。大功告成
0 0
- IE9及以下 span元素无法触发鼠标事件解决办法
- jquery动态新增的元素无法触发事件问题的解决办法方法
- 动态生成的元素无法触发事件
- div无法触发blur事件解决办法
- 【IE bug 解决办法】IE下(IE10及以下)当元素为absolute定位时,点击事件失效的解决办法
- 解决鼠标经过内部元素触发onmouseout事件的问题
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
- IE9的一个BUG:propertychange和input事件在拖拽 / 剪切 / 删除时无法触发
- 定时器解决IE9中propertychange和input事件在拖拽、剪切、删除时无法触发
- QTP鼠标触发事件
- 鼠标触发的事件
- 【OpenGL】鼠标触发事件
- 鼠标的触发事件
- 触发鼠标点击事件
- jQuery中动态创建元素节点无法触发事件
- jquery动态添加元素无法触发绑定事件的解决方案
- jQuery中动态创建元素节点无法触发事件
- 解决UITableViewCell中的元素无法触发点击事件
- web项目路径获取
- CSS实现三角形
- Eclipse相关配置
- LCS算法找出两个字符串最长公共子串(C#实现)
- 专题四 第六道题
- IE9及以下 span元素无法触发鼠标事件解决办法
- 用php实现边执行边输出的效果
- 脸萌6
- 注解与反射
- Android,Gilde框架加载图片进内存。出现的Bitmap too large to be uploaded into a texture
- awk入门学习笔记
- Activity 之 值保存、状态恢复
- java filechannel
- css 样式使用包括样式文件导入