670
 

Туториал – открывающаяся панель на MooTools

В этом уроке я покажу как сделать плавно открывающуюся панель используя библиотеку MooTools.

Шаг 1: HTML код.

<h2><span><a href="#" id="toggle">Панель</a></span></h2>
<div id="section">
<div>
<!-- Содержимое панели  -->
</div>
</div>

Как видите, код очень простой. Вложенный в заголовок <span>, а также <div> внутри открывающейся панели (id=”section”) нужны только для создания закругленных углов.


Шаг 2: CSS – устанавливаем стиль панели.

div.container{
	margin:30px auto;
	width:350px;
}
h2{
	margin:0px;
	padding:0px;
	border:0px;
}
h2{
	color:#FFFFFF;
	font-size:13px;
	display:block;
	background:url(img/h2_bg.gif) top left no-repeat #9A9A9A;
}
h2 span{
	padding:5px 10px;
	background:url(img/h2_span_bg.gif) top right no-repeat;
	display:block;
}
h2 a:link, h2 a:visited{
	color:#FFFFFF;
	text-decoration:none;
	display:block;
}
#section {
	background:url(img/section_bg_left.png) bottom left  no-repeat #EEEEEE;
	font-size:12px;
}
#section div{
	background:url(img/section_bg_right.png) right bottom no-repeat;
	padding:10px;
}


Шаг 3: добавляем эффект “toggle” из MooTools

Добавляем ссылку на библиотеку MooTools в раздел <head>

<script type="text/javascript" src="mootools.svn.js"></script>

Затем добавляем следующий код…

<script type="text/javascript">
window.addEvent('domready', function(){
	var mySlide = new Fx.Slide('section');
	$('toggle').addEvent('click', function(e){
		e = new Event(e);
		mySlide.toggle();
		e.stop();
	});
});
</script>

Таким образом, при каждом щелчке на заголовке, панель будет плавно появляться/исчезать.


Смотреть демо.

Скачать туториал.

Источник – woork.blogspot.com

Добавить в закладки:
Maklay.com - Большой каталог товаров для спорта и активного отдыха

