jQuery-плагин, скрывающий часть контента,
выходящего за рамки указанной высоты (адаптивный спойлер)

Особенности

  • Адаптивен при динамическом изменении ширины окна браузера
  • Возможность изменять параметры стандартной анимации
    сворачивания/разворачивания или задать свою
  • Гибкая система методов/событий
    для программного управления состояниями и кастомизации
  • Работает с CSS-стилями. Возможность задать высоту в закрытом состоянии
    через свойство max-height (px, em и т.д.)
  • Lite-версия с вырезанными методами ("reinit", "destroy", "drop") и событиями (на ~30% легче)

Демо: Стандартный вариант

Всех авторов, пишущих о животных, объединяет любовь. Любовь к братьям нашим младшим. Как создаются рассказы о животных? Прежде всего, основой таких рассказов являются наблюдения- за повадками животных, за их образом жизни. Иногда рассказ можно сравнить с фотографией. Автор увидел эпизод из жизни животного и облек его в художественную форму. Не редко основой рассказа могут быть статьи про животных. В статье подробно, в деталях, описали повадки, поведение, образ жизни животных. Но широкий круг читателей такие статьи, как правило, не заинтересуют - "сухой", научный подход к изложению материала подчас вызывают скуку. А автор рассказа, используя этот материал, создает интересное для читателей произведение.

Демо: Засветленный низ

Природа прекрасна и многогранна. Она окружает нас везде, но зачастую мы не замечаем ее красоты, пробегая мимо, все время куда-то спешим, погружены в свои дела и заботы, которые кажутся нам очень важными.

Природа – удивительна и уникальна. Это можно заметить и на любой улице города, но особенно – в лесу. Достаточно выделить один день и поехать с семьей или с друзьями, можно даже в одиночестве, в ближайший лес. Увидеть, какое огромное количество животных и птиц обитает в наших широтах, оценить многообразие растений. Примечательно, что это можно сделать в любое время года - наши леса удивительны и прекрасны всегда. Весной - когда природа просыпается и земля в лесу покрывается плотным голубым ковром из подснежников. Летом - когда в лесу все живет и дышит, наполняя его своими голосами. Осенью - когда лес сменяет свой великолепный зеленый наряд на не менее прекрасный желтый с оттенками багряного. Зимой - когда все покрывается искристым белым покрывалом, но, тем не менее, продолжает жить. Это стоит того, чтоб потратить немного своего времени.

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

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

Пакетные менеджеры

Подключение

1. Подключить последнюю версию jQuery и jquery.morecontent.js
        

        <!-- jQuery -->
        <script src="libs/jquery/dist/jquery.min.js"></script>

        <!-- jquery.morecontent.js -->
        <script src="dist/jquery.morecontent.js"></script>

        
      
2. Инициализировать плагин на группе элементов:
        

        $('[data-mrc]').moreContent();

        
      
3. Применить в HTML:

Параметры

Опция Тип Поум. Описание
height Number 175 Высота блока с контентом, px
useCss Boolean true Параметр height будет расчитан в приоритете исходя из значения css-свойства
max-height
speed Number 250 Продолжительность анимации, мс
open Boolean false Раскрыть/скрыть при загрузке страницы
event String 'click' Событие (кнопка переключения состояний)
shadow Boolean false Реализует разметку для затемнения нижней видимой части контента
easing String 'swing' Наименование функции плавности (easing)
Определяет скорость течения анимации 1
textClose String 'Читать полностью' Текст кнопки переключения. Состояние "Скрыто"
textOpen String 'Скрыть' Текст кнопки переключения. Состояние "Раскрыто"
tpl Object {} 2 Объект с элементами доп. разметки

2 Объект с элементами доп. разметки:

        

        tpl: {
          content: '<div class="mrc-content"></div>',
          contentWrap: '<div class="mrc-content-wrap"></div>',
          btn: '<button class="mrc-btn" type="button"></button>',
          btnWrap: '<div class="mrc-btn-wrap"></div>',
          controls: '<div class="mrc-controls"></div>',
          shadow: '<div class="mrc-shadow"></div>'
        }

        
      

Примеры использования параметров

        

        $('.example').moreContent({
          height: 100,
          textClose: 'Раскрыть'
        });

        
      

Методы

Метод Аргументы Описание
init options Инициализация
destroy - Деинициализация
reinit newOpts Реинициализация
open - Переключает в состояние "Раскрыто"
close - Переключает в состояние "Скрыто"
toggle - Переключение состояний Скрыто/Раскрыто
drop - Раскрывает контент на указ. значение (px или %)

