UNPKG

v-ripple-directive

Version:
158 lines (113 loc) 3.6 kB
# 🌊 v-ripple-directive > Vue.js directive for ripple effect. ## ✨ Features - lightweight (`~964b` gzip). - fully customizable during runtime/build. - build upon [CSS Custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/--*). ## Demo [![Edit v-ripple-directive](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/vue-template-dsuuw?fontsize=14) ## 💿 Installation ### Via NPM ```bash npm install v-ripple-directive --save ``` ### Via Yarn ```bash yarn add v-ripple-directive ``` ## Initialization ### 🎨 Styles To make everything work you should import core styles. The idea behind is that you can override default styles during build process. Example of using `SASS`/`SCSS`: ```scss @import 'v-ripple-directive/src/index.scss'; ``` Available `SASS` variables, that you can override during build process: ```scss $v-ripple-color: #fff !default; $v-ripple-duration: 2s !default; $v-ripple-opacity: 0.32 !default; $v-ripple-scale-start: 0.32 !default; $v-ripple-scale-end: 24 !default; ``` Example of overriding: ```scss ... $v-ripple-color: purple; @import 'v-ripple-directive/src/index.scss'; ... ``` **Note**: library is build upon [CSS Custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/--*), so you can easily override styles during runtime. Available `CSS` custom properties, that you can override during runtime: ```css :root { --v-ripple-color: #fff; --v-ripple-duration: 2s; --v-ripple-opacity: 0.32; --v-ripple-scale-start: 0.32; --v-ripple-scale-end: 24; } ``` Example of override: ```css /* globally */ :root { --v-ripple-color: tomato; } /* just for single element */ .foo { --v-ripple-color: lime; } ``` Move on to `JS`. ### As a plugin It must be called before `new Vue()`. ```javascript import Vue from 'vue' import VRipple from 'v-ripple-directive' Vue.use(VRipple) ``` ### As a global directive ```javascript import Vue from 'vue' import { directive } from 'v-ripple-directive' Vue.directive('ripple', directive) ``` ### As a local directive ```javascript import { directive } from 'v-ripple-directive' export default { name: 'YourAwesomeComponent', directives: { ripple: directive, }, } ``` ## 🚀 Usage ```html <template> <section> <a href="#" v-ripple>Foo bar</a> <!-- v-ripple with custom options --> <a href="#" v-ripple="{ event: 'mouseenter', color: 'purple', duration: '2s', opacity: '0.64', 'scale-start': '1', 'scale-end': '12' }">Foo bar</a> </section> </template> ``` ## ⚙️ Directive value If you pass a value, it always should be an object that contains one of these properties: | Property | Description | | ------------- | ----------------------------------------------------------------------------- | | `event` | Name of event to trigger ripple animation | | `color` | Color of the ripple (any `CSS` valid `color`) | | `duration` | Duration of the ripple animation (any `CSS` valid `animation-duration` value) | | `opacity` | Opacity of the ripple (any CSS valid `opacity` value) | | `scale-start` | Initial scale of the ripple (any CSS valid `transform: scale()` value) | | `scale-end` | Ultimate scale of the ripple (any CSS valid `transform: scale()` value) | ## Powered by - `Rollup` (and plugins) - `SASS` and `node-sass` - `PostCSS` - `Autoprefixer` ## 🔒 License [MIT](http://opensource.org/licenses/MIT)