Статус бар с jQuery

Фото автора =) 13.04.2009 от ROM Комментариев нет »

Источник: A jQuery Client Status Bar

Последнее время ко мне неоднократно обращались с вопросами по поводу строки состояния в моем фотоальбоме на jQuery. На самом деле здесь нет ничего сложного, но, поскольку это заинтересовало несколько человек, я подумал, что стоит рассказать как же все-таки это работает. Несмотря на то, что в данном примере используется jQuery, того же эффекта можно легко достичь с помощью простого кода DOM или любой другой библиотеки JavaScript. Однако, большую часть работы все же проделывает CSS (и, полагаю, именно об этом и было большинство полученных мною вопросов), а не клиентский код, хотя компонент, с которым я познакомлю вас в конце задействован не меньше.

Зачем нужна строка состояния?

Как правило, я использую строки состояния для вывода информации на большинстве своих административных панелей, а иногда и во внешнем интерфейсе некоторых сайтов. Как и в случае с настольными приложениями, использование окон предупреждений для вывода информации при написании клиентских скриптов не очень удобно для пользователя, целесообразнее использовать некое постоянное место для вывода сообщений. Для решения этой задачи мне нравится использовать строки состояния, располагая их как наверху, так и внизу страницы.
В приложении фотоальбом строка состояния находится внизу страницы, имеет фиксированное положение и определенную прозрачность фона, так что строка состояния всегда видна, но вместе с тем она находится поверх остального содержания страницы:

pic1

Иногда при выводе сообщений в строке состояния может быть превышено время ожидания, и тогда там будет отображаться заданное по умолчанию сообщение (как правило, это «Готово»). Новые сообщения выделяются:

pic2

Через заданный промежуток времени выделение текста снимается. Это лучше делать с помощью CSS класса statusbar.
Пример строки состояния на странице фотоальбома можно посмотреть здесь:
http://www.west-wind.com/rick/photoalbum/demoMaui2006/default.aspx?Admin=true

После сохранения изменений и удаления изображений происходит обновление строки состояния (так же как и в случае с Ajax-овыми ошибками в методе-обработчике, которые не должны происходить).

Начнем с CSS
Для выполнения большей части работы необходимо использовать CSS стили элементов. Строка состояния – не просто тэг

с классом CSS. Здесь используются два класса: один для основного отображения и один для отображения выделенного текста при превышении времени ожидания:

.statusbar

{
    position: fixed;
    bottom: 5px;
    left: 0px;
    right: 0px;
    height: 16px;
    padding: 5px;

    background: black;
    color: white;
    border: solid 1px lightgray;

    opacity: .70;
    filter: alpha(opacity="70");
    z-index: 200;

    overflow: hidden;
    overflow-y: auto;
}

.statusbarhighlight
{
    font-weight: bold;
    background-color: khaki;
    color: Maroon;
    border: solid 1px silver;
}

Главным для строки состояния является фиксированное положение, при котором она всегда находится внизу страницы и остается там постоянно независимо от состояния полосы прокрутки браузера. Я предпочитаю размещать строку состояния на расстоянии 5px (5 пикселей) над нижней частью окна и затем применять прозрачность, чтобы сквозь строку состояния просвечивалась расположенная под ним страница. Полагаю, необходимо убедиться, что строка состояния находится над остальным содержимым страницы, а не определять ее абсолютное положение по нижнему краю.
В дополнение к классу statusbar применяется выделение, таким образом, выделенное сообщение сочетает оба стиля. Выделение просто изменяет цвет и рамку сообщения в строке состояния на определенный заданный промежуток времени.
Вы, конечно, можете отредактировать CSS по своему желанию и таким образом изменить отображение строки состояния: квадратная или прямоугольная; горизонтальная или вертикальная — справа или слева. В этом суть.

Простой вариант кода JavaScript на jQuery
Первоначально при создании строки состояния я использовал стандартную функцию – дешево и сердито. Она создает элемент DOM для строки состояния и применят соответствующие классы. Это самая простая функция, которая выполняет несколько вещей:

