zoukankan      html  css  js  c++  java
  • 简单的HoverMenu效果

    2011年6月7日版本

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>HoverMenu</title>
    <head>
    <script type="text/javascript">
    function addEvent(obj, evType, fn){
    if (obj.addEventListener){
    obj.addEventListener(evType, fn,
    false);
    return true;
    }
    else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
    }
    else {
    return false;
    }
    }

    function removeEvent(obj, evType, fn, useCapture){
    if (obj.removeEventListener){
    obj.removeEventListener(evType, fn, useCapture);
    return true;
    }
    else if (obj.detachEvent){
    var r = obj.detachEvent("on"+evType, fn);
    return r;
    }
    else {
    alert(
    "Handler could not be removed");
    }
    }

    function initHoverMenu(){
    var elms = document.getElementsByTagName('a');
    for (i = 0; i < elms.length; i++) {
    if (elms[i].className.indexOf("HoverMenu") == 0) {
    addEvent(elms[i],
    'mouseover',showHoverMenu);
    addEvent(elms[i],
    'mouseout',hidHoverMenu);
    }
    }
    }

    function showHoverMenu(e){

    var Pos = getPosition(e);

    var menu = createMenu();

    menu.style.display
    = "block";
    menu.style.top
    = Pos.y + "px";//要加"px"否则不兼容FF
    menu.style.left = Pos.x + "px";
    }

    function hidHoverMenu(){
    var menu = createMenu();
    menu.style.display
    = "none";
    }

    function createMenu(){
    if(createMenu._init == undefined){
    theBody
    = document.getElementsByTagName('BODY')[0];
    menu
    = document.createElement('div');
    menu.id
    = "MenuID";
    menu.style.position
    = 'absolute';
    menu.innerHTML
    = "this is Menu";
    menu.style.top
    = 100;
    theBody.appendChild(menu);
    createMenu._init
    = 1;
    }
    return menu;
    }

    function getPosition(e){//要兼容FF的话,这个参数一定要写上

    e
    = window.event || e;
    srcElement
    = e.srcElement || e.target;

    var top = srcElement.getBoundingClientRect().top + getScrollTop();
    var left = srcElement.getBoundingClientRect().right + getScrollLeft();

    return {x:left, y:top};
    }

    function getScrollTop() {
    if (self.pageYOffset) // all except Explorer
    {
    return self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop) // Explorer 6 Strict
    {
    return document.documentElement.scrollTop;
    }
    else if (document.body) // all other Explorers
    {
    return document.body.scrollTop;
    }
    }

    function getScrollLeft() {
    if (self.pageXOffset) // all except Explorer
    {
    return self.pageXOffset;
    }
    else if (document.documentElement && document.documentElement.scrollLeft) // Explorer 6 Strict
    {
    return document.documentElement.scrollLeft;
    }
    else if (document.body) // all other Explorers
    {
    return document.body.scrollLeft;
    }
    }

    addEvent(window,
    'load',initHoverMenu);

    </script>
    </head>

    <body>

    <a href="#" id="ima" class="HoverMenu">菜单</a><br>
    <a href="#" id="ima" class="HoverMenu">菜单</a><br>
    <a href="#" id="ima" class="HoverMenu">菜单</a>
    </body>

    </html>

    效果图

  • 相关阅读:
    ExtJs系列教程
    linux 服务器时间 timedatectl命令时间时区操作详解
    aws CloudWatch Events
    AWS Shield
    aws ssm指令
    failed to set bridge addr: "cni0" already has an IP address different from 10.244.0.1/24
    AWS Systems Manager
    Amazon Inspector
    AWS 安全培训
    Amazon Inspector
  • 原文地址:https://www.cnblogs.com/poissonnotes/p/2074553.html
Copyright © 2011-2022 走看看