鼠标在文本上移动时层的显示与消失(以及层里显示图片)ASP.NET

这篇博客介绍了如何在ASP.NET中使用JavaScript实现鼠标在文本上移动时显示和隐藏层的功能,包括显示文字和图片。示例代码展示了两种方法,一种显示一段时间后自动隐藏,另一种显示不隐藏。同时,博主分享了在不同文本和层之间切换的处理方式,并讨论了onmouseover和onmousemove事件的区别。文章最后提到了在WebGIS中可能需要采用不同的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、下面是显示文字的层做法如下:
把这里的所有代码都放在<body>与</body>之间即可
<script language=javascript>
<!--
function hiddiv()
{
document.all.ab.style.display="none"
}
function showdiv()
{
document.all.ab.style.display=""
document.all.ab.style.left=window.event.clientX+15
document.all.ab.style.top=window.event.clientY
}
//-->

</script>
<div id=ab style="position: absolute; width: 126; height: 27; background-color: orange; display: none; left: 11; top: 36">地址:浦东新区张江高科技园区<br>电

话:021-51314288-23</div>

<table border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td width="150"><a href="#" οnmοuseοut=hiddiv(); οnmοusemοve=showdiv();>李福云联系方式</a></td>
</tr>
</table>
当然了这里的功能比较简单,没有对浏览器类型进行判断,就把这个问题留给各位了,欢迎每一位朋友来修改这个问题。
在这里还有一个问题就是如果文本不止一个、定义的层也就不止一个。如果还用这样的方法就会出错,对这个问题研究了一下,用下面的这个方法就可以解决了。
<script language=javascript>
<!--
function hiddiv(blah)
{
blah.style.display="none"
}
function showdiv(blah)
{
blah.style.display=""
blah.style.left=window.event.clientX+15
blah.style.top=window.event.clientY
}
//-->

</script>
<div id=ab style="position: absolute; width: 126; height: 27; background-color: orange; display: none; left: 11; top: 36">地址:浦东新区张江高科技园区<br>电

话:021-51314288-23</div>

<div id=cd style="position: absolute; width: 126; height: 27; background-color: orange; display: none; left: 11; top:

36">地址:安徽芜湖市清水镇<br>电话:021-51314288-23</div>

<table border="0" cellpadding="0" cellspacing="0" width="600">
<tr>
<td width="150"><a href="#" οnmοuseοut=hiddiv(ab); οnmοusemοve=showdiv(ab);>李福云联系方式</a></td>
</tr>
<tr>
<td width="150"><a href="#" οnmοuseοut=hiddiv(cd); οnmοusemοve=showdiv(cd);>家乡之宝坻</a></td>
</tr>
</table>
如果有更多的文本和层的话以此类推即可。
  在这里有几点要说明的就是:
  1、showdiv中带参数时再用document.all.ab.style.display=""就不适用了,关于这点朋友们可以参考有关书籍
  2、onmouseover与onmousemove的区别是:当鼠标移过当前对象时就产生了onmouseover事件,当鼠标在当前对象上移动时就产生了onmousemove事件,只要是在对象上移动而且

没有移出对象的,就是onmousemove事件。我当前就是因为这个onmouseover事件惹的祸要不早就搞定了。今天写出来让朋友们也能注意这一点。
  3、如果朋友们有更好的方法或有不明白的地方我们可以一起探讨。
  4、有需要的朋友可以直接拿去用。
二、下面显示图片层的二种方法总结如下:
A、显示一段时间后自动隐藏:
 <a href="#" title="&lt;img src='https://p-blog.youkuaiyun.com/images/p_blog_youkuaiyun.com/lifuyun/312101/o_%e6%9d%8e%e7%a6%8f%e4%ba%91.JPG'/&gt;">帅哥</a>   
