Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.10.2011, 16:38
Новичок на форуме
Отправить личное сообщение для clear Посмотреть профиль Найти все сообщения от clear
 
Регистрация: 22.07.2011
Сообщений: 4

Скрытие элемента при нажатии в любую область экрана
Что я хотел сделать - скрипт в точности повторяющий скрытие/открытие контекстного меню ( на https://plus.google.com это настройки, значок шестеренка, на facebook это треугольник направленный вниз), скпытие должно происходить по нажатию в любой области экрана. Вот скрины контекстных меню, если кто-либо еще не понял о чём я:
http://s1.ipicture.ru/uploads/20111025/TUILFYr5.png
http://s2.ipicture.ru/uploads/20111025/UoVlkTUZ.png
Я абсолютный новичок в программировании, потому прошу строго не судить за вариант быдлорешения.
Реализовал так - есть основной див в нем контент, при нажатии на див менюха прячется, но меня и настигла злая шутка, я не смог запихнуть саму кнопку открывающую контекст меню в этот самый див, иначе бы это все не заработало,
Вот запилил рабочий вариант

<head>
    <style>
    .v-menu{border:solid 1px #7f9fbf; width:200px; clear:both;}
    ul.v-menu, v.menu li{padding:0; margin:0; list-style:none;}
    ul.v-menu{clear:both; margin-top:6px;padding:6px 2px;}
    ul#v-menu.v-menu li:hover {background-color: #D8DFEA;}
    ul#v-menu.v-menu li a{color: #333333;font-size: 11px;font-family: "lucida grande",tahoma,verdana,arial,sans-serif;text-decoration:none;padding-left:10px;}
    </style>
    <script type="text/javascript">
    
    function showElement(layer) {
    var myLayer = document.getElementById("v-menu");
    if ( myLayer.style.display=="none" )
    {
         myLayer.style.display="block";
         myLayer.backgroundPosition="top";
    } else { 
         myLayer.style.display="none";
    }
    }
    
    function hideElement(layer) {
    var myLayer = document.getElementById("v-menu");
    if ( myLayer.style.display=="block" )
    {
         myLayer.style.display="none";
    }
    }
    </script>
</head>
<div id="content" onclick="javascript:hideElement('v-menu')">

<a href="#" class="button" id="button" onclick="javascript:showElement('v-menu')">
    <span>Click Here</span>
</a>

    <div id="menu">
        <ul id="v-menu" class="v-menu" style="display:none;">
        <li><a href="/user/profile/">профиль</a></li>
        <li><a href="/user/viewfriends/">друзья</a></li>
        <li><a href="/user/saved/">избранное</a></li>
        <li><a href="/login.php?op=logout&return=">выйти</a></li>
        </ul>
    </div>
</div>



может кто посоветовать нормальный вариант реализации без всяких костылей и скрытых дивов?
Ответить с цитированием
  #2 (permalink)  
Старый 25.10.2011, 19:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Сообщение от clear
может кто посоветовать нормальный вариант реализации
Вот например статейка...
http://javascript.ru/tutorial/events...nye-s-sobytiem
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных строки грида при нажатии сторонней кнопки Allan Stark ExtJS 4 17.11.2011 19:21
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
Событие onClick при нажатии пункта меню Lex4e Общие вопросы Javascript 1 25.06.2010 18:31
При нажатии и удержании мыши заменяется картинка Webroller Events/DOM/Window 9 26.05.2010 16:00
Снятие затемнения с экрана при получении ответа от php срипта с помощью setInterval roma86 jQuery 0 16.08.2009 12:39