function showStatus(message,timeout,add)
{
    if (typeof _statusbar == "undefined")
    {
       // ** Create a new statusbar instance as a global object
        _statusbar =
            $("
") .appendTo(document.body) .show(); } if (add) // *** add before the first item _statusbar.prepend( "
" + message + "
")[0].focus(); else _statusbar.text(message) _statusbar.show(); if (timeout) { _statusbar.addClass("statusbarhighlight"); setTimeout( function() { _statusbar.removeClass("statusbarhighlight"); },timeout); } }

А теперь воспользуйтесь функцией showStatus() и CSS. Эту функцию можно применить в любом месте кода:

showStatus("Photo Collection has been updated",5000);

Обратите внимание, что функция также имеет параметр add, который определяет, добавлять ли сообщение к уже существующим в начало списка в тэге div. Это удобно, если вы собираетесь использовать строку состояния для вывода отладочных сообщений и при этом просматривать весь список сообщений. Чтобы это работало, возможно, потребуется увеличить высоту в классе .statusbar до 40px и более, дабы просматривать несколько сообщений с полосой прокрутки для перемещения по списку.

Обратите внимание, что CSS дает возможность управлять расположением и видом строки состояния. В целом, суть этого кода состоит в создании глобальной переменной _statusbar наряду со стилями .statusbar и .statusbarhighlight для корректного отображения строки состояния.

Создание более продвинутого компонента Statusbar

Основной код верен и самодостаточен, но, возможно, лучше создать более стандартный базовый компонент. На самом деле я не старался сделать этот код идеальным и не всегда следовал основным принципам jQuery для написания плагинов, потому что на самом деле предпочитаю создавать компонент с помощью одной функции и одного вызова для инициализации, а не служебной функции jQuery. С этой точки зрения этот компонент немного отличается от типичного плагина jQuery, потому что он не подходит к набору объектов jQuery.

По существу, написанная мной версия – это один класс с несколькими методами. Идея состоит в создании и конфигурации экземпляра класса в коде инициализации:

_statusbar = new StatusBar("#divStatus",

                           {showCloseButton: true, 

                            additive: true,

                            afterTimeoutText: "Click on caption to edit text..."});

в дальнейшем вы можете использовать любой из двух вариантов функций:

_statusbar.show("Images have been reloaded",5000);
showStatus("Photo Collection has been updated",5000);

Последняя является служебной функцией, которая просто инкапсулирует создание переменной класса посредством глобальной переменной _statusbar с помощью конструктора по умолчанию. Это довольно удобно, так как дает возможность вызывать функцию без предварительной инициализации.

Следует также описать этот компонент с точки зрения конфигурации через свойства. В jQuery любое свойство может быть передано посредством массива объектов свойств, который определяет свойства класса StatusBar. Так, в примере выше я задал три свойства: одно для закрытия строки состояния; второе для аддитивного вывода сообщений, т.е. такого, чтобы при этом сохранялась и отображалась история сообщений; и третье для снятия выделения и вывода сообщения по умолчанию по истечении заданного промежутка времени.

Исходный код класса StatusBar:

function StatusBar(sel,options)
{
    var _I = this;
    var _sb = null;

    // options
    this.elementId = "_showstatus";
    this.prependMultiline = true;
    this.showCloseButton = false;
    this.afterTimeoutText = null;
    this.cssClass = "statusbar";
    this.highlightClass = "statusbarhighlight";
    this.errorClass = "statuserror";
    this.closeButtonClass = "statusbarclose";
    this.additive = false;
     $.extend(this,options);
     if (sel)
      _sb = $(sel);

    // create statusbar object manually
    if (!_sb)
    {
        _sb = $("
" + "
" + (_I.showCloseButton ? " X
" : "") ) .appendTo(document.body) .show(); } if (_I.showCloseButton) $("." + _I.cssClass).click(function(e) { $(_sb).hide(); }); this.show = function(message,timeout,isError) { if (_I.additive) { var html = "
" + message + "
"; if (_I.prependMultiline) _sb.prepend(html); else _sb.append(html); } else { if (!_I.showCloseButton) _sb.text(message); else { var t = _sb.find("div.statusbarclose"); _sb.text(message).prepend(t); } } _sb.show(); if (timeout) { if (isError) _sb.addClass(_I.errorClass); else _sb.addClass(_I.highlightClass); setTimeout( function() { _sb.removeClass(_I.highlightClass); if (_I.afterTimeoutText) _I.show(_I.afterTimeoutText); }, timeout); } } this.release = function() { if(_statusbar) $(_statusbar).remove(); } } // use this as a global instance to customize constructor // or do nothing and get a default status bar var _statusbar = null; function showStatus(message,timeout,additive,isError) { if (!_statusbar) _statusbar = new StatusBar(); _statusbar.show(message,timeout,additive,isError); }

Класс обеспечивает реализацию, а для свободного доступа к объекту создается дополнительный статический экземпляр _statusbar. В качестве альтернативы можно использовать представленную ниже функцию showStatus(), которая создает стандартный экземпляр строки состояния и запускает его. Таким образом, имея стили для statusbar и statushighlight, получаем отображение строки состояния в соответствии со стилем.

showStatus("Updated photo settings.",5000);

Если нужно настроить вывод строки состояния, можно с помощью конструктора с параметрами явно создать экземпляр _statusbar. Использование конструктора позволяет переопределить поведение и предоставляет еще несколько дополнительных свойств отображения статусной строки:

  • Многострочное окно информации о состоянии
  • Аддитивные статусные сообщения с добавлением новых снизу или сверху всего списка сообщений
  • Показывать кнопку «закрыть»
  • Возможность использования пользовательских классов CSS

Для настройки этих элементов необходимо на странице кода инициализации сделать следующее:

$(document).ready( function() {
    if (serverVars.adminMode)
    {
        MakeListEditable();   

        var status = "Click on caption to edit text. Drag image to sort list..."
        _statusbar = new StatusBar(null,{showCloseButton: true,
                                        additive:true,
                                        afterTimeoutText: status });
        _statusbar.show(status);
    }
} );

Есть возможность передачи свойств для настройки всех свойств строки состояния с помощью стандартного метода jQuery.extend(), куда можно передать объект со свойствами, которыми нужно расширить StatusBar.
Свойство additive позволяет отображать несколько статусных сообщений и добавлять новые сообщения сверху или снизу всего списка (используя свойство prependMultiline). Это дает возможность использовать строку состояния также в качестве средства отладки, так что вы сможете выводить статусные сообщения, а также избежать использования окон предупреждений alert(). А вот как это будет выглядеть:

Создав несколько экземпляров класса StatusBar можно создать на странице несколько строк состояния. Так, вы можете создать строку состояния для вывода сообщений и строку состояния для отладки и даже назначить им разные стили. Отладочную строку состояния удобнее разместить вертикально с правого или с левого края браузера. Для этого вы, скорее всего, пожелает изменить CSS.
Однако, есть еще несколько компонентов, обеспечивающих вывод отладки и если вам необходим инструмент вывода трассировки для помощи в отладке, вам, вероятно, лучше использовать один из плагинов jQuery. Но если вам нужен простой и быстрый способ вывода сообщений на экран в приложениях или даже в библиотечном коде, вышеописанный подход подойдет отлично, так как он может быть реализован простым дополнением строки кода без последующей настройки, подключая библиотечный код после загрузки скрипта.

На стороне сервера

Несколько человек спрашивали, как использовать компонент jQuery в ASP.NET. Ответ на этот вопрос так же прост как сама строка состояния: просто добавьте необходимый код JavaScript на страницу посредством объекта ClientScript (или с помощью ScriptManager, если вы используете MS AJAX). Представьте, что вам нужно установить исходное сообщение о состоянии, которое будет отображаться при загрузке страницы из кода ASP.NET. Для этого можно использовать такой код:

protected void ShowStatus(string message, int timeout)
{
    var script =
@"
jQuery(document).ready( function() {{
var status = '{0}';
_statusbar = new StatusBar(null,{{showCloseButton: true,
                            additive:true,
                            afterTimeoutText: status}} );
_statusbar.show(status,{1});
}});";      

    this.ClientScript.RegisterStartupScript(this.GetType(),
                      "showStatus",
                      string.Format(script, message, timeout), true);
}

Затем из любого места кода сделайте вызов:

this.ShowStatus("Click to start",0);

И вуаля – взаимодействие сервер-страница готово. Скорее всего, вы пожелаете убрать код инициализации со страницы со скриптом во избежание путаницы какое сообщение обрабатывать первым. Следует убедиться, что ShowMessage вызывается по крайней мере один раз для инициализации исходного сообщения и объекта _statusbar. При многократном использовании данной функциональности можно применять объект _statusbar в серверном компоненте и получить несколько свойств, управляющих исходным сообщением, а также настроить другие свойства компонента со стороны сервера. Это исключит необходимость в каких-либо специальных знаниях как, например, необходимость вывода исходного сообщения заранее без явного вызова метода ShowStatus. Возможно, для данного простого компонента это перегиб, но для более сложных компонентов будет, несомненно, полезным.

Строка состояния как плагин jQuery?

Как отмечалось ранее, только начало создания усовершенствованного класса и, скорее всего, придется потрудиться немного больше для окончательной шлифовки кода. Я также пытался реализовать строку состояния как плагин jQuery, но пока не могу найти эффективного способа.

jQuery допускает использование служебных функций над статическими сущностями jQuery, но я не думаю, что класс Statusbar будет действительно хорош в качестве статической функции/объекта, так как вся его работа заключается в добавлении префикса $/jQuery в синтаксис. В общем, в данном в случае я не вижу от этого никакой пользы. Класс Statusbar также не совсем приемлем как набор функций jQuery, посколку строка состояния объект в основном статичный.. Одним словом, я считаю, что строка состояния в качестве плагина jQuery лишь неоправданно усложнит компонент.

Есть другие идеи?

Что ж, надеюсь, кому-то статья будет полезной. Некоторое время я не редко прибегал к использованию строк состояния во многих своих приложениях, ведь этот компонент значительно упрощает вывод статусных сообщений в приложениях. Надеюсь, вы смогли найти здесь идеи создания различных вспомогательных функций/классов и сможете реализовать их в своем клиентском коде.
Download: wwjQuery.zip


Популярность: 90%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

jQuery - это очень просто! Часть 2

Фото автора =) 28.11.2008 от ROM Комментариев нет »

Спонсор поста: Оплатить итальянское наращивание волос в салоне.

Источник: JQuery, the very very basics - Lesson 2

Этот пост является продолжением серии “jQuery - это очень просто”. Первую часть можете прочитать по этому адресу: jQuery - это очень просто. Часть 1.

Было бы хорошо использовать комбинацию селекторов jQuery, чтобы получать массив элементов. Будет хорошо, если мы будем знать, как исследовать их один за другим и производить над ними операции.

size() and each(iterator)

Чтобы определить размер того, что мы только что выбрали, должны использовать команду size().

Например, чтобы получить все id элементов <p>, которые мы выбрали, надо использовать цикл for…loop и команду size():

for(var i=0;i< $('p').size(); i++)  alert('мой id'+$('p')[i].id);

Чтобы убрать лишнее, мы можем использовать команду each(). Доступ к элементу можно получить, используя кейворд “this”. Перепишем код вот так:

$("p").each( function() {
 alert('мой id'+this.id);
})

Берем и задаем значения атрибутов

addClass задает всем элементам, имеющих один CSS класс или несколько CSS классов.
removeClass наоборот убирает у элементов один или более CSS классов по заданному парамерту:

$('p.notes').addClass('notes', 'highlight');
$('p.notes').removeClass('highlight');

Мы можем не только задавать и снимать, но также и переключать. Команда toggleClass позволяет нам добавлять заданный CSS класс, если его нет, и удалять, если он есть.

$('p.notes').toggleClass('highlight');

css(имя, значение)

Что делать, если мы хотим изменить CSS стиль элемента без использования любых имен класса? Команда CSS позволяет сделать так:

$('p.note').css('background-color', 'yellow');

Здесь мы задаем параграфу с классом note желтый цвет фона.

Есть еще элементы width() и height(), которые позволяют нам напрямую изменять размеры элемента. Например:

$('p.note').width(500).height(100);

поменяет ширину и высоту всех элементов, которые имеют одинаковый класс note.


Популярность: 90%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: jQuery - это очень просто, Переводы |

jQuery - это очень просто! Часть 1

Фото автора =) 11.11.2008 от ROM 1 Комментарий »

Источник: JQuery, the very very basics - Lesson 1

jQuery - это звезда среди остальных библиотек. Её достоинства - это: легкость, кросс-браузерность и простота. Задача, которая потребовала бы 10 строк кода на javascript, решается одной строкой на jQuery. Например, Вы хотите раскрасить табличку с id=”mytable”, чтобы каждый ряд имел свой цвет.

$function() {
 $("table#mytable tr:nth-child(even)".addclass("even");
$("div.test").add("p.quote").html("мааааленький тест").fadeout();
});

Волшебный знак $ и цепочки операторов

В jQuery наиболее важный символ - это символ $. Функция $() возвращает объекты, следующие в цепочке операторов. Например:

$("div.test").add("p.quote").html("a little test").fadeOut();

Эта цепочка делает следующее:
1) Выбирает див с классом test
2) Вставляет параграф с именем класса quote
3) Добавляет текст в параграф
4) Оперирует дивом, используя fadeOut

