JSPM

vuepress-plugin-img-lazy

1.0.4
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 264
  • Score
    100M100P100Q92263F
  • License MIT

a vuepress plugin to better supporting image lazy loading

Package Exports

  • vuepress-plugin-img-lazy

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (vuepress-plugin-img-lazy) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

vuepress-plugin-img-lazy

a vuepress plugin to better supporting image lazy loading

The plugin will preferentially use native image lazy-loading, if the browser does not support it, it will be implemented through IntersectionObserver

base on markdown-it-img-lazy and markdown-it-imsize

Live Demo and Documentation


Installation

yarn add vuepress-plugin-img-lazy
# or
npm i vuepress-plugin-img-lazy

Usage

module.exports = {
  plugins: [
    'img-lazy'
  ]
}
![img](/img.jpg)
# or
![img](/img.jpg =500x300) <!-- better -->

Use in theme

  • registered as global components
// enhanceAppFile.js
import ImgLazy from 'vuepress-plugin-img-lazy/ImgLazy'

export default ({ Vue }) => {
  Vue.component(ImgLazy.name, ImgLazy)
}
  • or registered as components
import ImgLazy from 'vuepress-plugin-img-lazy/ImgLazy'

export default {
  components: { ImgLazy }
}
  • use
<template>
  <img-lazy src="/img.jpg" />
</template>

If you registered as global components, you can use it directly in the markdown file

<img-lazy src="/img.jpg" />

Options

useNative

  • Type: Boolben
  • Default: true
  • Required: false

Use the native image lazy-loading for the web

selector

  • Type: string
  • Default: lazy
  • Required: false

Default class name for image

rootMargin

  • Type: String
  • Default: 200px
  • Required: false

rootMargin for IntersectionObserver

prefix

  • Type: string Function
  • Default: src => src && src.charAt(0) === '/' && !src.startsWith(ctx.base) ? ctx.base + src.slice(1) : src
  • Required: false

Config prefix for src in images

Other

  1. Base URL already included by default, But it does not include the <img/> label in the markdown file

If you need to use both Base URL and <img/> labels, refer to

<img :data-src="$withBase('/img.png')" loading="lazy" class="lazy">
  1. In order to better supporting image lazy loading, it is better to specify the size of the image (in some themes, you need to set display as inline block or block separately), so as to ensure that the image can occupy the position it should occupy