03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - Xakep Online

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

coding<br />

Постепенное уменьшение прозрачности текста Обычная и нажатая кнопка<br />

Здесь используется классический прием<br />

jQuery — цепочка вызовов. Первой в ней идет<br />

конструкция $(this), обозначающая текущий<br />

элемент, на котором сработало событие — клик<br />

мышкой. Parent() выбирает прямого родителя<br />

(в нашем случае тэг li. children()) и, как несложно<br />

догадаться, служит для получения всех<br />

дочерних элементов. Из них нам надо убрать<br />

слой с классом collapsible, что делает метод<br />

not. Теперь осталось вызвать toggle, который<br />

либо спрячет, либо покажет ветку меню, в зависимости<br />

от ее видимости (смотри рисунок).<br />

Свежие новости<br />

Возможно, этот код покажется тебе несколько<br />

усложненным, но зато мы легко сможем использовать<br />

его и при создании раскрывающихся<br />

новостей. Например, у нас есть заголовки или<br />

краткий вариант сообщения; пользователь щелкает<br />

по нему и получает открывшуюся новость<br />

(смотри рисунок).<br />

Стрелкой я показал, как именно новость будет<br />

открываться. Теперь напишем HTML, который<br />

будет похож на наше меню:<br />

Описание одной новости<br />

HTML<br />

<br />

Заголовок новости <br />

<br />

Текст новости<br />

<br />

<br />

JavaScript будет тем же самым, разве что я<br />

добавлю в него немного наворотов, которые<br />

сделают код более юзабельным. Применим<br />

анимацию «разворачивание», которая реализуется<br />

методом slideToggle с параметром<br />

slow, чтобы действие происходило медленно.<br />

При загрузке страницы свернем все новости и<br />

припишем к заголовку на три символа больше.<br />

На практике эти три символа лучше заменить<br />

картинкой.<br />

СворачиваниЕ/разворачиваниЕ<br />

новостей<br />

JavaScript<br />

$(".collapsible").click(function()<br />

{<br />

$(this).parent().children<br />

().not(".collapsible").<br />

slideToggle("slow");<br />

});<br />

$(".collapsible").parent().<br />

children().not(".collapsible").<br />

hide();<br />

$(".collapsible").append("<br />

&gt;&gt;&gt;");<br />

Анимация<br />

«Что может быть бесполезней, чем всякая<br />

анимация на сайте?» — думал я в детстве.<br />

На первый взгляд подобные мысли кажутся<br />

логичными. Но тогда зачем в состав фреймворка<br />

(каркаса) включили такой функционал?<br />

В нем должно быть только самое нужное, все<br />

остальное надо вынести в плагины! Но если<br />

посмотреть на любой современный динамический<br />

сайт, особенно с применением идеологии<br />

AJAX, то станет понятно, что анимация<br />

может быть и полезна. Когда добавляется<br />

новое сообщение в чате или приходит новое<br />

письмо в почтовой системе, посетителю<br />

надо ясно указать на эти события. Почтовую<br />

систему мы писать не будем, а как работает<br />

метод animate, посмотрим на более простом<br />

примере.<br />

При клике пользователя по кнопке удалим<br />

все параграфы — содержимое тэгов p. Если<br />

вызывать метод hide, то посетитель не поймет,<br />

что произошло («Бац, и все исчезло!»). Мы же<br />

плавно погасим текст, уменьшая (по правде<br />

говоря, увеличивая) его прозрачность (смотри<br />

соответствующий рисунок).<br />

Чтобы использовать метод animate, ему надо<br />

передать два параметра. Первый — это массив<br />

изменяющихся свойств, второй — скорость<br />

изменения:<br />

Анимация: затухание текста<br />

JavaScript<br />

$("#hide").click(function() {<br />

$("p").animate({<br />

opacity: 'hide' }, 5000);<br />

});<br />

Тултипы<br />

В продолжение темы анимации рассмотрим<br />

два специализированных метода — slideDown<br />

и slideUp — для сворачивания и разворачивания<br />

элементов соответственно. Именно при<br />

помощи этих эффектов и будут появляться<br />

наши всплывающие подсказки. Определим,<br />

что тултипом у нас будет элемент, который<br />

следует за ссылкой и имеет класс tooltip.<br />

Подсказка может содержать информацию о<br />

ресурсе, на который она ведет, что поможет<br />

посетителю принять решение о том, стоит ли<br />

по ней переходить. Показывать мы ее будем<br />

при наведенном на ссылку курсоре (смотри<br />

рисунок).<br />

Чтобы обработать событие hover, надо указать две<br />

функции, которые будут вызваны при входе курсора<br />

мышки в область элемента и выходе из нее:<br />

Показываем тултип<br />

JavaScript<br />

$(".tooltip").prev("a").hover(<br />

function() { $(this).next(".<br />

tooltip").slideDown(); },<br />

function() { $(this).next(".<br />

tooltip").slideUp(); }<br />

);<br />

Здесь мы использовали новые методы prev<br />

и next, которые возвращают предыдущий<br />

и последующий элементы соответственно.<br />

Последним будет примечание о необходимости<br />

скрыть все тултипы при загрузке страницы.<br />

Если ты дочитал до этого момента, то знаешь,<br />

как это сделать.<br />

Классы<br />

Переходим к одной из фундаментальных<br />

возможностей в арсенале jQuery — к работе<br />

xàêåð 05 /101/ 07<br />

/<br />

129

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!