# 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 lozad

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

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

# useLoading

  • Type: Boolben
  • Default: true

Use the native image lazy-loading for the web

# selector

  • Type: string
  • Default: lazy

Default class name for image

# Other

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

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

Made with ❤️ by Ahmad Mostafa - @z3by