За последние 24 часа нас посетили 18900 программистов и 1635 роботов. Сейчас ищут 1896 программистов ...

Позиционирование меню css

Тема в разделе "HTML и CSS", создана пользователем blow, 15 май 2009.

  1. blow

    blow Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    London
    Есть меню, у одного из пунктов есть выпадающее подменю. Осуществленно через <div>

    Код (Text):
    1. <div style='padding-left: 10; visibility:hidden; position:absolute; top:305; left:65%;'><BR>
    При при наведении на пункт меню JS код делает этот div visible.

    Но появляется он в разных местах в зависимости от ширины экрана. ( left:65% ) как можно решить проблему?
     
  2. creage

    creage Активный пользователь

    С нами с:
    12 мар 2008
    Сообщения:
    131
    Симпатии:
    0
    Адрес:
    Киев
    Взять элемент, относительно которого должно "выпасть" меню, вычислить его координаты через оффсет, и показать менюшку относительно этих координат с абсолютным позиционированием.

    Но есть более элегантное решение выпадающих менюшек

    HTML:
    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    2.  
    3. <link rel="Stylesheet" href="./index.css">
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    5.  
    6. var jsHover = function() {
    7.  
    8.     var hEls = document.getElementById("nav").getElementsByTagName("li");
    9.  
    10.     if ( window.attachEvent && navigator.userAgent.indexOf("Opera") == -1 ) {
    11.         for (var i=0, len=hEls.length; i<len; i++) {
    12.           hEls[i].onmouseover=function() { this.className+=" jshover"; }
    13.           hEls[i].onmouseout=function() { this.className=this.className.replace(" jshover", ""); }
    14.         }
    15.     }
    16.  
    17. }
    18.  
    19.  
    20.  
    21. <ul id="nav">
    22.  
    23.     <li><a href="">Home</a></li>
    24.     <li><a href="">Новости</a>
    25.  
    26.         <ul>
    27.             <li><a href="">компании</a>
    28.  
    29.                 <ul>
    30.                     <li><a href="">внутренние новости</a></li>
    31.                     <li><a href="">внешнире новости</a></li>
    32.                 </ul>
    33.             </li>
    34.             <li><a href="">новости мировые</a>
    35.  
    36.                 <ul>
    37.                     <li><a href="">новости Google</a></li>
    38.                     <li><a href="">новости MicroSoft</a></li>
    39.                     <li><a href="">новости Yahoo!</a></li>
    40.                     <li><a href="">новости IBM</a></li>
    41.                     <li><a href="">новости Yandex</a></li>
    42.                 </ul>
    43.  
    44.             </li>
    45.         </ul>
    46.  
    47.     </li>
    48.     <li><a href="">контакты</a></li>
    49.  
    50. </ul>
    51.  
    52. <script>jsHover();</script>
    53.  
    54. </body>
    55. </html>
    и CSS к нему

    [css]
    body, div, td, p {

    font-family: Tahoma, Arial, Helvetica, "Times New Roman", sans-serif;
    font-size: 12px;

    }

    #nav, #nav ul {
    list-style: none;
    margin: 0;
    padding: 0;
    background: #999999;
    float: left;
    width: 100%;
    color: white;

    }
    #nav li {
    float: left;
    position: relative;
    background: #777777;
    width: 120px;
    }

    #nav a {
    color: #fff;
    text-decoration: none;
    display: block;
    width: 100px;
    padding: 10px;
    }
    #nav a:hover {
    color: #fff;
    background: #333;
    }
    #nav li:hover,
    #nav li.jshover {
    background: #333;
    }

    #nav li ul {
    display: none;
    position: absolute;
    padding: 0;
    width: 120px;
    }
    #nav li li a {
    width: 100px;
    background: none;
    }
    #nav li:hover ul,
    #nav li.jshover ul {
    display: block;
    }

    #nav li:hover li ul,
    #nav li.jshover li ul {
    display: none;
    width: 120px;
    top: 0px;
    left: 120px;
    }
    #nav li:hover li:hover ul,
    #nav li.jshover li.jshover ul {
    display: block;
    }
    [/css]
     
  3. blow

    blow Активный пользователь

    С нами с:
    11 янв 2008
    Сообщения:
    82
    Симпатии:
    0
    Адрес:
    London
    мне <li> не подходит ибо ссылка на выпадающее меня в картике через image map