Селекторы

CSS селекторы
Мы формируем оформление страниц с помощью CSS. CSS работает с элементами в DOM в следующем порядке: body, table, p, input или с помощью ID элемента (пока ID уникальный) или именами классов.

jQuery использует такие же методы, чтобы найти один элемент или группу. Например:
$(“p.note”) вернет все элементы, у которых имя класса = note $(“p#note”) вернет элемент

чей id = note
$(“p”) вернет все p элементы

Дочерние селекторы
Чтобы выбрать дочерний селектор, нам надо использовать “>”. Например, $(“p > a”) вернет все ссылки в p элементе.

Чтобы выбрать элемент или элементы с заданным атрибутом, надо использовать []. Например, input[type=text] вернет все элементы ввода, которые имеют тип text.

Чтобы выбрать контейнер с другими элементами, мы должны использовать has. Например, $(“p:has(a)”) вернет

<p>

.

Позиционные селекторы
jQuery позволяет Вам выбрать элементы в зависимости от их порядка.
$(“p:first”) вернет первый элемент.
Существующие позиции:
first, last, first-child, only-child, nth-child(n), nth-child(even), nth-child(odd)

Собственные селекторы
Эти селекторы позволяют делать всё, что нам нужно.
animated, button, checkbox, checked, disabled, enabled, header, hidden, image, input, not(filter), parent, password, radio, reset, selected, submit, text, visible


Популярность: 95%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: jQuery - это очень просто, Переводы |

Продемонстрируйте свои товары с помощью jQuery

Фото автора =) 01.10.2008 от ROM Комментарии (2) »

