Показаны сообщения с ярлыком навигация по странице. Показать все сообщения
Показаны сообщения с ярлыком навигация по странице. Показать все сообщения

4 сент. 2011 г.

Вертикальный скроллинг страницы средствами jQuery и кроссбраузерность

Вертикальный скроллинг страницы средствами jQuery и кроссбраузерность из песочницы

Далее представлена кроссбраузерная реализация скроллинга страницы средствами jQuery.

Подготавливаем основу

Итак, что мы будем делать. Будем делать две кнопки «вверх» и «вниз», по нажатию на которые осуществляется плавный скроллинг страницы в самое начало и в самый конец, соответственно. При этом реализация должна одинаково работать во всех современных браузерах.
Задача ясна, приступим к реализации. Для начала, напишем самое простое, а именно HTML код кнопок и соответствующие им CSS стили.

HTML код кнопок:


<div id="up"><p class="pPageScroll">Вверх</p></div>
<div id="down"><p class="pPageScroll">Вниз</p></div>


CSS стили:

#up
{
width:60px;
height:60px;
position:fixed;
bottom:50px;
left:20px;
background-color:#000000;
border-radius:30px;
}
#down
{
width:60px;
height:60px;
position:fixed;
bottom:50px;
left:90px;
background-color:#000000;
border-radius:30px;
}
.pPageScroll
{
color:#FFFFFF;
font:bold 12pt 'Comic Sans MS';
text-align:center;
}


В итоге мы имеем два круга с надписями «Вверх» и «Вниз» в левом нижнем углу браузера.

Проблемы начинаются


Теперь начинается самое интересное – JavaScript, а точнее jQuery. Как известно, для организации скроллинга выполняются манипуляции над свойствами scrollTop и scrollLeft. В jQuery эти манипуляции осуществляются при помощи методов .scrollTop() и .scrollLeft() соответственно. Нас интересует только .scrollTop.
Первый, самый простой вариант скроллинга выглядел следующим образом:

//Обработка нажатия на кнопку "Вверх"
$("#up").click(function(){
//Необходимо прокрутить в начало страницы
$("body").animate({"scrollTop":0},"slow");
});

//Обработка нажатия на кнопку "Вниз"
$("#down").click(function(){
//Необходимо прокрутить в конец страницы
var height=$("body").height();
$("body").animate({"scrollTop":height},”slow”);
});


Всё, ну очень просто и незатейливо. Но, вот незадача, если в Chrom’е всё было довольно безоблачно и симпатично, в Oper’е тоже довольно сносно (прокрутка вверх осуществлялась мгновенно), то «ВредныйЛис» скролиться отказывался напрочь. Не долго думая, заменив в строчке: $(«body»).animate «body» на «html», я изменил ситуации кардинально: FireFox заработал, Opera перестал рывком прокручивать вверх и стал делать это плавно, но теперь уже Chrome перестал реагировать на манипуляции с кнопками. Из приведённых выше мытарств последовал следующий вариант перевариваемый всеми браузерами: $(«html,body»).animate… Других приемлемых способов осуществлять скроллинг, работающих во всех браузерах найдено не было.

Добавим рюшечек и бантиков


