Пример маскируемого плавающего эффекта с помощью jQuery

Пример маскируемого плавающего эффекта с помощью jQuery

Mashable, наиболее известный как веб-сайт ресурсов социальных сетей, создавал потрясающий эффект плавания при прокрутке страницы пользователем. Вот простая идея клонировать этот плавающий эффект с помощью jQuery.

image

Идея ...

  1. Создайте плавающую коробку.

  2. Начальное расположение плавающей коробки, поместите ее рядом с содержимым тела.

  3. Пока пользователь прокручивает страницу, продолжайте проверять положение полосы прокрутки.

  4. Если позиция полосы прокрутки y больше, чем позиция y плавающей рамки, динамически измените позицию y плавающей рамки.

  5. Пока полоса прокрутки y меньше позиции плавающей рамки y, восстановите исходную позицию.

  6. Используйте jQuery, конечно.

1. HTML-макет

Простая HTML-разметка, верхний и нижний колонтитулы, содержимое и нижний колонтитул, поместите div «плавающий ящик» над содержимым

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.

Попробуй сам











  

content

Mashable floating effect example