Примеры использования методов

        

        var options = { /* Параметры... */ },
          newOpts = { /* Новые параметры... */ };

        $('.example').moreContent('init', options); // Инициализация с польз. пар-ми
        $('.example').moreContent(options); // Инициализация с польз. пар-ми
        $('.example').moreContent(); // Инициализация с пар-ми поум.
        $('.example').moreContent('destroy'); // Деинициализация
        $('.example').moreContent('reinit', newOpts); // Реинициализация с новыми пар-ми
        $('.example').moreContent('reinit'); // Реинициализация с текущими пар-ми
        $('.example').moreContent('open'); // Переключить в состояние "Раскрыто"
        $('.example').moreContent('close'); // Переключить в состояние "Скрыто"
        $('.example').moreContent('toggle'); // Переключить состояние "Скрыто"/"Раскрыто"
        $('.example').moreContent('drop'); // Раскрыть содержимое на +100px (поум.)
        $('.example').moreContent('drop', 150); // Раскрыть содержимое на +150px
        $('.example').moreContent('drop', 25, '%'); // Раскрыть содержимое на +25% от макс. высоты

        
      

Природа прекрасна и многогранна. Она окружает нас везде, но зачастую мы не замечаем ее красоты, пробегая мимо, все время куда-то спешим, погружены в свои дела и заботы, которые кажутся нам очень важными. Природа – удивительна и уникальна. Это можно заметить и на любой улице города, но особенно – в лесу. Достаточно выделить один день и поехать с семьей или с друзьями, можно даже в одиночестве, в ближайший лес. Увидеть, какое огромное количество животных и птиц обитает в наших широтах, оценить многообразие растений. Примечательно, что это можно сделать в любое время года - наши леса удивительны и прекрасны всегда. Весной - когда природа просыпается и земля в лесу покрывается плотным голубым ковром из подснежников. Летом - когда в лесу все живет и дышит, наполняя его своими голосами. Осенью - когда лес сменяет свой великолепный зеленый наряд на не менее прекрасный желтый с оттенками багряного. Зимой - когда все покрывается искристым белым покрывалом, но, тем не менее, продолжает жить. Это стоит того, чтоб потратить немного своего времени.

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

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

События

Событие Аргументы Описание
beforeInitSwitch.mrc e, instance, sets До переключения в какое-либо состояние на этапе инициализации
afterInit.mrc e, instance, sets После инициализации
change.mrc e, instance, sets При смене высоты видимой части контента для методов "open", "close", "drop"
beforeOpen.mrc e, instance, sets, content, height До перехода в состояние "open"
afterOpen.mrc e, instance, sets, content После перехода в состояние "open"
beforeClose.mrc e, instance, sets, content, height До перехода в состояние "close"
afterClose.mrc e, instance, sets, content После перехода в состояние "close"
beforeDrop.mrc e, instance, sets, content, height До перехода в очередное состояние "drop"
afterDrop.mrc e, instance, sets, content После перехода в очередное состояние "drop"

Примеры использования событий

        
          var example = $('.example');

          example.on('beforeClose.mrc', function(e, instance, sets, content, height) {
            console.log( 'beforeClose: ', e, instance, sets, content, height );
            /* Аргументы:
              e - объект события
              instance - экз. класса MoreContent для элемента, на котором вызвано событие
              sets - объект с настройками
              content - JQ DOM эл. с контентом, высота которого будет изменена
              height - значение, на которое будет изменена высота контента, px
            */
          });

          example.moreContent(); // Инициализация
        
      

Структура HTML

Data-атрибуты

Параметры в data-атрибуте имеют наивысший приоритет. Они переопределят параметры по умолчанию, а так же пользовательские параметры заданные при инициализации. Значение атрибута - валидный JSON.

Переопределение параметров по умолчанию

        
          /* Изменение параметров по умолчанию (свойство): */
          $.fn.moreContent.defaults.height = 350;

          /* Изменение параметров по умолчанию (объект): */
          $.fn.moreContent.defaults = $.extend(true, {},$.fn.moreContent.defaults, {
            height: 350,
            open: true
          });

          /* Далее инициализация... */
          $('.example').moreContent();
        
      

Примеры использования

Демо: Засветленный низ

Природа прекрасна и многогранна. Она окружает нас везде, но зачастую мы не замечаем ее красоты, пробегая мимо, все время куда-то спешим, погружены в свои дела и заботы, которые кажутся нам очень важными. Природа – удивительна и уникальна. Это можно заметить и на любой улице города, но особенно – в лесу. Достаточно выделить один день и поехать с семьей или с друзьями, можно даже в одиночестве, в ближайший лес. Увидеть, какое огромное количество животных и птиц обитает в наших широтах, оценить многообразие растений. Примечательно, что это можно сделать в любое время года - наши леса удивительны и прекрасны всегда. Весной - когда природа просыпается и земля в лесу покрывается плотным голубым ковром из подснежников. Летом - когда в лесу все живет и дышит, наполняя его своими голосами. Осенью - когда лес сменяет свой великолепный зеленый наряд на не менее прекрасный желтый с оттенками багряного. Зимой - когда все покрывается искристым белым покрывалом, но, тем не менее, продолжает жить. Это стоит того, чтоб потратить немного своего времени.

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

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


