Пример маскируемого плавающего эффекта с помощью jQuery
Mashable, наиболее известный как веб-сайт ресурсов социальных сетей, создавал потрясающий эффект плавания при прокрутке страницы пользователем. Вот простая идея клонировать этот плавающий эффект с помощью jQuery.
Идея ...
-
Создайте плавающую коробку.
-
Начальное расположение плавающей коробки, поместите ее рядом с содержимым тела.
-
Пока пользователь прокручивает страницу, продолжайте проверять положение полосы прокрутки.
-
Если позиция полосы прокрутки y больше, чем позиция y плавающей рамки, динамически измените позицию y плавающей рамки.
-
Пока полоса прокрутки y меньше позиции плавающей рамки y, восстановите исходную позицию.
-
Используйте jQuery, конечно.
1. HTML-макет
Простая HTML-разметка, верхний и нижний колонтитулы, содержимое и нижний колонтитул, поместите div «плавающий ящик» над содержимым
header
content
Mashable floating effect example
2. Плавающая коробка 90 × 200
Это поле, которое будет плавно перемещаться, пока люди прокручивают поле. Возможно, вам придется немного отрегулировать“margin-left:-100px; ”в соответствии с вашими потребностями.
#floating-box{ width:90px; height:200px; border:1px solid red; background-color:#BBBBBB; float:left; margin-left:-100px; margin-right:10px; position:absolute; z-index:1; }
3. Нет конфликтов, пожалуйста
Убедитесь, что jQuery не конфликтует с другой библиотекой. Очень рекомендую проверить это.
//avoid conflict with other script $j=jQuery.noConflict(); $j(document).ready(function($) {
4. Позиция, позиция, должность
Свяжите событие jQuery scroll (), чтобы постоянно проверять положение полосы прокрутки браузера.
$(window).scroll(function () { var scrollY = $(window).scrollTop(); var isfixed = $floatingbox.css('position') == 'fixed'; if($floatingbox.length > 0){ if ( scrollY > bodyY && !isfixed ) { $floatingbox.stop().css({ position: 'fixed', left: '50%', top: 20, marginLeft: -500 }); } else if ( scrollY < bodyY && isfixed ) { $floatingbox.css({ position: 'relative', left: 0, top: 0, marginLeft: originalX }); } } });
Если положение y полосы прокрутки больше, чем положение y плавающего прямоугольника, измените положение y плавающего прямоугольника на «marginLeft: -500». Возможно, вам придется настроить это значение в соответствии с вашими потребностями.
if ( scrollY > bodyY && !isfixed ) { $floatingbox.stop().css({ position: 'fixed', left: '50%', top: 20, marginLeft: -500 }); }
Если полоса прокрутки y меньше, чем положение плавающей рамки y, восстановите исходное положение.
if ( scrollY < bodyY && isfixed ) { $floatingbox.css({ position: 'relative', left: 0, top: 0, marginLeft: originalX }); }
5. Done
Попробуйте воспроизвести приведенный ниже пример, чтобы получить представление о работах.
P.S This floating effect feature is implemented in my DiggDigg WordPress plugin.