=波波日志 > JavaScript/Ajax > 仿CSDN的鼠标悬停效果=
仿CSDN的鼠标悬停效果
仿照CSDN当鼠标悬停在用户头像上时显示用户相关信息的效果,代码及说明如下
+展开
-HTML
<style type="text/css">
.pop{width:357px;height:194px;background:url(http://www.code-design.cn/eg/bgUserCard.gif) no-repeat;position:absolute;display:none;}
.pop .ct{margin:10px 10px 10px 60px;}
</style>
<div class="pop" id="popDV" onmouseout="hide(event)" onmouseover="clearTimeout(mouseOutTimer)"><div class="ct">内容内容内容内容<a href="http://www.code-design.cn">编程设计网</a>内容内容内容内容内容内容</div></div>
<div id="dvCT">今天上班公司要我做一个鼠标事件, 要求就象goolge翻译里面,翻译后生成的一个页面,<a href="#">鼠标悬停在一个文本</a>上面弹出一个 框框样的东西, 本来感觉还比较容易做的, 就是一个悬停事件,<a href="#"> 显示层</a>就可以了, 后面才发现, 要弹出的那个框框形状有点特别, 不知道哪位大虾知道用js画形状比较特别的框?</div>
<script type="text/javascript">
function getAbsolutePosition(o){//获取对象的绝对位置
var p={x:o.offsetLeft,y:o.offsetTop};
while(o=o.offsetParent){
p.x+=o.offsetLeft;p.y+=o.offsetTop;
}
return p;
}
function showPopUp(){//
var p=getAbsolutePosition(this),popDV=document.getElementById('popDV');
popDV.style.left=p.x+this.offsetWidth+'px';
popDV.style.top=p.y+'px';
popDV.style.display='block';
}
var mouseOutTimer=false;
window.onload=function(){//加载完毕后给a标签添加事件
var as=document.getElementById('dvCT').getElementsByTagName('a');
for(var i=0;i<as.length;i++){
as[i].onmouseover=showPopUp;
as[i].onmouseout=function(){mouseOutTimer=setTimeout(function(){hide(true);},100);}
}
}
function hide(e){
var dv=document.getElementById('popDV');
if(e===true)dv.style.display='none';//计时器直接隐藏
else{//如果鼠标从弹出层移出时,需要判断是否是移动到弹出层里面的子控件上了,因为移动到子控件,如a标签等上时,也会触发onmuseout事件
var refObj=e.toElement||e.relatedTarget;
if(!dv.contains(refObj))dv.style.display='none';//不是div的子控件则隐藏
}
}
if(typeof HTMLElement!='undefined')HTMLElement.prototype.contains=function(o){//扩展非IE浏览器下的contains方法
if(this==o)return true;
while(o=o.parentNode)if(o==this)return true;
return false;
}
</script>
.pop{width:357px;height:194px;background:url(http://www.code-design.cn/eg/bgUserCard.gif) no-repeat;position:absolute;display:none;}
.pop .ct{margin:10px 10px 10px 60px;}
</style>
<div class="pop" id="popDV" onmouseout="hide(event)" onmouseover="clearTimeout(mouseOutTimer)"><div class="ct">内容内容内容内容<a href="http://www.code-design.cn">编程设计网</a>内容内容内容内容内容内容</div></div>
<div id="dvCT">今天上班公司要我做一个鼠标事件, 要求就象goolge翻译里面,翻译后生成的一个页面,<a href="#">鼠标悬停在一个文本</a>上面弹出一个 框框样的东西, 本来感觉还比较容易做的, 就是一个悬停事件,<a href="#"> 显示层</a>就可以了, 后面才发现, 要弹出的那个框框形状有点特别, 不知道哪位大虾知道用js画形状比较特别的框?</div>
<script type="text/javascript">
function getAbsolutePosition(o){//获取对象的绝对位置
var p={x:o.offsetLeft,y:o.offsetTop};
while(o=o.offsetParent){
p.x+=o.offsetLeft;p.y+=o.offsetTop;
}
return p;
}
function showPopUp(){//
var p=getAbsolutePosition(this),popDV=document.getElementById('popDV');
popDV.style.left=p.x+this.offsetWidth+'px';
popDV.style.top=p.y+'px';
popDV.style.display='block';
}
var mouseOutTimer=false;
window.onload=function(){//加载完毕后给a标签添加事件
var as=document.getElementById('dvCT').getElementsByTagName('a');
for(var i=0;i<as.length;i++){
as[i].onmouseover=showPopUp;
as[i].onmouseout=function(){mouseOutTimer=setTimeout(function(){hide(true);},100);}
}
}
function hide(e){
var dv=document.getElementById('popDV');
if(e===true)dv.style.display='none';//计时器直接隐藏
else{//如果鼠标从弹出层移出时,需要判断是否是移动到弹出层里面的子控件上了,因为移动到子控件,如a标签等上时,也会触发onmuseout事件
var refObj=e.toElement||e.relatedTarget;
if(!dv.contains(refObj))dv.style.display='none';//不是div的子控件则隐藏
}
}
if(typeof HTMLElement!='undefined')HTMLElement.prototype.contains=function(o){//扩展非IE浏览器下的contains方法
if(this==o)return true;
while(o=o.parentNode)if(o==this)return true;
return false;
}
</script>
类别:JavaScript/Ajax 作者:波波 日期:2010-05-19 【评论:2】
日期:2010-11-8 10:34:06 IP:221.0.*.*
来这儿逛逛http://mountainstone.net/管理员回复(2010-11-8 13:39:19)
O(∩_∩)O~
- istend
日期:2011-6-1 19:10:04 IP:218.28.*.*
没有人会么? 我也需要这个东西管理员回复(2011-6-1 20:14:44)
贴出来的代码就是了啊~~
发表留言
百度赞助
同类热门博文
- ·AJAX跨域问题解决办..
- ·ajax问题总结
- ·jQuery dataType指定..
- ·ajax+asp.net+mssql..
- ·ajax无刷新上传文件..
- ·ajax对象abort方法
- ·JavaScript代码,变..
- ·fckeditor编辑器在F..
博格Tag
- flash/flex/fcs/AIR(752)
- Asp.Net/C#/WCF(598)
- 操作系统及应用软件(376)
- JavaScript/Ajax(330)
- SQL及数据库(134)
- 黑客技术(115)
- Asp/VBScript(111)
- HTML/WML/CSS兼容/XML(102)
- PHP/apache/Perl(96)
- 网站排名及优化(96)
- 其他(75)
- showbo日志(66)
- lucene.net/分词技术(33)
- 计算机网络(26)
- 机械重工(26)
- C#设计模式(25)
- Google Maps开发(17)
- 日语学习(15)
- Canvas/VML/SVG(13)
- linux(11)
- 游戏开发(8)
- 正则表达式(5)
- Jsp/Java(4)
最新博文
- ·javascript实现html..
- ·Javascript风格要素..
- ·Javascript风格要素
- ·动态加载JavaScript
- ·JavaScript陷阱
- ·ajax技巧
- ·IE对CSS样式表的限制..
- ·什么是Javascript匿..
随机博文
