WT Masonry.js
- Категории: Плагины Joomla, Расширения для Joomla 4 и Joomla 5, Веб-ассеты
 - Версия: 4.2.3.1
 - Дата:
 
Скрипт masonry, позволяющий выводить изображения в виде кирпичной кладки. Скрипт оформлен в Joomla 4+ Web Asset, что позволяет использовать его в любых расширениях Joomla 4 и Joomla 5. Это плагин для Joomla-разработчиков. Он не предоставляет готовый к использованию код.
Описание
Подключение ассета в Joomla
<?php
$wa = Factory::getApplication()->getDocument()->getWebAssetManager(); 
$wa->useScript('wtmasonryjs.local'); // local file 
$wa->useScript('wtmasonryjs.remote'); // from CDN 
$wa->useScript('imagesloaded.local'); // imagesLoaded.js from local file 
$wa->useScript('imagesloaded.remote'); // imagesLoaded.js from CDN
После этого в <head> страницы Joomla будет включен локальный или из CDN скрипт masonry.
Также в плагине добавлен ассет imagesLoaded, который нужно использовать при большом количестве картинок.
Пример кода
Пример из официальной документации скрипта
HTML
<div class="grid">
  <div class="grid-item">...</div>
  <div class="grid-item grid-item--width2">...</div>
  <div class="grid-item">...</div>
  ...
</div>
CSS
Все размеры элементов сетки masonry в Joomla задаются через Ваш CSS код
.grid-item { width: 200px; }
.grid-item--width2 { width: 400px; }
Инициализация скрипта с помощью jQuery
$('.grid').masonry({
  // options
  itemSelector: '.grid-item',
  columnWidth: 200
});
Инициализация скрипта без jQuery
var elem = document.querySelector('.grid');
var msnry = new Masonry( elem, {
  // options
  itemSelector: '.grid-item',
  columnWidth: 200
});
// element argument can be a selector string
//   for an individual element
var msnry = new Masonry( '.grid', {
  // options
});
Подключение imagesLoaded
Этот скрипт инициализирует masonry ещё раз после загрузки очередной картинки. Таким образом создаётся динамическое добавление изображений в кирпичную кладку.
Инициализация с jQuery
// init Masonry
var $grid = $('.grid').masonry({
  // options...
});
// layout Masonry after each image loads
$grid.imagesLoaded().progress( function() {
  $grid.masonry('layout');
});
Инициализация без jQuery
document.addEventListener('DOMContentLoaded',() => {
    const masonryGrid = document.getElementById('masonry-test');
    var msnry = new Masonry(masonryGrid, {
        itemSelector: '.grid-item',
        columnWidth: 200,
        percentPosition: true
    });
    imagesLoaded( masonryGrid ).on( 'progress', function() {
        // layout Masonry after each image loads
        msnry.layout();
    });
});
Joomla
- Тип расширения:
 - Плагин
 - Каталог:
 - System
 - Версия Joomla:
 - 4.3.4, 5.0.0