Инициализировать плагин, установив параметр shadow равным true. Это добавит в разметку доп. блок с классом .mrc-shadow. Далее задать клаccу набор свойст, в зависимости от того, какой высоты и цвета должно быть засветление.

        
          $('.example').moreContent({
            "shadow": true, // Добавляет в разметку блок с тенью
            // Если нужно изменить разметку блока с тенью:
            // tpl: {
            //   shadow: '<div class="mrc-shadow"></div>'
            // }
          });
        
      
        
          .mrc-shadow {
            pointer-events: none;
            position: absolute;
            height: 100px; /* Высота блока с тенью */
            left: 0; right: 0; bottom: 0;
            z-index: 999;
            /* Цвета градиента в зависимости от фона сайта */
            background: linear-gradient(to top, #fff 14%, rgba(0, 0, 0, 0) 100%);
          }
        
      

Демо: Анимация

Природа прекрасна и многогранна. Она окружает нас везде, но зачастую мы не замечаем ее красоты, пробегая мимо, все время куда-то спешим, погружены в свои дела и заботы, которые кажутся нам очень важными. Природа – удивительна и уникальна. Это можно заметить и на любой улице города, но особенно – в лесу. Достаточно выделить один день и поехать с семьей или с друзьями, можно даже в одиночестве, в ближайший лес. Увидеть, какое огромное количество животных и птиц обитает в наших широтах, оценить многообразие растений. Примечательно, что это можно сделать в любое время года - наши леса удивительны и прекрасны всегда. Весной - когда природа просыпается и земля в лесу покрывается плотным голубым ковром из подснежников. Летом - когда в лесу все живет и дышит, наполняя его своими голосами. Осенью - когда лес сменяет свой великолепный зеленый наряд на не менее прекрасный желтый с оттенками багряного. Зимой - когда все покрывается искристым белым покрывалом, но, тем не менее, продолжает жить. Это стоит того, чтоб потратить немного своего времени.

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

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


Если общих параметров speed и easing недостаточно, можно установить свою анимацию на три осн. действия: open, close и drop, используя соотв. события. instance.manually = true отменяет выполнение стандартной анимации. Значения swing и easeOutBounce, использованные в примере ниже - наименования функций плавности, определяющих скорость течения анимации. Подробнее здесь, а также в док. jQuery

        
          var ex = $('.example');

          ex.moreContent(); // Инициализация

          // Анимация разворачивания (Метод "open")
          ex.on('beforeOpen.mrc', function(e, instance, sets, content, height) {

            // Отменяет выполнение стандартной анимации (обяз.)
            instance.manually = true;

            // Запуск кастомной анимации для блока с контентом
            content.animate({
              height: height // До необх. высоты
            }, 1000, 'easeOutBounce', function() {
              // Запускает набор необх. операций по завершению анимации
              instance.afterChange('open');
            });
            
          });

          // Анимация сворачивания (Метод "close")
          ex.on('beforeClose.mrc', function(e, instance, sets, content, height) {
            
            instance.manually = true;

            content.animate({
              height: height
            }, 500, 'swing', function() {
              instance.afterChange('close');
            });
            
          });

          // Анимация частичного разворачивания (Метод "drop")
          ex.on('beforeDrop.mrc', function(e, instance, sets, content, height) {

            instance.manually = true;

            content.animate({
              height: height
            }, 1000, 'easeOutBounce', function() {
              instance.afterChange('drop');
            });
            
          });
        
      

История изменений

1.0.1 - 23.02.2019

  • Изменено имя события "onChange" на "change"

Лицензия (MIT)

Copyright (c) 2018-2019 Sergey Kravchenko

Данная лицензия разрешает лицам, получившим копию данного программного обеспечения и сопутствующей документации (в дальнейшем именуемыми «Программное Обеспечение»), безвозмездно использовать Программное Обеспечение без ограничений, включая неограниченное право на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного Обеспечения, а также лицам, которым предоставляется данное Программное Обеспечение, при соблюдении следующих условий:

Указанное выше уведомление об авторском праве и данные условия должны быть включены во все копии или значимые части данного Программного Обеспечения.

ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНО ВЫРАЖЕННЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ ГАРАНТИИ ТОВАРНОЙ ПРИГОДНОСТИ, СООТВЕТСТВИЯ ПО ЕГО КОНКРЕТНОМУ НАЗНАЧЕНИЮ И ОТСУТСТВИЯ НАРУШЕНИЙ, НО НЕ ОГРАНИЧИВАЯСЬ ИМИ. НИ В КАКОМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ПО КАКИМ-ЛИБО ИСКАМ, ЗА УЩЕРБ ИЛИ ПО ИНЫМ ТРЕБОВАНИЯМ, В ТОМ ЧИСЛЕ, ПРИ ДЕЙСТВИИ КОНТРАКТА, ДЕЛИКТЕ ИЛИ ИНОЙ СИТУАЦИИ, ВОЗНИКШИМ ИЗ-ЗА ИСПОЛЬЗОВАНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ИЛИ ИНЫХ ДЕЙСТВИЙ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.

Поддержка

Решение проблем/багов плагина, а также замечания и пожелания в соответствующей теме

По всем другим вопросам: wahawaher@gmail.com