Спонсор поста: Просмотр и срочный выкуп квартир и помещений на первом этаже.

Когда Вы размещаете 2 или 3 продукта на странице сайта, всегда задумываетесь: как поинтереснее представить эти продукты? Этот скрипт немного поможет Вам. Используя jQuery, вы можете анимировать два или три продукта, делая при этом их вид интереснее.

Что это делает

Когда Вы кликаете на продукт, картинка увеличивается и появляется описание. Когда Вы кликаете на другой продукт, предыдущий открытый продукт уменьшается и новый увеличивается. Посмотрите пример, чтобы понять меня лучше: Пример работы скрипта

Как это работает

Сначала Вы должны использовать мою структуру HTML. Не забудьте добавить высоту и ширину ко всем тегам изображений. Иначе возможны проблемы в IE.

На внутреннем слое Вам надо сделать другой класс, чтобы определить небольшое изображение, которое будет использоваться как фоновое. Внутренний слой также содержит описание Вашего продукта.

Скачать исходный код

Оригинал: Feature your products with Jquery


Популярность: 83%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

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

Фото автора =) 29.07.2008 от ROM Комментариев нет »

Спонсор поста:Как быстро продать квартиру в
Москве
со скидкой.

Источник.

Пример.

Я могу решить эту проблему в пять строк!

