首页 > 开发 > 综合 > 正文

浮动菜单是如何作出来的mouse事件

2024-07-21 02:14:19
字体:
来源:转载
供稿:网友
  • 本文来源于网页设计爱好者web开发社区http://www.html.org.cn收集整理,欢迎访问。
  • 这个问题由我来做一个最终解答吧。我以前也同样惊异于闪光地带的这个特效,苦恼于不知如何实现。我在经典提问,有一位网友热心解答了我的问题,但只是局限于如何加入和“闪光地带”同样的效果,而且并不完美,实际上这个脚本还可以实现许多效果,不知是zippy不知道还是没有用?可是当时看代码看的头晕眼花的我还是不知如何实现,幸运的是随着时间的推移,我终于找到了这个问题非常圆满的答案。请看:

    这个效果是一个js特效,js文件名为coollayer.js也有叫overlib.js的,它可实现一种非常酷的浮动菜单效果,有5种风格:

    风格1:没有标题栏

    风格2:显示标题栏

    风格3:点击显示标题栏

    风格4:点击左侧显示标题栏

    风格5:居中显示浮动窗口

    在js文件中,绝大部分不必修改,你只要改一下显示的字体的大小即可。主要修改html文档页面,因为弹出的浮动窗口的显示内容全部由它控制。看看源代码,非常容易看得懂。比如我新建的网页:http://q3a.go.163.com

    参数含义:(caption--标题)

    onmouseover 用以下函数控制:

    center(居中)

    dcs(text)

    dcc(text, caption)

    right

    drs(text)

    drc(text, caption)

    left

    dls(text)

    dlc(text, caption)

    onmouseout 用以下函数控制:

    nd()

    onclick 用以下函数控制:

    scc(text, caption)

    src(text, caption)

    slc(text, caption)

    其余注意的要点:

    在<body></body>标签内必须有下面的2行:

    <div id="overdiv" style="position:absolute; visibility:hide; z-index:1;"></div>

    <script language="javascript" src="overlib.js"></script>

    css用下面的一行控制,放在<head></head>之间。

    <link rel="stylesheet" href="overlib.css" type="text/css">

    这些内容是摘自java2000站点的关于这个特效的说明文件,我已经做成了压缩包供大家下载。

    地址是http://go.163.com/~dreamwar/resource/downloads/classical/coollink.zip同时欢迎大家来我的新网站:“雷神战梦”(http://q3a.go.163.com)做客,比闪光地带的那个特效还酷哦!!

    附java2000的网址:http://java2000.126.com

    附coollayer.js(overlib.js)源文件:

    ////////////////////////////////////////////////////////////////////////////////////

    // overlib 2.22 -- please leave this notice.

    //

    // by erik bosrup ([email protected]) last modified 1999-03-31

    // portions by dan steinman, landon bradshaw and gnowknayme.

    ////////////////////////////////////////////////////////////////////////////////////

    //请不要随便修改

    ////////////////////////////////////////////////////////////////////////////////////

    // configuration

    ////////////////////////////////////////////////////////////////////////////////////

    // 主背景色(大区域)

    // 通常使用明快的颜色(浅黄色等...)

    if (typeof fcolor == 'undefined') { var fcolor = "#ccccff";}

    // border的颜色和标题栏的颜色;

    // 通常的颜色深(褐色,黑色等。)

    if (typeof backcolor == 'undefined') { var backcolor = "#333399";}

    // 文字的颜色

    // 通常是比较深的颜色;

    if (typeof textcolor == 'undefined') { var textcolor = "#000000";}

    // 标题的颜色

    // 通常是明快的颜色;

    if (typeof capcolor == 'undefined') { var capcolor = "#ffffff";}

    // "close"的颜色

    // 通常是明快的颜色;

    if (typeof closecolor == 'undefined') { var closecolor = "#9999ff";}

    // 弹出的窗口的宽度;

    // 100-300 pixels 合适

    if (typeof width == 'undefined') { var width = "200";}

    // 边缘的宽度,象素。

    // 1-3 pixels 合适

    if (typeof border == 'undefined') { var border = "1";}

    // 弹出窗口位于鼠标左侧或者右侧的距离,象素。

    // 3-12合适

    if (typeof offsetx == 'undefined') { var offsetx = 10;}

    // 弹出窗口位于鼠标下方的距离;

    // 3-12 合适

    if (typeof offsety == 'undefined') { var offsety = 10;}

    ////////////////////////////////////////////////////////////////////////////////////

    // 设置结束

    ////////////////////////////////////////////////////////////////////////////////////

    ns4 = (document.layers)? true:false

    ie4 = (document.all)? true:false

    // microsoft stupidity check.

    if (ie4) {

    if (navigator.useragent.indexof('msie 5')>0) {

    ie5 = true;

    } else {

    ie5 = false; }

    } else {

    ie5 = false;

    }

    var x = 0;

    var y = 0;

    var snow = 0;

    var sw = 0;

    var cnt = 0;

    var dir = 1;

    var tr = 1;

    if ( (ns4) || (ie4) ) {

    if (ns4) over = document.overdiv

    if (ie4) over = overdiv.style

    document.onmousemove = mousemove

    if (ns4) document.captureevents(event.mousemove)

    }

    // 以下是页面中使用的公共函数;

    // simple popup right

    function drs(text) {

    dts(1,text);

    }

    // caption popup right

    function drc(text, title) {

    dtc(1,text,title);

    }

    // sticky caption right

    function src(text,title) {

    stc(1,text,title);

    }

    // simple popup left

    function dls(text) {

    dts(0,text);

    }

    // caption popup left

    function dlc(text, title) {

    dtc(0,text,title);

    }

    // sticky caption left

    function slc(text,title) {

    stc(0,text,title);

    }

    // simple popup center

    function dcs(text) {

    dts(2,text);

    }

    // caption popup center

    function dcc(text, title) {

    dtc(2,text,title);

    }

    // sticky caption center

    function scc(text,title) {

    stc(2,text,title);

    }

    // clears popups if appropriate

    function nd() {

    if ( cnt >= 1 ) { sw = 0 };

    if ( (ns4) || (ie4) ) {

    if ( sw == 0 ) {

    snow = 0;

    hideobject(over);

    } else {

    cnt++;

    }

    }

    }

    // 非公共函数,被其它的函数调用;

    // simple popup

    function dts(d,text) {

    txt = "<table width="+width+" border=0 cellpadding="+border+" cellspacing=0 bgcolor=""+backcolor+""><tr><td><table width=100% border=0 cellpadding=2 cellspacing=0 bgcolor=""+fcolor+""><tr><td><font face="宋体" color=""+textcolor+"">"+text+"</font></td></tr></table></td></tr></table>"

    layerwrite(txt);

    dir = d;

    disp();

    }

    // caption popup

    function dtc(d,text, title) {

    txt = "<table width="+width+" border=0 cellpadding="+border+" cellspacing=0 bgcolor=""+backcolor+""><tr><td><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><span id="ptt"><font color=""+capcolor+"">"+title+"</font></b></span></td></tr></table><table width=100% border=0 cellpadding=2 cellspacing=0 bgcolor=""+fcolor+""><tr><td><span id="pst"><font color=""+textcolor+"">"+text+"</font><span></td></tr></table></td></tr></table>"

    layerwrite(txt);

    dir = d;

    disp();

    }

    // sticky

    function stc(d,text, title) {

    sw = 1;

    cnt = 0;
     

    txt = "<table width="+width+" border=0 cellpadding="+border+" cellspacing=0 bgcolor=""+backcolor+""><tr><td><table width=100% border=0 cellpadding=0 cellspacing=0><tr><td><span id="ptt"><font color=""+capcolor+"">"+title+"</font></b></span></td><td align=right><a href="/" onmouseover="cclick();" id="pcl"><font color=""+closecolor+"">close</font></a></td></tr></table><table width=100% border=0 cellpadding=2 cellspacing=0 bgcolor=""+fcolor+""><tr><td><span id="pst"><font color=""+textcolor+"">"+text+"</font><span></td></tr></table></td></tr></table>"

    layerwrite(txt);

    dir = d;

    disp();

    snow = 0;

    }

    // common calls

    function disp() {

    if ( (ns4) || (ie4) ) {

    if (snow == 0) {

    if (dir == 2) { // center

    moveto(over,x+offsetx-(width/2),y+offsety);

    }

    if (dir == 1) { // right

    moveto(over,x+offsetx,y+offsety);

    }

    if (dir == 0) { // left

    moveto(over,x-offsetx-width,y+offsety);

    }

    showobject(over);

    snow = 1;

    }

    }

    // here you can make the text goto the statusbar.

    }

    // moves the layer

    function mousemove(e) {

    if (ns4) {x=e.pagex; y=e.pagey;}

    if (ie4) {x=event.x; y=event.y;}

    if (ie5) {x=event.x+document.body.scrollleft; y=event.y+document.body.scrolltop;}

    if (snow) {

    if (dir == 2) { // center

    moveto(over,x+offsetx-(width/2),y+offsety);

    }

    if (dir == 1) { // right

    moveto(over,x+offsetx,y+offsety);

    }

    if (dir == 0) { // left

    moveto(over,x-offsetx-width,y+offsety);

    }

    }

    }

    // the close onmouseover function for sticky

    function cclick() {

    hideobject(over);

    sw=0;

    }

    // writes to a layer

    function layerwrite(txt) {

    if (ns4) {

    var lyr = document.overdiv.document

    lyr.write(txt)

    lyr.close()

    }

    else if (ie4) document.all["overdiv"].innerhtml = txt

    if (tr) { trk(); }

    }

    // make an object visible

    function showobject(obj) {

    if (ns4) obj.visibility = "show"

    else if (ie4) obj.visibility = "visible"

    }

    // hides an object

    function hideobject(obj) {

    if (ns4) obj.visibility = "hide"

    else if (ie4) obj.visibility = "hidden"

    }

    // move a layer

    function moveto(obj,xl,yl) {

    obj.left = xl

    obj.top = yl

    }

    function trk() {

    if ( (ns4) || (ie4) ) {

    nt=new image(32,32); nt.src="http://www.nedstat.nl/cgi-bin/nedstat.gif?name=ol2t";

    bt=new image(1,1); bt.src="http://webdesign.chinaitlab.com/uploadfiles_8014/200605/20060512113425323.gif";

    refnd=new image(1,1); refnd.src="http://www.nedstat.nl/cgi-bin/referstat.gif?name=ol2t&refer="+escape(top.document.referrer);

    }

    tr = 0;

    }

    附overlib.css:

    body {font-family:"宋体";font-size: 9pt; margin-top: 0px }

    a {font-family:"宋体";font-size: 9pt }

    td { font-size: 9pt ; font-family: "宋体" }

    #pcl {

    font-family: 宋体

    font-style: none;

    font-weight: normal;

    text-decoration: none;

    font-size: 9pt;

    }

    #ptt {

    font-family: 宋体

    font-size: 9pt;

    }

    #pst {

    font-family: 宋体

    font-size: 9pt;

    }

    注:将以上两文件保存为.js文档和css文档,css用自己的就行了,没必要用他的。最后希望大家能用好这个特效来装点自己的主页,一定要记得好东东要共享哦!!

    发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表