Комментарии на “Туториал – открывающаяся панель на MooTools”

  1. Как сделать то же самое, н очтобы панелька сначала была закрыта? Не получается.

  2. Нужно сразу после объявления mySlide добавить: mySlide.hide() ,т.е. так
    var mySlide = new Fx.Slide(’section’);
    mySlide.hide();

  3. Спасибо очень полезная инфа в яве не шарю но сразу разобрался как работает. Очень был бы благодарен есл бы вы также разложили по полочка здесь эфект аккордиона. Так как в данном примере работает толко один блок очень хотелось бы знать ка реализовать тоже самое с несколькими блоками.

  4. Не стоит переделывать это под аккордеон, просто потому, что в Mootools уже есть класс Accordeon, для которого нужно всего несколько строк кода:
    window.addEvent(’domready’, function(){
    var accordion = new Accordion(’h3.menusection’, ‘div.menusection’, {opacity: false}, $(’accordion’));
    });
    Тут аккордеон будет создан в div-е ‘accordion’, в качестве заголовков меню будет h3, а содержимое аккордеона в div-е с классом menusection.

    <div id=”accordion”>
    <h3 class=”toggler menusection”>Menu section 1</h3>
    <div class=”element menusection”>
    …..
    </div>

    …. тут остальные элементы аккордеона

    <h3 class=”toggler menusection”>Menu Section 3</h3>
    <div class=”element menusection”>
    …..
    </div>

    </div>

    Смотрите этот пример здесь.

  5. Админ спасибо за консультацию помои пожалуста реализовать такой аккрдион я просто вообще в яве деревянный какой код нужно добавить чтобы это заработало аккордионом готов материально поошрить 338667728 ПОМОГИ ПОЖАЛУСТА ОЧЕНЬ ПРОШУ

    Какие кредиты ты предлагаешь?
    Выезжающий текст
    Кому бы ты мог дать кредит?
    Выезжающий текст
    — Будут ли какие то бонусы, подарки для меня?
    Выезжающий текст
    — А есть ли у тебя какие то пробные тесты?
    Выезжающий текст
    — Если бы я хотел найти инвестора для своего сайта?
    Выезжающий текст
    — Знаешь ли ты что такое лимит доверия?
    Выезжающий текст

  6. Заметил за FX.slide одну гадкую вещь, он у сворачиваемого элемета выставляет фиксированную высоту. Есть div, в который пользователь добавляет элементы и его высота меняется. Повесил на этот div эффект FX.slide и высота пересчитывается только при повторном скрыть/показать. Как можно исправить? Желательно не костылями….

  7. @admin
    Трудно сказать, тут пробовать нужно. Я бы попытался так: в момент, когда пользователь добавляет что-то внутрь div-а, устанавливать высоту height:auto.

  8. Пробовал разные варианты. Выставлял принудительно при добавлении height и overflow в различные значения. Даже если выставить в пикселах, то это значение обновляется только если div свернуть+развернуть. Поиск действенных результатов не принёс.

  9. @Бурундучок
    А можете код показать? Может чего и получится.

  10. Всё, нашлось решение.
    var mySlider = new Fx.Slide(’myDiv’, {
    onComplete: function(){
    if(this.wrapper.offsetHeight != 0)
    this.wrapper.setStyle(’height’, ‘auto’);
    }
    });

  11. @Бурундучок
    Отлично. Надо запомнить.

  12. Как сделать так, чтобы опускающееся меню не спускало элементы находящиеся ниже? Пробовал добавлять overflow, zIndex… Я так понимаю что надо у появляющегося меню выставить значение position в absolute или relative или что-то в этом духе и zIndex выше чем у остальных, но не получается что-то.

  13. Напиши {position:absolute;top:100px;left:20px;z-index:10;width:120px;height:200px;}

  14. Ваш комментарий ожидает модерации.

    А как реализовать подобие такого аккардиона, но немного подругому?
    объясню:
    заголовки – в одном диве
    содержимые – в другом диве

    Смысл такой:
    <div id=”accordion”>
      <h3 class=”toggler menusection”>Menu Section 1</h3>
      <h3 class=”toggler menusection”>Menu Section 2</h3>
    </div>

    <div id=”accordion”>
      <div class=”element menusection”>
        …..
      </div>
      <div class=”element menusection”>
        …..
      </div>
    </div>

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

  16. Нужно использовать какой-нибудь другой эффект вместо toggle. Например Fx.Tween: http://mootools.net/docs/core/Fx/Fx.Tween – изменять стиль left блока, при этом он должен иметь position : absolute или relative

  17. Большое спасибо, что так быстро ответили, но хотелось бы тогда спросить, если togggle не пойдет, то как сделать условие: открыт блок или сдвинулся за край окна в лево, чтобы можно было кликать по одной и той же ссылке, а блок ходил туда сюда?
    P.S.
    A Fx.Tween поддерживается mootools 1.11?
    При много благодарен, за Вашу помощь.

  18. @Raphael
    Точно не знаю насчет 1.11, это документацию надо смотреть. Что касается вопроса, то нужно просто оставлять некоторый отступ, в котором будет видна ссылка, т.е. панель будет закрываться не до конца.
    P.S. прошу прощения за задержку с ответом, оповещения перестали приходить (((

  19. >Это панель с четрьмя закругленными углами.
    >Щелкните на заголовке чтобы спрятать её.
    *Четырьмя :)
    Спасибо Вам за сайт, очень многому научился и много скриптов утащил :)

  20. @cylindr
    Да, забавная опечатка, спасибо ))

  21. А как гугл отреагирует на нее? Не посчитает он это клоакингом?

  22. @Павел
    Не думаю

  23. Павел вы сами поняли что спорсили причем здесь клоакинг вообще? Гугл не обрабатывает скрипты и для него будет просто текст постоянно открытый. Mootols просто придает динамики на стороне браузера

  24. admin – спасибо.
    Ну насколько я понимаю, клоакинг – это когда поисковик видит одно, а пользователь другое. Вот я и спросил, не забанит ли поисковик, если я в этот блок помещу несколько ссылок (с целью разгрузить основную часть сайта, сделать инфо-панель своего рода).

Оставить комментарий

JSToolbox создан на основе WordPress