<img src="img/logo.gif" alt="Detached Designs" id="image">
<a href="#" id="scroll">Scroll</a>

Это наш пример html. Тут просто картинка и тег-якорь. Теперь перейдем к jQuery.

$(document).ready(function()
 {
  $("#scroll").click(function()
 {
 var theLeftAmount = $("#image").css("left");
 var theNumber = parseFloat(theLeftAmount, 10);
 theNumber += 25;
 var amountToShift = theNumber + "px";
 $("#image").css("left", amountToShift); });
 });

Теперь разберем код.

$(document).ready(function()
 {
  $("#scroll").click(function()

Когда документ готов, мы находим тег с id=”scroll” и вызываем функцию, когда по нему кликают.

var theLeftAmount = $("#image").css("left");
var theNumber = parseFloat(theLeftAmount, 10);
theNumber += 25;
var amountToShift = theNumber + "px";

Здесь мы делаем несколько переменных. Чтобы сдвинуть картинку, мы будем менять свойство “left” в CSS. Переменная “theLeftAmount” будет хранить текущее значение. Если в CSS задано “20px”, “theLeftAmount” будет эквивалентно “20px”.

Переменная “theNumber” хранит число без “px” в конце.

Следующим шагом мы добавим к номеру 25px. Мы создаем новую переменную “amountToShift” и помещаем значение, эквивалентное нашему “theNumber” плюс еденицу измерения “px”.

$("#image").css("left", amountToShift); });

Наконец мы меняем свойство нашей картинки на новое значение (amountToShift).

Обратите внимание, что все примеры, использующие css, добавляют стили непосредственно в документ. Я делаю это, чтобы было проще. В идеале Вы хотели бы добавлять стили напрямую и затем ссылаться на них, используя “addClass”.


Популярность: 35%

Похожие посты:
  • None Found
Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

Как сделать ссылку “Прочитать дальше”, которая развернет оставшийся текст.

Фото автора =) 22.07.2008 от ROM Комментарии (2) »

