Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Переключатель
 
 автор: lElectroHardl   (13.02.2012 в 22:56)   письмо автору
 
 

Например, на Gmail при нажатии на кнопку "Еще" или "Почта" показывается менюшка. А при расфокусировки этой кнопки эта менюшка пропадает.
Как такое реализовать, помогите.

  Ответить  
 
 автор: ЯСА   (13.02.2012 в 23:39)   письмо автору
 
   для: lElectroHardl   (13.02.2012 в 22:56)
 

Может использоваться скриптовая инструкция для события onblur на этой кнопке.

Может по нажатию кнопки назначаться функция на событие click по документу вне открывшегося меню. В момент такого клика меню сворачивается и эта функция с документа снимается. Проверьте: если ещё раз нажать на кнопку - меню исчезнет? Если исчезнет при повторном нажатии - то именно этот вариант использован.

А может и ещё как-то...

Вариантов различных - море.
И плюс ещё один к этому "морю", мне неизвестный :-)

  Ответить  
 
 автор: lElectroHardl   (14.02.2012 в 00:14)   письмо автору
 
   для: ЯСА   (13.02.2012 в 23:39)
 

Спасибо, завтра буду копать :)

  Ответить  
 
 автор: ЯСА   (14.02.2012 в 03:17)   письмо автору
 
   для: lElectroHardl   (14.02.2012 в 00:14)
 

Да что там искать-то? Держите:
<html>
<head>
<style>
html, body {height: 100%}
</style>

<script>
function mF ()
{
if (window.addEventListener) window.addEventListener ('click', mFclck, true);
else window.attachEvent ('onclick', mFclck, true); 
document.getElementById ('mDV').style.display = '';
}

function mFclck (ev)
{
var e = window.event || ev, obj = e.srcElement || e.target;
while (obj.tagName != 'BODY' && obj.id != 'mDV') obj = obj.parentNode;
if (obj.id != 'mDV')
   {
   document.getElementById ('mDV').style.display = 'none';
   if (window.addEventListener) window.removeEventListener ('click', mFclck, false);
      else window.detachEvent ('onclick', mFclck, false); 
   }
}
</script>
</head>
<body>
<input type="button" onclick="mF ()" value="Go!"><br><br>
<div id="mDV" style="width: 100px; height: 100px; background: lime; display: none"><span><i>Menu</i></span></div>
</body>
</html>

П-1: Стиль для высоты тега BODY дан, чтобы задействовать всё окно браузера в данном примере в браузерах Mozilla.
П-2: конструкция <span><i>Menu</i></span> нарисована для того, чтобы показать - что кликать можно не только по самому диву-меню, но и по любому тегу, в него входящему.

  Ответить  
 
 автор: lElectroHardl   (14.02.2012 в 20:28)   письмо автору
 
   для: ЯСА   (14.02.2012 в 03:17)
 

Работает отлично.
Но на сайте таких кнопочек будет более 10-ка. Как мне определить, на какой именно INPUT нажали и какой именно (соответственный) скрытый DIV нужно показывать?

Очень хорошо будет реализация на jQuery.

  Ответить  
 
 автор: ЯСА   (15.02.2012 в 10:08)   письмо автору
 
   для: lElectroHardl   (14.02.2012 в 20:28)
 

<html>
<head>
<style>
html, body {height: 100%}
</style>
<script>

function mF (x)
{
if (window.addEventListener)
window.addEventListener ('click', mFclck, true);
else window.attachEvent ('onclick', mFclck, true); 
MN = document.getElementById (x);
MN.style.display = '';
}

function mFclck (ev)
{
var e = window.event || ev, obj = e.srcElement || e.target;
while (obj.tagName != 'BODY' && obj != MN) obj = obj.parentNode;
if (obj != MN)
   {
   MN.style.display = 'none';
   if (window.addEventListener)
      window.removeEventListener ('click', mFclck, false);
   else window.detachEvent ('onclick', mFclck, false); 
   }
}
</script>
</head>
<body>
<input type="button" onclick="mF ('mDV1')" value="Go 1"><br><br>
<input type="button" onclick="mF ('mDV2')" value="Go 2"><br><br>

<div id="mDV1" style="width: 100px; height: 100px; background: lime; display: none"><span><i>Menu1</i></span></div>
<div id="mDV2" style="width: 100px; height: 100px; background: blue; display: none; margin-left: 200px"><span><i>Menu2</i></span></div>
</body>
</html>

>"Очень хорошо будет реализация на jQuery."
Кому будет "очень хорошо"? :-))

  Ответить  
 
 автор: lElectroHardl   (15.02.2012 в 17:30)   письмо автору
 
   для: ЯСА   (15.02.2012 в 10:08)
 

Большое спасибо!

А по-поводу Квери. Я думал, что на ней это реализовать будет проще. Что-вроде:
$(".element").clickFocus(function()
{
// фокусировка на кнопке
// показываем скрытый объект
},
function()
{
// расфокусировка
// скрываем объект
});

Может есть какое-то решение?

  Ответить  
 
 автор: ЯСА   (15.02.2012 в 23:28)   письмо автору
 
   для: lElectroHardl   (15.02.2012 в 17:30)
 

Увы... массовое безумие, видимо, не излечивается. Эпидемия, плять...
function mF (x) {
if (window.addEventListener) window.addEventListener ('click', mFclck, true);
else window.attachEvent ('onclick', mFclck, true);
MN = document.getElementById (x); MN.style.display = ''}

function mFclck (ev) {
var e = window.event || ev, obj = e.srcElement || e.target;
while (obj.tagName != 'BODY' && obj != MN) obj = obj.parentNode;
if (obj != MN) {MN.style.display = 'none';
if (window.addEventListener) window.removeEventListener ('click', mFclck, false);
else window.detachEvent ('onclick', mFclck, false)}}

Ну вот куда ещё ПРОЩЕ-то?
Без подключения многокилобайтной JS-библиотеки вы уже не представляете себе нормальной половой жизни?
Вам обязательно нужна виагра JQuery?

  Ответить  
 
 автор: lElectroHardl   (16.02.2012 в 12:05)   письмо автору
 
   для: ЯСА   (15.02.2012 в 23:28)
 

Я сужу (в данном случае) по к-во строк кода. Если есть такая функция в jQuery как "фокусировка элемента" и "расфокусировка элемента", то не легче ли использовать это 2+2 строки кода, чем использовать то, что написали вы (спасибо конечно за помощь)?
Тем-более, на сайте в любом случае подгружается jQuery.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования