0.0.1 • Published 1 year ago

vue-plugin-scroll-into-view v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

vue-plugin-scroll-into-view

LICENSE Node CodeFactor

Coverage Status Snyk Vulnerabilities for GitHub Repo

Version Downloads npm.io npm.io

GitHub Stars GitHub Forks GitHub Discussions GitHub closed pull requests GitHub closed issues

vue-scroll-into-view is a simple Vue.js plugin that provides a convenient way to scroll an element into view with just a single line of code. Whether you have a long page with many sections, or you need to navigate to a specific part of the page, this plugin makes it easy to do so.

Features

Scrolls an element into the visible area of the browser window Supports scrolling to an element by $refs, selector, VNode, or HTMLElement Allows for customization of scroll options, such as animation and alignment Easy to install and use in your Vue.js 2 or 3 project

Usage Examples

Inside your code you can do something like this:

Basic usage

<template>
  <div>
    <h1>Hello World</h1>

    <table ref="table">
      <!-- long content -->
    </table>

    <button @click="nextPage"> Next </button>

  </div>
</template>
<script>
export default {
  methods: {
    nextPage() {

      // await requestNextPage();
      
      // scroll to top of the table
      this.$scrollIntoView(this.$refs.table); // refs or VNodes
      
      this.$scrollIntoView('div > table'); // CSS Selectors
    },
  }
}
</script>

Installation

NPM

npm install vue-plugin-scroll-into-view

Yarn

yarn add --dev vue-plugin-scroll-into-view

Adding to your project

index.js

import Vue from 'vue';
import VueScrollIntoView from 'vue-plugin-scroll-into-view';

Vue.use(VueScrollIntoView);

Options

this.$scrollIntoView(ref, options);

OptionTypeDescriptionDefault value
behaviorStringDefines the transition animation. One of "auto" or "smooth"."auto"
blockStringDefines vertical alignment. One of "start", "center", "end", or "nearest"."start"
inlineStringDefines horizontal alignment. One of "start", "center", "end", or "nearest"."nearest"
scrollModeStringDefines the scrolling mode. One of "always", "if-needed", or "never"."always"
skipOverflowHiddenElementsBooleanWhether to skip scrolling the ancestor elements with overflow: hidden.false
allowHorizontalScrollBooleanWhether to allow horizontal scrolling if the element is wider than the viewport.false
forceBooleanWhether to always scroll the element, even if it's already in view.false

Options example

This will scroll the element with the ID my-section into view with default scroll options. You can also pass in custom scroll options if desired:

this.$scrollIntoView('#my-section', { behavior: 'smooth', block: 'center' });

License

The code is available under the MIT license.

Contributing

We are open to contributions, see CONTRIBUTING.md for more info.

You need at least Node 18 to build the project