Спонсор поста: Круглые светильники из хрусталя.

Оригинал.

Пример.

Это очень легко! Давайте сделаем html пример.

<p>
 This is some text. This is some text. This is some text. This is some text. This
 is some text. This is some text. This is some text. This is some text. This is some
 text. This is some text. This is some text. <span class="readMore">Read More</span>
</p>
<p>
 This is some text. This is some text. This is some text. This is some text. This
 is some text. This is some text. This is some text. This is some text. This is some
 text. This is some text. This is some text. This is some text. This is some text.
</p>

Это только некоторый текст с двумя параграфами. Мы также имеем span с классом “readMore”. Когда по span кликнули, мы должны его убрать.

$(document).ready(function()
 {
  $('p:eq(1)').hide();
  $('span.readMore').css({"cursor" : "pointer", "color" : "blue", "font-size" : ".8em"}).click(function()
 {
  $('p:eq(1)').fadeIn("slow");
  $(this).fadeOut("normal");
});
});

$(document).ready(function()
{
$(‘p:eq(1)’).hide();
$(‘span.readMore’).css({“cursor” : “pointer”, “color” : “blue”, “font-size” : “.8em”}).click(function()
{
$(‘p:eq(1)’).fadeIn(“slow”);
$(this).fadeOut(“normal”);
});
});

Здесь мы собираемся спрятать второй параграф (p:eq(1)). Помните, что javascript использует 0 как первое число. Соответсвенно “1” будет эквивалентно второму параграфу.

$('span.readMore').css({"cursor" : "pointer", "color" : "blue", "font-size" : ".8em"}).click(function()

Следующим шагом задаем span с классом “readMore” некоторый CSS. Мы поменяем курсор на указатель для того, чтобы пользователи могли увидеть, что этот span кликабельный. Далее мы поменяем цвет, чтобы выделить, и немного уменьшим размер текста. Далее запустим функцию, когда кликнут по span.

$('p:eq(1)').fadeIn("slow");
$(this).fadeOut("normal");

Когда кликнут, мы собираемся найти второй параграф и медленно показать его. Затем “this” (span, по которому кликнули) будет “растворяться” в течении 0.4 секунды (“normal”).

Это всё, что надо сделать!


Популярность: 35%

Похожие посты:
  • None Found
Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

Как увеличить картинку, когда на неё кликают

Фото автора =) 15.07.2008 от ROM Комментариев нет »

Спонсор поста: Поможем осуществить срочный выкуп квартир.

Оригинал.

Пример.

На самом деле это очень просто. Для начала сделаем короткий html.

<img src="img/logo.gif" alt="Logo" id="image">
 <p>
  Click To Zoom In
 </p>

Тут мы имеем картинку и параграф. Мы могли использовать и другой тэг вместо параграфа. Я хотел показать, как мы можем задать событие по клику для любого элемента.

$(document).ready(function()
    {
    $("#image").css("width", "100px");
        $("#image").toggle(function()
            {
                $(this).animate({width: "300px"}, 1000);
                $('p').text("Click To Zoom Out");
                
            }, function(){
                $(this).animate({width: "100px"}, 1000);
                $('p').text("Click To Zoom In");
            });
    });

Шаг за шагом:

