1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dreamer365-FunLazy

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 02.12.2024 05:40 e687184

FunLazy

Нативный JavaScript-разработанный облегчённый компонент для ленивой загрузки изображений.

Установка

  • unpkg cdn:
<script src="https://unpkg.com/funlazy"></script>
  • jsdelivr cdn:
<script src="https://cdn.jsdelivr.net/npm/funlazy"></script>
  • npm установка:
npm i funlazy -S
const FunLazy = require( "funlazy" );

Использование

<img data-funlazy="1.jpg" width="500" height="309">
<img data-funlazy="2.jpg" width="500" height="309">
<img data-funlazy="3.jpg" width="500" height="309">

<script>
    FunLazy();
</script>

Примечание: если вы используете этот компонент в проекте Vue, вам нужно вызвать функцию FunLazy в хуке mounted (vue2) или onMounted (vue3).

Пользовательские настройки

FunLazy( {
    placeholder: "thumb.jpg",
    effect: "fadeIn"
} );

Возвращаемые настройки

const opt = FunLazy( {
    placeholder: "thumb.jpg",
    effect: "fadeIn"
} );

// В соответствии с переданными пользовательскими настройками
// и настройками по умолчанию объединяем их и возвращаем результат объединения
console.log( opt );

Автоматическое обнаружение изменений в элементах для ленивой загрузки

<button>Добавить изображение</button>
<div id="img-box">
    <img data-funlazy="1.jpg" width="500" height="309">
    <img data-funlazy="2.jpg" width="500" height="309">
    <img data-funlazy="3.jpg" width="500" height="309">
</div>

<script>
    const opt = FunLazy( {
        autoCheckChange: true
    } );

    // Устанавливаем autoCheckChange: true,
    // новые изображения будут автоматически анализироваться для ленивой загрузки
    const target = document.getElementById( "img-box" );
    document.querySelector( "button" ).addEventListener( "click", () => {
        target.insertAdjacentHTML( "beforeend", '<img data-funlazy="new.jpg" width="500" height="309">' );
    } )
</script>

Обработка URL-адресов изображений перед загрузкой

<img data-funlazy="1.jpg" width="500" height="309">
<img data-funlazy="2.jpg" width="500" height="309">
<img data-funlazy="3.jpg" width="500" height="309">

<script>

    // beforeLazy атрибут можно использовать для окончательной обработки URL-адреса изображения перед его ленивой загрузкой, что эквивалентно созданию слоя перехвата
    // Можно легко выполнить пакетную обработку URL-адреса перед загрузкой
    FunLazy( {
        beforeLazy: src => `${ src }?img-id=${ Math.random().toString( 36 ).slice( 2, 10 ) }`
    } );
</script>

Использование заданного изображения в качестве заполнителя при неудачной загрузке

<img data-funlazy="1.jpg" width="500" height="309">
<img data-funlazy="2.jpg" width="500" height="309">
<img data-funlazy="3.jpg" width="500" height="309">

<script>

    // useErrorImagePlaceholder атрибут можно использовать, чтобы показать заданное изображение в случае неудачной загрузки
    // - Установка значения true использует встроенное серое изображение в качестве заполнителя
    // - Передача URL-адреса позволяет настроить изображение-заполнитель
    FunLazy( {
        useErrorImagePlaceholder: true
        
        // Или:
        // useErrorImagePlaceholder: "img/error.jpg"
    } );
</script>

Параметры конфигурации

Параметр Описание Тип Значение по умолчанию
container Селектор целевого контейнера, по умолчанию на основе body, если передано window, document, «html», то будет преобразовано в «body» String body
effect Эффект отображения изображения, возможные значения: show, fadeIn String show
placeholder Изображение-заполнитель String base64-кодированное серое изображение
threshold Пороговое значение, единица измерения: px Number 0
width Ширина изображения, передача числа автоматически устанавливает px, также можно передать процентное значение, также можно установить через css Number / String
height Высота изображения, передача числа автоматически устанавливает px, также можно передать процентное значение, также можно установить через css Number / String
eventType Указывает событие мыши, которое запускает загрузку изображения, возможные значения: click, dblclick, mouseover String
axis Направление прокрутки контейнера, возможные значения: x, y String y
onSuccess Функция обратного вызова, которая выполняется при успешной загрузке изображения, параметры обратного вызова:
1. Элемент, в котором успешно загружено изображение
2. Адрес успешно загруженного изображения
Function Пустая функция
onError Функция обратного вызова, которая выполняется при неудачной загрузке изображения, параметры обратного вызова:
1. Элемент, где не удалось загрузить изображение
2. Неудачный адрес изображения
Function

Пустая функция.

strictLazyMode (v2.1.4 новое)

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

  • сам элемент находится в скрытом состоянии;
  • у самого элемента opacity: 0;
  • элемент содержит предка, который находится в скрытом состоянии.

Тип данных: Boolean.
Значение: true.

beforeLazy (v2.1.0 новое)

Функция, выполняемая перед отложенной загрузкой. Параметр функции — это адрес изображения (можно использовать для окончательной обработки адреса изображения перед его загрузкой и возврата обработанного адреса изображения).

Тип данных: Function.
Значение: пустая функция.

autoCheckChange (v2.1.0 новое)

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

Тип данных: Boolean.
Значение: false.

useErrorImagePlaceholder (v2.1.1 новое)

При сбое загрузки изображения используется указанное изображение для отображения заполнителя (можно использовать встроенное серое изображение или пользовательское изображение).

Тип данных: Boolean / String.
Значение: false.

Открытое лицензионное соглашение

MIT License.
Ссылка: https://gitee.com/dreamer365/FunLazy/blob/master/LICENSE.

Поддержка браузеров

Chrome 80+
Edge 90+
Safari 13+
Firefox 90+
IE не поддерживается

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dreamer365-FunLazy.git
git@api.gitlife.ru:oschina-mirror/dreamer365-FunLazy.git
oschina-mirror
dreamer365-FunLazy
dreamer365-FunLazy
master