Принтабельные ссылки
[04.09.2005]

Сегодня напишем на модном javascript’e приблуду, добавляющую в версии для печати ко всем ссылкам в тексте их href’ы.

ЧПУ без mod_rewrite
[03.09.2005]

Пишем систему для реализации человеко-понятного URL’я. Данный способ предназначен только для извращенцев и тех, у кого на хостинге отсутствует поддержка модуля mod_rewrite. Описанная система работает на даном сайте уже около двух лет.

Фотомонтажим на PHP
[10.04.2005]

Возвращаясь к теме работы с изображениями в PHP, рассмотрим реализацию «смешивания» изображения из нескольких картинок, и способы практического применения такого трюка.

Отправка и обработка ответов http-запросов с помощью JavaScript (использование объекта XMLHttpRequest)
[22.03.2005]

Разберёмся с возможностями, которые предоставляет нам объект XMLHttpRequest. Попробуем реализовать на JavaScript работу с удаленным сервером посредством прямой отправки http-запросов и обработкой ответов.

Работа с изображениями в PHP (часть вторая)
[07.12.2004]

Продолжая тему, сегодня поговорим о шрифтах и работе с текстом в изображениях и разберемся, как писать в графике «по-русски».

Работа с мышиным курсором в JavaScript. Часть третья.
[25.07.2004]

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

Управление прокруткой с помощью JavaScript

Версия для печати | Содержание раздела

Есть такое полезное средство в JavaScript... Сегодня мы и поговорим о том, как им пользововаться, да обсудим некоторые способы его практического использования.

Бывает, что иногда стандартная виндозная полоса прокрутки портит внешний вид страницы (если, например, это презентационный насыщеный графикой сайт). В этом случае можно создать альтернативную прокрутку с помощью несложного JavaScript-скрипта.

Однако учтите, что удобней, чем стандартная, она вряд ли будет (хотя, кто знает...), но красивей — это уж наверняка!

Если вас это устраивает, приступим. Во-первых...

Функции управления прокруткой

Их есть у нас две: scrollBy(x,y) и scrollTo(x,y), где x и y — это, соответственно, горизонтальное и вертикальное смещение прокрутки. Но это, впрочем, не совсем функции, это методы — функции, которые пренадлежат объекту (в данном случае, объектами могут выступать: window, frame и iframe). Тоесть, вызов этих функций имеет такой вид (ссылка для прокрутки текущего окна на верх страницы — наверх):

<a href="javascript:window.scrollTo(0,0);">наверх</a>

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

Также вызов можно помещать в функции и обращаться к объектам при помощи имён (ну, как обычно):

// прокрутка фрейма с именем 'main' на 100 пунктов:
document.frames['main'].scrollBy(0,100); 

// прокрутка родительского окна на начало:
window.parent.scrollTo(0,0);

Практическое применение

Итак, теперь небольшой пример практического использования сегодняшних знаний. Создадим удобное окошко для просмотра какой-нибуть информации с применением альтернативной прокрутки.

Во-первых, создадим само окно на основе iframe. Для него средствами стандартного HTML надо будет убрать полосы прокрутки, рамку (чтобы при необходимости создать свою), а также установить размеры самого окна:

<iframe width=200 height=120 
scrolling="no" frameborder="no" 
src="YOURPAGE.HTML" id="textw"></iframe>

А теперь — скриптовая часть. Опредилим две функции, для прокрутки, собственно, вверх и вниз. Параметром ей будем передавать количество пикселей для прокручивания:

function scrollUp(s)
{
  document.frames['textw'].scrollBy(0,-s);
}

function scrollDown(s)
{
  document.frames['textw'].scrollBy(0,s);
}

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

<img src="down.gif" 
onmouseover="t=setInterval('scrollDown(1);',30);" 
onmouseout="clearInterval(t);">

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

Вот что получилось у меня (подвигайте курсор вдоль зелёной стрелки):





Вы, конечно же, сможете сделать и лучше, например вынести ещё информацию о текущем состоянии прокрутки (в виде бегунка, как все привыкли, или как-нибуть по-другому)... Но для этого надо будет вводить дополнительную переменную состояния, и увеличивать её (или уменьшать) при каждом проходе функции скроллинга...

В общем, дерзайте, удачи в скриптовании,
...и, как всегда, если что — стучите в ящик...

10.08.2003