С самой простой частью разобрались. Базовый функционал получен, теперь можно придумать, что-нибудь поинтереснее. Первое же, что бросается в глаза, так это скорость скроллинга. При наличии сколь бы то ни было насыщенного контента, использование скроллинга становится настоящим тестом на склонность к эпилепсии. Поэтому, хочется, чтобы скроллинг был более плавным. Решение в лоб, задать определённую константу времени за которое должен осуществляться скроллинг. Очевидный плюс: элементарность решения. Не менее очевидный минус: никак не учитывается объём контента. Разумное решение: вычислять время выполнения скроллинга в зависимости от размера контента. Приступим.
В код обоих кнопок нужно дописать, вычисление текущей позиции. Для этого как раз и используется jQuery() метод .scrollTop().
Здесь, появляются уже известные проблемы: $(«body»).scrollTop() работает только в Chrome, $(«html»).scrollTop() не работает в Chrome. Что, вообще говоря, удивляет, так как получается, что конструкцией $(«body»).animate({«scrollTop»:height},”slow”) в Opera мы можем скролить body, а при получении, свойство scrollTop тега body равно нулю, что, судя из описания element. scrollTop справедливо для элементов, которые скролить нельзя.
Вариант $(«body,html»).scrollTop() по понятным причинам нам не подходит. Ищем альтернативы. Оказывается, текущую позицию можно получить из объектов window и document, так чтобы это устраивало все браузеры. Думаю, следует упомянуть, что использование их для анимации (например вот так: $(document).animate.), ни к чему хорошему не приводит.
Итак, за рабочий вариант выяснения текущей позиции примем: $(document).scrollTop();
Теперь задумаемся над тем, как мы будем вычислять время. Вообще говоря решение тривиальное и известно каждому: время = путь/скорость. Для определения пути, нам как раз и нужна текущая позиция. Также, нужны координаты точки назначения. С кнопкой «Вверх» всё просто, координата точки назначения по вертикальной оси равна нулю, значит, путь равен текущему положению. Для кнопки «Вниз» всё немного сложнее, нам нужно получить «высоту» документа. Уже предвкушаем проблемы, да? Но нет, тут всё оказывается очень просто. Вполне подходящую высоту можно получить используя в качестве селектора «body», «html» или document.
Так. У нас есть путь, теперь нужна скорость. Здесь уже всё зависит лично от вас. Путём визуальных прикидок, мне показалась комфортной скорость 1.73 (цифра не имеет под собой никакого, сколь бы то ни было серьёзного обоснования и прикидывалась на глаз).

Итоговый вариант


Таким образом, рабочий код выглядит следующим образом:

$(document).ready(function(){
//Обработка нажатия на кнопку "Вверх"
$("#up").click(function(){
//Необходимо прокрутить в начало страницы
var curPos=$(document).scrollTop();
var scrollTime=curPos/1.73;
$("body,html").animate({"scrollTop":0},scrollTime);
});

//Обработка нажатия на кнопку "Вниз"
$("#down").click(function(){
//Необходимо прокрутить в конец страницы
var curPos=$(document).scrollTop();
var height=$("body").height();
var scrollTime=(height-curPos)/1.73;
$("body,html").animate({"scrollTop":height},scrollTime);
});
});


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

Резюме


В итоге мы получили очень простую реализацию скроллинга страницы, которая работает в любом современном браузере.
Испытания проводились для DOCTYPE: XHTML 1.0 Strict в браузерах Chrome 10, Opera 10, Opera 11, Firefox 4, Internet Explorer 8, Internet Explorer 9.

Некоторые проблемы:
  • border-radius как известно в IE8 не работает, но кроссбраузерность вёрстки это не тема данного топика.
  • В Opera 10 инструкция: $(«body,html»).animate({«scrollTop»:0},scrollTime); приводит к моментальному переходу в начало страницы. Эта проблема исчезает с переходом на Opera 11.


UPD: Поправлен итоговый пример.

29 апр. 2011 г.

Кнопки вперёд и назад средствами HTML

кнопка назад:
<INPUT TYPE="button" VALUE="Назад" onClick="history.go(-1);">

кнопка вперёд:
<INPUT TYPE="button" VALUE="Вперёд" onClick="history.forward()">

27 апр. 2011 г.

Ссылки внутри страницы, закладки, якоря

Ссылки внутри страницы

Большие документы читаются лучше, если они имеют оглавление со ссылками на соответствующие разделы. Для создания ссылки следует вначале сделать закладку (якорь) в соответствующем месте и дать ей имя при помощи параметра name тега <А>, как показано в примере 1.
Пример 1. Создание внутренней ссылки
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Закладка</title>
</head>
<body>

<p><a name="top"></a></p> 

<p>Друг уронил утюг в унитаз. И разбил его. Причем так разбил, что по назначению унитаз и использовать никак нельзя, ни боком, ни передом. Мгновением назад только что вот все было хорошо и вот уже дыра прямо в унитазе, да такая, что можно забыть, что есть такой предмет в доме. Махнул рукой нечаянно, а потом мучайся...

<p><a href="#top">Наверх</a></p>

</body>
</html>
Между тегами <a name="top"> и </a> отсутствует текст, так как требуется лишь указать местоположение перехода по ссылке, находящейся внизу страницы. Имя ссылки на закладку начинается символом #, после чего идет название закладки. Название выбирается любое, соответствующее тематике.
Можно также делать ссылку на закладку, находящуюся в другой веб-странице и даже другом сайте. Для этого в адресе ссылки надлежит указать ее адрес и в конце добавить символ решетки # и имя закладки (пример 2).
Пример 2. Ссылка на закладку из другой веб-страницы
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Закладка</title>
</head>
<body>

