All Projects → mattrothenberg → Vue Overdrive

mattrothenberg / Vue Overdrive

Super easy magic-move transitions for Vue apps

Projects that are alternatives of or similar to Vue Overdrive

Flask Vuejs Madblog
基于 Flask 和 Vue.js 前后端分离的微型博客项目,支持多用户、Markdown文章(喜欢/收藏文章)、粉丝关注、用户评论(点赞)、动态通知、站内私信、黑名单、邮件支持、管理后台、权限管理、RQ任务队列、Elasticsearch全文搜索、Linux VPS部署、Docker容器部署等
Stars: ✭ 541 (-18.03%)
Mutual labels:  vue-router
Badgehub
A way to quickly add a notification badge icon to any view. Make any view of a full-fledged animated notification center.
Stars: ✭ 592 (-10.3%)
Mutual labels:  animations
Kov Blog
A blog platform built with koa,vue and mongoose. 使用 koa ,vue 和 mongo 搭建的博客页面和支持markdown语法的博客编写平台,自动保存草稿。博客地址:https://chuckliu.me
Stars: ✭ 635 (-3.79%)
Mutual labels:  vue-router
Awesome Design Tools
The best design tools and plugins for everything 👉
Stars: ✭ 23,754 (+3499.09%)
Mutual labels:  animations
Vue Blog
A single-user blog built with vue2, koa2 and mongodb which supports Server-Side Rendering
Stars: ✭ 586 (-11.21%)
Mutual labels:  vue-router
Vue Typescript Dpapp Demo
🔥 Let's start with TypeScript
Stars: ✭ 613 (-7.12%)
Mutual labels:  vue-router
Vuetron
A tool for testing and debugging your Vue + Vuex applications. 是一個可以幫助您 Vue.js 的項目測試及偵錯的工具, 也同時支持 Vuex及 Vue-Router.
Stars: ✭ 531 (-19.55%)
Mutual labels:  vue-router
Vue Example Login
🔥A login demo by Vue.js.
Stars: ✭ 651 (-1.36%)
Mutual labels:  vue-router
Flightanimator
Advanced Natural Motion Animations, Simple Blocks Based Syntax
Stars: ✭ 588 (-10.91%)
Mutual labels:  animations
Ng Animate
🌙 A collection of cool, reusable and flexible animations for Angular 9+
Stars: ✭ 627 (-5%)
Mutual labels:  animations
Vue Mintshop
🍖 🍉 使用 ES6 + Mock.js + vue2.0 全家桶开发的前后端分离的外卖App。开发文档、流程完整详尽,非常适合作为个人练手项目。
Stars: ✭ 552 (-16.36%)
Mutual labels:  vue-router
Htextview
Animation effects to text, not really textview
Stars: ✭ 5,309 (+704.39%)
Mutual labels:  animations
Vue Chat
📲 A web chat application. Vue + node(koa2) + Mysql + socket.io
Stars: ✭ 617 (-6.52%)
Mutual labels:  vue-router
Awesome Ios Animation
A curated list of awesome iOS animation, including Objective-C and Swift libraries
Stars: ✭ 4,983 (+655%)
Mutual labels:  animations
Flutter ui challenge flight search
An advanced UI design implemented in Flutter
Stars: ✭ 642 (-2.73%)
Mutual labels:  animations
Force Js
The easy way to scroll and animate your page
Stars: ✭ 536 (-18.79%)
Mutual labels:  animations
Viewport Checker
Little utility to detect if elements are currently within the viewport 🔧
Stars: ✭ 596 (-9.7%)
Mutual labels:  animations
Pmsuperbutton
🔥 PMSuperButton is a powerful UIButton coming from the countryside, but with super powers! 😎
Stars: ✭ 653 (-1.06%)
Mutual labels:  animations
Ubercaranimation
A demo app showing movement of car on map like in Uber.
Stars: ✭ 643 (-2.58%)
Mutual labels:  animations
New Bee
开源社区 vue + springBoot - 前后分离微服务的最佳实践
Stars: ✭ 619 (-6.21%)
Mutual labels:  vue-router

Heads up!

The fate of this repo is uncertain. I recommend using my new library, vue-flip-toolkit for all of your magic-move transition needs.

vue-overdrive

Super easy magic-move transitions for Vue apps, powered by Ramjet

npm version

Project Install

# npm
npm install vue-overdrive
# yarn
yarn add vue-overdrive

Warning!

Currently, vue-overdrive isn't able to morph between shapes with percentage-based border-radius values. You'll need to use a pixel-based value, or you'll get a nasty TypeError. The issue is being tracked here: https://github.com/Rich-Harris/ramjet/issues/57

Examples

Material

1) Morph Shapes (source)

https://vue-overdrive.netlify.com/#/shapes

Shape morph

2) Material-esque transformation (source)

https://vue-overdrive.netlify.com/#/libraries

Material transformation

3) iOS-inspired icon effect (source)

https://vue-overdrive.netlify.com/#/icons

iOS icon effect

What is it?

A Vue.js port of the amazing React Overdrive, using Ramjet under the hood.

How does it work?

Just like with React Overdrive, wrap any two elements in a component. Add the same id to create a transition between the elements.

Import and install

import Overdrive from 'vue-overdrive'
Vue.use(Overdrive)

or

import { VOverdrive } from 'vue-overdrive'

// Register the component locally
components: {
  'overdrive': VOverdrive
}

Set up (at least) two different routes with Vue Router

Inside your routes file –

{
  path: '/circle',
  name: 'Circle',
  component: Circle
},
{
  path: '/rectangle',
  name: 'Rectangle',
  component: Rectangle 
}

Scaffold your components

In Circle.vue:

<template>
  <overdrive id="element" :easing="easing" :duration="350">
    <div class="circle"></div>
  </overdrive>
</template>

<script>
import * as easing from 'eases/quart-in-out' // Bring 'yr own easing functions!
export default {
  name: 'el-circle',
  data () {
    return {
      easing
    }
  }
}
</script>

<style scoped>
  .circle {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    background: blue;
    float: left;
  }
</style>

And in Rectangle.vue

<template>
  <overdrive id="element">
    <div class="rectangle"></div>
  </overdrive>
</template>

Usage with v-if

If you're not using Vue Router (and instead using Vue's built-in v-if directive), be sure to specify a unique key prop on each instance of <overdrive>

<overdrive key="a" id="window" :duration="450" v-if="!windowOpen">
  <!-- some element -->
</overdrive>
<overdrive key="b" id="window" :duration="450" v-if="windowOpen">
  <!-- some element -->
</overdrive>

Customize it (API)

Prop Description Default Value
id Required. A unique string or number to identify the component.
tag Wrapping element type div
duration Animation duration (in milliseconds) 250
easing Easing Function (must pass a function) ramjet.linear
Event Description
@animation-end Fires once the ramjet animation has completed
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].