Выпадающий блок с помощью mootools на примере поиска

Категория: Мой опыт
25 Май, 2010

Почти все свои посты я пишу исходя из своей работы. С чем сталкиваюсь, то и пытаюсь рассказать своим читателям. Вот мой очередной пост о том как сделать выпадающий блок div с помощью mootools на примере формы расшириного поиска. Этот скрипт я недавно писал\дописывал для одного сайта. Итак приступим:

Для начала необходимо добавить файл библиотеки mootools и стили для блока search:

1
2
3
4
<script language="javascript" type="text/javascript" src="mootools.js"></script>
<style type="text/css">
#search {width:430px;height:20px;margin:0 auto; background-repeat:no-repeat; overflow:hidden;}
</style>

Незабываем что библиотеки вставляются между тегами <head></head>

Теперь в index.html пишем нужную нам страктуру формы поиска:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
&lt;div id="search"&gt;
&lt;div id="more"&gt;&lt;a href="#" &gt;Расширеный поиск&lt;/a&gt;&lt;/div&gt;
<p style="padding-left: 30px;">&lt;div align="left" id="fl" style="width:400px;display:block;clear:both;height:0px" &gt;&lt;br /&gt;</p>
<p style="padding-left: 30px;">Город
&lt;select name="town"&gt;
&lt;option value="0"&gt;Любой&lt;/option&gt;
&lt;option value='1'&gt;Алмата&lt;/option&gt;
&lt;option value='2'&gt;Астана&lt;/option&gt;
&lt;option value='3'&gt;Караганда&lt;/option&gt;
&lt;/select&gt;&lt;br /&gt;
Форма обучения
&lt;select name="type"&gt;
&lt;option value="0"&gt;Любая&lt;/option&gt;
&lt;option value='1'&gt;Очная&lt;/option&gt;
&lt;option value='2'&gt;Очно-заочная&lt;/option&gt;
&lt;option value='3'&gt;Заочная&lt;/option&gt;
&lt;option value='4'&gt;Экстернат&lt;/option&gt;
&lt;/select&gt;&lt;br /&gt;
Тип учебного заведения
&lt;select name="cat"&gt;
&lt;option value="0"&gt;Любой&lt;/option&gt;
&lt;option value='1'&gt;Университет&lt;/option&gt;
&lt;option value='6'&gt;Академия&lt;/option&gt;
&lt;option value='8'&gt;Школы&lt;/option&gt;
&lt;option value='7'&gt;Институт&lt;/option&gt;
&lt;/select&gt;&lt;br /&gt;</p>
<p style="padding-left: 30px;">Организационноправовая форма
&lt;select name="pravo"&gt;
&lt;option value="0"&gt;Любая&lt;/option&gt;
&lt;option value='1'&gt;Государственный вуз&lt;/option&gt;
&lt;option value='2'&gt;Негосударственны вуз&lt;/option&gt;
&lt;/select&gt; &lt;br /&gt;</p>
<p style="padding-left: 30px;">Специальность
&lt;select name="spec"&gt;
&lt;option value="0"&gt;Любая&lt;/option&gt;
&lt;option value='1'&gt;Прикладная математика&lt;/option&gt;
&lt;option value='2'&gt;Биология&lt;/option&gt;
&lt;option value='3'&gt;Астрономия&lt;/option&gt;
&lt;option value='4'&gt;Экономические&lt;/option&gt;
&lt;/select&gt;
&lt;div&gt;&lt;a href="#" &gt;Искать&lt;/a&gt;&lt;/div&gt;
&lt;/form&gt;</p>
<p style="padding-left: 30px;">&lt;/div&gt;</p>

Теперь в любом месте нашего html вставляем скрипт фреймворка:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<p style="padding-left: 30px;">&lt;script language="javascript"&gt;</p>
<p style="padding-left: 30px;">//Назначаем какое событие должно произойти на ссылке
$('more').addEvent('click',function(){</p>
<p style="padding-left: 30px;">//выбираем элемент из стиля с которым будет происходить действие
if($('fl').getStyle('height')=='0px'){</p>
<p style="padding-left: 30px;">//назначаем переменную
var myFx = new Fx.Tween($('fl'));</p>
<p style="padding-left: 30px;">//Если при клике по ссылке высота в стиле fl=0, то она становится 160px
myFx.start('height', '0', '160px');
}else{
var myFx = new Fx.Tween($('fl'));</p>
<p style="padding-left: 30px;">//Если при клике по ссылке высота в стиле fl=160, то она становится 0px
myFx.start('height', '160px', '0');
}</p>
<p style="padding-left: 30px;">//проделываем те же действия с блоком "search"
if($('search').getStyle('height')=='20px'){
var myFx = new Fx.Tween($('search'));
myFx.start('height', '20px', '200px');
}else{
var myFx = new Fx.Tween($('search'));
myFx.start('height', '200px', '20px');
}
});</p>
<p style="padding-left: 30px;">&lt;/script&gt;</p>

Вот и все. Готово. Пример можно посмотреть здесь.

Отличный выбор asus k50c (k50c-c220scenww). Ноутбук не из дешевых, но он того стоит!

На тему «Выпадающий блок с помощью mootools на примере поиска» 5 комментариев:

Какое чудовищное количество кода… Сравните с jQuery:

$(‘search’).click( function() {
if ( $(this).is( ‘:visible’ ) ) {
$(this).slideUp();
} else {
$(this).slideDown();
}
});

Олег Громов | 25 Май 2010 в 02:29

И все стили остаются в CSS.

Олег Громов | 25 Май 2010 в 02:29

Я согласен. Вы читаете что я пишу в посте? Я делал это по заказу. У человека уже был прикреплен файл mootools и много скриптов написаных на нем. Была задача написать скрипт на mootools а не на jquery. Я jquery тоже знаю, если Вы так не думаете. Кстате в вашем коде есть пару ошибок, работать он будет, но написать можно было и профессиональнее. Через toggle().

Masterix | 25 Май 2010 в 10:51

Вы читаете, что вы пишите в посте? ;) Ни слова о том, что использование mootools было обязательным условием. Да и суть не в используемой библиотеке, а в том, что стили не должны мешаться с содержанием, тем более со скриптами!

Да, с toggle() было бы лучше. Только чтобы понять такой код, надо знать jquery(). Судя по уровню ваших статей, не все читатели будут осведомлены.

Один из главных признаков того самого профессионализма, на который вы уповаете, это простота понимания.

Олег Громов | 1 Июнь 2010 в 02:23

Кстати да, ошибки есть. Во-первых, селектор — $(‘#search’), во-вторых — работать код НЕ будет, т.к. #search спрячется и второй клик не произойдёт.

Олег Громов | 1 Июнь 2010 в 02:26
451-240-340 lyash89
mrmasterix@gmail.com id811932

PR-CY.ru