<p><a href="text.html#bottom">Перейти к нижней части текста</a></p>

</body>
</html>
В данном примере показано создание ссылки на файл text.html, при открытии этого файла происходит переход на закладку с именем bottom.

1 нояб. 2010 г.

Вперёд, назад, к началу. Навигация по веб-странице

Команды «Вперед» и «Назад», размещенные непосредственно на веб-странице Известно, что при просмотре веб-страниц очень часто приходится пользоватся кнопками на браузере Back («Вперед») и Forward («Назад»), что означает вернутся назад на предыдущую страницу или пройти на страницу вперед (если вы перед этим вернулись. Такие кнопки можно сделать кнопки на самой странице. Вот пример использования клиентских сценариев.
Второй вариант клиентских сценариев, обеспечивающих возврат Вперед или Назад по истории листания веб-страниц, которую хранит Ваш браузер.

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

Кнопка a обеспечивает переход на страницу URL-адрес-a. Кнопка b обеспечивает переход на страницу URL-адрес-b и так далее.
На одном из сайтов не заработал простейший вариант и пришлось найти вот этот:

30 янв. 1999 г.

Инструменты для проверки отображения и доступности сайта

20 наиболее необходимых инструментов для проверки отображения сайта

Доступность контента и отображение информации на сайте чрезвычайно важна. Говоря простым языком, что хорошего может сделать то, что находится у вас на сайте, если определенные люди не смогут увидеть это? Конечно, этот новый модный дизайн с мелким шрифтом и малоконтрастными цветами для вас и ваших друзей выглядит классно, но вот что насчет тех, у кого слабое зрение, или тех, кто не различает некоторые цвета, или тех, у кого какие-либо другие проблемы со зрением — они ведь просто не смогут ничего найти, не говоря уже о том, чтобы прочитать хоть что-нибудь на вашем сайте. Вам надо, даже не «надо», а вы ДОЛЖНЫ сделать свой сайт доступным для как можно большего числа посетителей.

Только вот, что же делать, чтобы гарантировать доступность своего сайта? После прочтения данной статьи ваша задача значительно упростится. Ниже вы найдете 20 инструментов, помогающих сделать сайт более доступным.

Спонсор перевода: Студия Айкен

WAVE


wave
WAVE является бесплатным инструментом, который поможет в процессе оценки доступности сайта. Вместо того, чтобы выдать отчет, написанный сложным техническим языком, WAVE покажет оригинал вашей веб-страницы, встроив в неё иконки и индикаторы, которые показывают уровень её доступности.

IDI


idi
IDI Web Accessibility Checker (проверка доступности сайта) проверяет веб-страницы на соответствие стандартам доступности сайтов для того, чтобы убедиться, что все имеют доступ к содержимому тестируемого сайта.

Vischeck


vischeck
Vischeck покажет, как страницы сайта видят те, кто не различает некоторые цвета. Вы можете воспользоваться услугой Vischeck он-лайн, проверив графический файл, либо запустив её на проверку вашей веб-страницы. Также есть возможность загрузить Vischeck на свой компьютер и пользоваться ею без подключения к интернету.

Colour Contrast Check


contrast-checker
Colour Contrast Check позволяет выбрать основной и фоновый цвета и посмотреть, достаточно ли они контрастные, когда на них смотрит тот, кто страдает цветовой слепотой, а также насколько они контрастны на черно-белом экране.

mobiReady

mobi
mobiReady — механизм для оценки подготовленности сайта для просмотра на экранах мобильных устройств, который использует промышленную практику и стандарты. Он выдаст вам бесплатный отчет с оценкой (от 1 до 5) и подробным анализом веб-страниц для того, чтобы определить, насколько хорошо сайт подходит для просмотра на экранах мобильных устройств.

Stanford Web Accessibility Checker


stanford
Stanford Web Accessibility Checker — это программный инструмент, который анализирует ваши веб-страницы и проверяет их на наличие возможных препятствий для того, чтобы они соответствовали стандартам доступности. Вы можете указать ему адрес страницы, которую необходимо проверить, либо отправить рабочий файл на оценку. В результате проверки вы получите отчет со всеми возможными проблемами с доступностью по выбранным вами категориям.

Check My Colours


check-my-colours
Check My Colours является инструментом для проверки комбинаций основного и фонового цвета всех элементов Объектных Моделей Документов (DOM) и определения того, имеют ли они достаточный контраст для тех, кто не различает некоторые цвета.

Lynx Viewer


lynx
Lynx Viewer позволяет вам увидеть ваши страницы так, как они выглядят в текстовом браузере Lynx. Он также продемонстрирует Вам как поисковые системы видят ваш сайт. Вдобавок к этому, он поможет определить насколько Ваши страницы доступны для людей с проблемами зрения.

Quick Page Accessibility Tester


quick-page-tester
Quick Page Accessibility Tester является букмарклетом, кликнув на который в любое время вы сможете получить быстрый анализ ваших веб-страниц. Он выделит явные проблемные моменты на вашей странице, предупредит о возможных проблемах, а также выделит те области, доступность которых можно улучшить с помощью средств стандарта доступности активных Интернет-приложений (ARIA).

GrayBit


graybit
GrayBit — это инструмент он-лайн проверки доступности, который конвертирует ваши полноцветные веб-страницы в полутона серого для того, чтобы зрительно протестировать наблюдаемый на странице контраст.

Accessibility Color Wheel


color-wheel
Accessibility Color Wheel позволит вам увидеть какую доступность имеет та или иная цветовая пара. Выберите основной и фоновый цвет, указав мышкой цвет на шкале или на полосе серого цвета и кликнув на вашем выборе. Если в ответ вы получите «ОК», то это значит, что данная цветовая пара подходит с точки зрения доступности. В обратном случае, вы сможете изменять один или оба цвета пока не получите подходящий результат («ОК»).

HERA


hera
HERA является инструментом для проверки соответствия доступности ваших веб-страниц спецификациям «Рекомендаций по общедоступности веб-контента» (WCAG). HERA проводит серию проверок ваших веб-страниц, определяет любые, которые возможно обнаружить в автоматическом режиме, ошибки, или отдельные пункты, которым соответствуют страницы, а также показывает те пункты, которые требуют ручного подтверждения.

Accessibility Valet


valet
Accessibility Valet показывает разметку ваших веб-страниц в нормализованном виде. Он подчеркивает действующую, исключенную и фальшивую разметку, а также неправильно расположенные элементы. В создаваемом отчете показаны все предупреждения о проблемах с доступностью.

Cynthia Says


cynthia-says
Cynthia Says — это инструмент оценки доступности контента, который находит ошибки в вашем дизайне, имеющие отношение к Разделу 506 стандартов и Рекомендациям WCAG.

TAW


taw
TAW является инструментом для анализа ваших веб-страниц, который основывается на Рекомендациях по общедоступности веб-контента 1.0 от W3C. В дополнение к он-лайн инструменту, есть возможность загрузить отдельное ПО.

WebAnywhere


webanywhere
WebAnywhere («Веб повсюду») — это не визуальный интерфейс, который позволит вам обращаться к своим страницам так, как к ним обращаются такие программы для чтения экрана, как JAWS или Windows-Eyes.

Colour Contrast Analyser


colour-contrast-analyser
Colour Contrast Analyser — это расширение для браузера Firefox, которое составляет список комбинаций цвета, используемых на ваших веб-страницах. Он размещает цвета в таблице, которая суммирует основной цвет, цвет фона, степень яркости/контрастности, а также разницу между цветом и яркостью.

WAT


wat
WAT встраивается в качестве дополнительной панели инструментов в Internet Explorer и помогает Вам вручную проверить ваши веб-страницы на различные аспекты их доступности.

Firefox Accessibility Extension


firefox
Firefox Accessibility Extension является именно тем, о чём говорит его название — расширение для браузера Firefox, поддерживающее функциональную доступность веб-страниц, и которое вы сможете использовать для проверки структурной и стилевой разметки ваших веб-страниц. С его помощью вы облегчите просмотр и навигацию по Вашим веб-страницам людям с ограниченной дееспособностью.

Accessibility Favelets


accessibility-favelets
Accessibility Favelets — это сборник букмарклетов, который поможет вам с вопросом доступности в вашей работе над веб-страницами. Они представляют собой небольшие скрипты, которые вы сохраняете (например, в виде закладок в браузере), а потом можете использовать для проверки доступности на одной из ваших веб-страниц.