<a href="#" title="&lt;img src='http://bbs.bc-cn.net/UploadFace/27761.jpg'/&gt;">美女</a>
<script language="javascript">
//***********默认设置定义.*********************
tPopWait=50;    //停留tWait豪秒后显示提示。
tPopShow=5000;    //显示tShow豪秒后关闭提示
showPopStep=2;    //显示渐变快慢
popOpacity=99;    //消失渐变快慢
//***************内部变量定义*****************
sPop=null;
curShow=null;
tFadeOut=null;
tFadeIn=null;
tFadeWaiting=null;
document.write("<style type='text/css'id='defaultPopStyle'>");
document.write(".cPopText { background-color: #F8F8F5;color:#000000; border: 1px #000000 solid;font-color: font-size: 12pt; padding-right: 4px; padding-left:

4px; height: 20px; padding-top: 2px; padding-bottom: 2px; filter: Alpha(Opacity=0)}");
document.write("</style>");
document.write("<div id='dypopLayer' style='position:absolute;z-index:1000;font-size: 9pt;' class='cPopText'></div>");
function showPopupText()
{
    var o=event.srcElement;
    MouseX=event.x;
    MouseY=event.y;
    if(o.alt!=null && o.alt!=""){o.dypop=o.alt;o.alt=""};
    if(o.title!=null && o.title!=""){o.dypop=o.title;o.title=""};
    if(o.dypop!=sPop)
    {
        sPop=o.dypop;
        clearTimeout(curShow);
        clearTimeout(tFadeOut);
        clearTimeout(tFadeIn);
        clearTimeout(tFadeWaiting);   
        if(sPop==null || sPop=="")
        {
            dypopLayer.innerHTML="";
            dypopLayer.style.filter="Alpha()";
            dypopLayer.filters.Alpha.opacity=0;   
        }
        else
        {
            if(o.dyclass!=null) popStyle=o.dyclass
            else popStyle="cPopText";
            curShow=setTimeout("showIt()",tPopWait);
        }
    }
}
function showIt()
{
    dypopLayer.className=popStyle;
    dypopLayer.innerHTML=sPop;
    popWidth=dypopLayer.clientWidth;
    popHeight=dypopLayer.clientHeight;
    if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24
    else popLeftAdjust=0;
    if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24
    else popTopAdjust=0;
    dypopLayer.style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
    dypopLayer.style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
    dypopLayer.style.filter="Alpha(Opacity=0)";
    fadeOut();
}
function fadeOut()
{
    if(dypopLayer.filters.Alpha.opacity<popOpacity)
    {
        dypopLayer.filters.Alpha.opacity+=showPopStep;
        tFadeOut=setTimeout("fadeOut()",1);
    }
    else
    {
        dypopLayer.filters.Alpha.opacity=popOpacity;
        tFadeWaiting=setTimeout("fadeIn()",tPopShow);
    }
}
function fadeIn()
{
    if(dypopLayer.filters.Alpha.opacity>0)
    {
        dypopLayer.filters.Alpha.opacity-=1;
        tFadeIn=setTimeout("fadeIn()",1);
    }
}
document.οnmοuseοver=showPopupText;
function opwin()
{
    if(IsLogin)
    {
        dypopLayer.filters.Alpha.opacity-=1;
        tFadeIn=setTimeout("fadeIn()",1);
    }
    else
    {
    }
}
</script>
B、显示不隐藏:
 <form method="POST" name="from" action="">
<a style='CURSOR:hand' οnmοuseοver='showmenu(event,"<img name=LogoPic

οnlοad=/"javascript:if(this.width>200)this.style.width=200;/">");document.images.LogoPic.src=document.from.Logo.value;' οnmοuseοut='delayhidemenu()'

>[预览]</a>
<div class="menuskin" id="popmenu" οnmοuseοver="clearhidemenu();highlightmenu(event,'on')" οnmοuseοut="highlightmenu(event,'off');dynamichide(event)"

style="Z-index:100"></div>
<style>.menuskin {Border: #666666 1px solid; Visibility: hidden; Position: absolute; Font: 12px Verdana; Background-Color:#EFEFEF; background-repeat :

repeat-y;}</style>
<input type="hidden" name="Logo" value="http://bbs.bc-cn.net/UploadFace/27761.jpg"></form>

