3.0.9 β€’ Published 10 months ago

v-lazy-component v3.0.9

Weekly downloads
45
License
MIT
Repository
github
Last release
10 months ago

npm version npm downloads changelog License

Features

  • ⚑️ Lightweight
  • 🎨 Interactive
  • πŸ‘ΆπŸ» Easy implementation
  • πŸ“¦ Vue2 & Vue3 support

Getting Started

Try it Online ⚑️

DEMO

Installation

yarn add v-lazy-component  # or npm i v-lazy-component

Vue3

Global Register

import { createApp } from 'vue'
import App from './App.vue'
import LazyComponent from 'v-lazy-component'

const app = createApp(App)

app.use(LazyComponent)
app.mount('#app')

Local Register

<script setup>
import LazyComponent from 'v-lazy-component'
</script>

Via CDN

<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/v-lazy-component"></script>

<script>
  const app = Vue.createApp({})
    
  app.use(LazyComponent)
  app.mount('#app')
</script>

Vue2

Global Register

import Vue from "vue";
import LazyComponent from "v-lazy-component/vue2";

Vue.use(LazyComponent);

Local Register

import LazyComponent from "v-lazy-component/vue2";

export default {
  components: {
    LazyComponent
  }
}

Via CDN

<script src="https://unpkg.com/vue@2"></script>
<script src="https://unpkg.com/v-lazy-component/vue2"></script>

<script>
new  Vue({
  el: "#app"
});

Vue.use(LazyComponent);
</script>

Β 

Usage

<lazy-component wrapper-tag="section" @intersected="optionalDispatch">
  <your-component/>
  
  <!-- Optional -->
  <template #placeholder>
    <span>Loading...</span>
  </template>
</lazy-component>

idle variant

....
<button @click="isIntersected = true">Click for Render</button>

<lazy-component :is-intersected="isIntersected" idle>
  <your-component/>
  
  <!-- Optional -->
  <template #placeholder>
    <span>Loading...</span>
  </template>
</lazy-component>

Props

NameDescriptionTypeDefault
wrapper-tagHtml tag of lazy componentStringdiv
is-intersectedDo not wait observe, Force renderBooleanfalse
idleDo not use observer, wait is-intersected prop changes for renderBooleanfalse
root-marginIntersection Observer API docString0px 0px 0px 0px
thresholdIntersection Observer API docNumber, Array0

See Intersection Observer API doc

Slots

placeholderContent that is loaded as a placeholder until it comes into view

Events

intersecteddispatch event when visible

CSS Selectors

.v-lazy-component.v-lazy-component--loading {
  filter: blur(20px);
}

.v-lazy-component.v-lazy-component--loaded {
  filter: blur(0);
  transition: filter 1s;
}

Development

Vue3

yarn build:vue3 # build for vue3
# Serve

cd dev/vue3

yarn install
yarn serve

Vue2

yarn build:vue2 # build for vue2
# Serve

cd dev/vue2

yarn install
yarn serve

Vue 2&3

yarn build # build for vue2 and vue3

Sponsorship

You can sponsor me for the continuity of my projects:

License

MIT License

Copyright (c) selimdoyranli selimdoyranli@gmail.com

3.0.9

10 months ago

3.0.4

1 year ago

3.0.3

1 year ago

3.0.2

1 year ago

3.0.1

1 year ago

3.0.8

1 year ago

3.0.7

1 year ago

3.0.6

1 year ago

3.0.5

1 year ago

3.0.0

1 year ago

2.1.1

1 year ago

2.1.0

2 years ago

2.0.0

3 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago