Akryum / vue-observe-visibility

Detect when an element is becoming visible or hidden on the page.

Home Page:https://jsfiddle.net/Akryum/ppt7endj/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

support for nuxt3

frederic117 opened this issue · comments

commented

Doesn't seem to wrk with nuxt3

vue-observe-visibility seems to be abandoned

Try https://www.npmjs.com/package/vue-intersection-observer ? (I just found it, haven't even read its README
Update 1: That doesn't work in nuxt 3, Trying https://www.npmjs.com/package/@lamsal-de/vue-element-in-view
Update 2: https://www.npmjs.com/package/@lamsal-de/vue-element-in-view works but less options

commented

All I did was:

  1. Install the new vue-observe-visibility @next
    yarn add vue-observe-visibility@next --dev

  2. add a vue-observe-visibility.ts file inside /plugins folder, with this code inside:

import VueObserveVisibility from 'vue-observe-visibility'

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(VueObserveVisibility)
})
  1. Apply the usual to your component:
    v-observe-visibility=“visibilityChanged"

  2. Make your function in the script, for exampe adding and removing a class:

<script setup>
const visibilityChanged = (isVisible, entry) => {
  isVisible
    ? entry.target.classList.add('is-visible')
    : entry.target.classList.remove('is-visible')
}
</script>

(I did not managed to add the visibilityChanged function directly inside vue-observe-visibility.ts)

Confirm that it's working

More about nuxt 3 plugins:
https://nuxt.com/docs/guide/directory-structure/plugins