<script language="javascript">
var menuOffX=0    //菜单距连接文字最左端距离
var menuOffY=18    //菜单距连接文字顶端距离
var fo_shadows=new Array()
var linkset=new Array()
No need to edit beyond here
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1
var ns6=document.getElementById&&!document.all
var ns4=document.layers
function openScript(url, width, height){
    var Win = window.open(url,"openScript",'width=' + width + ',height=' + height + ',resizable=1,scrollbars=yes,menubar=no,status=no' );
}
function showmenu(e,vmenu,mod){
    if (!document.all&&!document.getElementById&&!document.layers)
        return
    which=vmenu
    clearhidemenu()
    ie_clearshadow()
    menuobj=ie4? document.all.popmenu : ns6? document.getElementById("popmenu") : ns4? document.popmenu : ""
    menuobj.thestyle=(ie4||ns6)? menuobj.style : menuobj
   
    if (ie4||ns6)
        menuobj.innerHTML=which
    else{
        menuobj.document.write('<layer name=gui bgColor=#E6E6E6 width=165 οnmοuseοver="clearhidemenu()" οnmοuseοut="hidemenu()">'+which+'</layer>')
        menuobj.document.close()
    }
    menuobj.contentwidth=(ie4||ns6)? menuobj.offsetWidth : menuobj.document.gui.document.width
    menuobj.contentheight=(ie4||ns6)? menuobj.offsetHeight : menuobj.document.gui.document.height
   
    eventX=ie4? event.clientX : ns6? e.clientX : e.x
    eventY=ie4? event.clientY : ns6? e.clientY : e.y
   
    var rightedge=ie4? document.body.clientWidth-eventX : window.innerWidth-eventX
    var bottomedge=ie4? document.body.clientHeight-eventY : window.innerHeight-eventY
        if (rightedge<menuobj.contentwidth)
            menuobj.thestyle.left=ie4? document.body.scrollLeft+eventX-menuobj.contentwidth+menuOffX : ns6? window.pageXOffset+eventX-menuobj.contentwidth :

eventX-menuobj.contentwidth
        else
            menuobj.thestyle.left=ie4? ie_x(event.srcElement)+menuOffX : ns6? window.pageXOffset+eventX : eventX
       
        if (bottomedge<menuobj.contentheight&&mod!=0)
            menuobj.thestyle.top=ie4? document.body.scrollTop+eventY-menuobj.contentheight-event.offsetY+menuOffY-23 : ns6?

window.pageYOffset+eventY-menuobj.contentheight-10 : eventY-menuobj.contentheight
        else
            menuobj.thestyle.top=ie4? ie_y(event.srcElement)+menuOffY : ns6? window.pageYOffset+eventY+10 : eventY
    menuobj.thestyle.visibility="visible"
    ie_dropshadow(menuobj,"#999999",3)
    return false
}
function ie_y(e){ 
    var t=e.offsetTop; 
    while(e=e.offsetParent){ 
        t+=e.offsetTop; 
    } 
    return t; 

function ie_x(e){ 
    var l=e.offsetLeft; 
    while(e=e.offsetParent){ 
        l+=e.offsetLeft; 
    } 
    return l; 

function ie_dropshadow(el, color, size)
{
    var i;
    for (i=size; i>0; i--)
    {
        var rect = document.createElement('div');
        var rs = rect.style
        rs.position = 'absolute';
        rs.left = (el.style.posLeft + i) + 'px';
        rs.top = (el.style.posTop + i) + 'px';
        rs.width = el.offsetWidth + 'px';
        rs.height = el.offsetHeight + 'px';
        rs.zIndex = el.style.zIndex - i;
        rs.backgroundColor = color;
        var opacity = 1 - i / (i + 1);
        rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
        //el.insertAdjacentElement('afterEnd', rect);
        fo_shadows[fo_shadows.length] = rect;
    }
}
function ie_clearshadow()
{
    for(var i=0;i<fo_shadows.length;i++)
    {
        if (fo_shadows[i])
            fo_shadows[i].style.display="none"
    }
    fo_shadows=new Array();
}

function contains_ns6(a, b) {
    while (b.parentNode)
        if ((b = b.parentNode) == a)
            return true;
    return false;
}
function hidemenu(){
    if (window.menuobj)
        menuobj.thestyle.visibility=(ie4||ns6)? "hidden" : "hide"
    ie_clearshadow()
}
function dynamichide(e){
    if (ie4&&!menuobj.contains(e.toElement))
        hidemenu()
    else if (ns6&&e.currentTarget!= e.relatedTarget&& !contains_ns6(e.currentTarget, e.relatedTarget))
        hidemenu()
}
function delayhidemenu(){
    if (ie4||ns6||ns4)
        delayhide=setTimeout("hidemenu()",500)
}
function clearhidemenu(){
    if (window.delayhide)
        clearTimeout(delayhide)
}
function highlightmenu(e,state){
    if (document.all)
        source_el=event.srcElement
    else if (document.getElementById)
        source_el=e.target
    if (source_el.className=="menuitems"){
        source_el.id=(state=="on")? "mouseoverstyle" : ""
    }
    else{
        while(source_el.id!="popmenu"){
            source_el=document.getElementById? source_el.parentNode : source_el.parentElement
            if (source_el.className=="menuitems"){
                source_el.id=(state=="on")? "mouseoverstyle" : ""
            }
        }
    }
}
</script>
三、总结:
 以上都是一些比较简单的层显示,其实还有很多更高级的特性,本人正在研究中,若如有感兴趣的请与我联系共同探讨。由于时间的因素,还有一些我没有来的急传上来

。请大家原谅。
其实这些只能在.net及ASP.NET等中做,如果在WEBGIS中,要用别的方法做,也就是ARCGIS中的定制的一些方法等。JS中就可以完成这一系列特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值