$(document).ready(function()
    {
    $("#image").css("width", "100px");

$(document).ready(function()
{
$(“#image”).css(“width”, “100px”);

Когда документ готов, мы задаем ширину элемента с id=”image” равную 100 пикселям.

$("#image").toggle(function()
 {
  $(this).animate({width: "300px"}, 1000);
  $('p').text("Click To Zoom Out");

Когда картинку кликнули, мы запускаем метод toggle. Используя “toggle”, мы можем задать две функции. Первая будет запущена, когда картинку кликнули первый раз. Вторая - когда второй раз кликнули по картинке. Это наилучшее при использовании расширяющихся/уменьшающихся элементов.

Когда картинка кликнута первый раз, мы собираемся взять “this” (картинка, по которой кликнули) и анимировать её. Мы изменим ширину картинки до 300 точек и раздвинем её в течении секунды.

}, function(){
 $(this).animate({width: "100px"}, 1000);
$('p').text("Click To Zoom In");

Когда картинку кликнули во второй раз, мы изменяем ширину картинки назад к 100 точкам и изменяем текст параграфа.


Популярность: 37%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

Как я могу увеличить или уменьшить текст.

Фото автора =) 08.07.2008 от ROM Комментарии (2) »

Спонсор поста: Большие ортопедические матрасы для кроватей.

Оригинал

Как я могу увеличить или уменьшить текст с jQuery?

Посмотрите пример.

Есть несколько путей, которыми вы можете достичь этой цели. Мы покажем только одну. Сначала давайте сделаем простую страничку.

<div>  
    <p id="text">  
     This is some text. This is some text. This is some text. This is some text. This  
     is some text. This is some text. This is some text. This is some text. This is some  
     text. This is some text. This is some text. This is some text. This is some text.  
     This is some text. This is some text. This is some text. This is some text. This  
     is some text. This is some text.  
    </p>  
    <a href="#" id="smallerTextLink">Smaller Text</a>  
    <a href="#" id="largerTextLink">Larger Text</a>  
  </div>

Здесь мы сделали некоторый текст и две ссылки. Когда кликаются ссылки, мы смотрим, что текст надо увеличить или уменьшить. Теперь давайте посмотрим на jQuery:

$(document).ready(function()
{
$('a').click(function()
{
    var theElement = $("#text").css("font-size");
    var textSize = parseFloat(theElement, 10);
    var unitOfMeasurement = theElement.slice(-2);

    if ( (this).id == "largerTextLink")
    {
	textSize += 2;
    }
    else
    {
	 textSize -= 2;
    };

    $('p').css("font-size",  textSize + unitOfMeasurement);

    return false;
    });
});

Как всегда рассмотрим код шаг за шагом.

$(document).ready(function()
        {
            $('a').click(function()

Когда документ готов, мы смотрим на все теги “а” и запускаем функцию.

var theElement = $("#text").css("font-size");
var textSize = parseFloat(theElement, 10);
var unitOfMeasurement = theElement.slice(-2);

Здесь мы сделали несколько вариантов. “theElement” найдет параграф с id=”text” и возьмет его размер шрифта из CSS. Когда мы добавляем свойство в круглых скобках, мы говорим jQuery получить размер шрифта параграфа. Этот параметр может быть возвращен как номером, так и параметром (то есть 20px). Нам необходимо их разделить.

Переменная “textSize” использует метод “parseFloat”. Этот метод просмотрит все значения и уберет нецифровые символы. В этом случае мы разбираем свойство font-size, чтобы избавиться от “px”. “10” обозначает, что мы работаем с базовым шрифтом десятого размера.

“unitOfMeasurement” берет едеиницу измерения шрифта путем получения последних двух символов (px). Нам это необходимо, чтобы добавить новое значение.

if ( (this).id == "largerTextLink")
{
	textSize += 2;
}
else
{
	textSize -= 2;
};

This if statement is checking to whether the anchor tag that was clicked has an id of “largerTextLink”. If it does, then we’re going to add 2px to the textSize. This is the same as writing - textSize = textSize + 2 -. If it is not, the user must have clicked the “smallerTextLink” anchor tag. In that case, we’ll decrease the textSize by 2px.

Это выражение проверяет, был ли кликнут тэг с id=”largerTextLink”. Если был, тогда мы собираемся добавить 2px к textSize. Если нет, значит пользователь кликнул “smallerTextLink”. В этом случае мы уменьшаем textSize на 2px.

$('p').css("font-size",  textSize + unitOfMeasurement);
return false;

Наконец мы собираемся задать параграфу новое значение. Font-size будет задано новое значение textSize плюс unitOfMeasurement. Очень просто, правда?


Популярность: 30%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

Загрузка данных с другой страницы с помощью jQuery

Фото автора =) 24.06.2008 от ROM 1 Комментарий »

Спонсор поста: Частичное окрашивание волос в салоне красоты.

Оригинал: Load Data From Other Pages With jQuery

В этом руководстве мы возьмем данные из одной страницы и отобразим их на другой. Сейчас Вы можете скачать пример и посмотреть в действии.

В этом примере Вы должны сделать две странички. Первая будет называться “loadData.htm” и вторая - “theOtherPage.htm”.

Страница с данными
Для начала сделаем пример данных в нашей странице с названием “theOtherPage.htm”. Ради простоты я сделал список, который содержит мои любимые фильмы.

<ul id="favoriteMovies">
<li style="font-weight: bold; list-style-type: none;">My Favorite Movies</li>
<li>Contact</li>
<li>Shawshank Redemption</li>
<li>Napoleon Dynamite</li>
<li>Back To The Future</li>
<li>The Goonies</li>
<li>Cinderella Man</li>
<li>Apollo 13</li>
</ul>

Здесь нет ничего сложного. Главное - задать у списка id “favoriteMovies”.

Страница для получения данных
Следующим шагом сделаем страницу “loadData.htm”.

<div id="container">
 <a href="#" id="loadData">Click This Link To Load My Favorite Movies</a>
</div>

Это, в некотором роде, наша главная страница. Здесь у нас есть ссылка, которая содержит id “loadData”. Когда пользователь кликает по ссылке, запускается некоторый код, который заберет данные со страницы “theOtherPage.htm”.

jQuery

$(document).ready(function()
 {
  $("#loadData").click(function()
   {
    $(this).text("...One Moment Please...");
     $("#container").append('<div id="favoriteMovies"></div>')
                    .children("#favoriteMovies").hide()
                    .load("theOtherPage.htm ul#favoriteMovies", function()
                     {
                      $("#loadData").remove();
                      $("#favoriteMovies").slideDown("slow");
                     });
   return false;
   });
});

Разберем код сначала: когда документ будет готов, мы находим тег с id равным “loadData”. Затем, когда тэг “кликнули”, мы запускаем функцию. Сначала мы изменим свойство тэга, чтобы сказать пользователю, что информация загружается. Затем мы находим наш “container” и добавляем новый div как его потомка. Мы называем новый div “favoriteMovies”. Далее мы прячем этот див до тех пор, пока данные не загрузятся полностью.

Метод LOAD()
Метод .load загружает данные для нас. Здесь мы определяем в скобках путь. Путь указывает напрямую на страницу “theOtherPage.htm”. Затем находит список с id “favoriteMovies” и забирает эти данные. После загрузки данных вызывается функция. Она просто удаляет тэг, т.к. нам он больше не нужен, и раскрывает новый div “favoriteMovies”.

Вы можете посмотреть пример в действии и скачать пример.


Популярность: 38%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

Скользящее сверху меню с jQuery

Фото автора =) 17.06.2008 от ROM Комментариев нет »

Гарантийный ремонт ноутбуков, ремонт мониторов в сервисном центре “Стаханов”

Источник

“Скользящие” меню очень эффективны в областях, где у нас ограничено пространство.

Это скользящее сверху меню создано с помощью jQuery. Меню работает с помощью кнопок “Открыть” и “Закрыть”, которые могут быть любым тегом с заданным классом.

Вы также можете использовать его как информационное окно, диалог входа и по-другому.

Посмотрите пример, как работает меню.

Делаем? Читать полностью »


Популярность: 44%

Подпишитесь: rss icon RSS Записей rss iconRSS комментариев.
Понравился пост? Поддержи сайт!

Рубрики: JQuery, Переводы |

« Раньше


Рубрики:

Управление:




Рейтинг блогов
Рейтинг блогов
Рейтинг блогов
Яндекс цитирования
Каталог блогов Blogdir.ru
количество читателей онлайн и всего


Я - на Карте
Пожертвовать
Каждому своё…
Блог о jQuery, Linux и немного программировании