首先 install vuex

创建store文件夹

在 store 文件夹分别建立

state.js

  1. // 状态管理
  2. // 定义state 原始数据
  3. const state = {
  4. fullScreen: false
  5. }
  6.  
  7. export default state

mutation-types.js

  1. // 定义Mutations相关的字符串常量
  2. // Mutations的修改动作
  3. export const SET_FULL_SCREEN = 'SET_FULL_SCREEN'

mutations.js

  1. // Mutations 定义对数据修改的逻辑
  2. import * as types from './mutation-types'
  3.  
  4. const mutations = {
  5. [types.SET_FULL_SCREEN](state, flag) {
  6. state.fullScreen = flag
  7. }
  8. }
  9.  
  10. export default mutations

actions.js

  1. // 对mutation进行封装
  2. import * as types from './mutation-types'
  3.  
  4. export const selectPlay = function ({commit, state}, {list, index}) {
  5. commit(types.SET_FULL_SCREEN, true)
  6. }

getters.js

  1. // 获取state 对数据进行映射 用getters取state的数据去到组件里
  2. // getters可以是个函数 类似于计算属性 可以根据state的不同值计算出新的值 可以在getters里写一些复杂的判断逻辑
  3.  
  4. export const fullScreen = state => state.fullScreen

index.js

  1. // 入口
  2. import Vue from 'vue'
  3. import Vuex from 'vuex'
  4. import * as actions from './actions'
  5. import * as getters from './getters'
  6. import state from './state'
  7. import mutations from './mutations'
  8. import createLogger from 'vuex/dist/logger'
  9.  
  10. Vue.use(Vuex)
  11.  
  12. const debug = process.env.NODE_ENV !== 'production'
  13.  
  14. export default new Vuex.Store({
  15. actions,
  16. getters,
  17. state,
  18. mutations,
  19. strict: debug,
  20. plugins: debug? [createLogger()] : []
  21. })

在main.js导入store

  1. import Vue from 'vue'
  2. import App from './App'
  3. import router from './router'
  4. import store from './store'
  5.  
  6. /* eslint-disable no-new */
  7. new Vue({
  8. el: '#app',
  9. store,
  10. router,
  11. render: h => h(App)
  12. })

创建meow.vue

  1. <template>
  2. <div class="meow">
  3. <transition name="normal">
  4. <div class="normal-vue" v-show="fullScreen">
  5. <div class="background">
  6. </div>
  7. <div class="top">
  8. <div class="back" @click="back">
  9. <i class="icon-back"></i>
  10. </div>
  11. <h1 class="title"></h1>
  12. <h2 class="subtitle"></h2>
  13. </div>
  14. </div>
  15. </transition>
  16. <transition name="mini">
  17. <div class="mini-vue" v-show="fullScreen">
  18. <div class="icon">
  19. </div>
  20. <div class="text">
  21. <h2 class="name"></h2>
  22. <p class="desc"></p>
  23. </div>
  24. </div>
  25. </transition>
  26. </div>
  27. </template>

script

  1. <script type="text/ecmascript-6">
  2. import { mapGetters, mapMutations } from 'vuex'
  3.  
  4. export default {
  5. computed: {
  6. ...mapGetters([
  7. 'fullScreen'
  8. ])
  9. },
  10. methods: {
  11. back() {
  12. this.setFullScreen(false)
  13. },
  14. open() {
  15. this.setFullScreen(true)
  16. },
  17. ...mapMutations({
  18. setFullScreen: 'SET_FULL_SCREEN'
  19. })
  20. }
  21.  
  22. }
  23. </script>

css

  1. <style lang="stylus" scoped>
  2. .meow
  3. .normal-vue
  4. position: fixed
  5. left:
  6. right:
  7. top:
  8. bottom:
  9. z-index:
  10. background: #aaaaaa
  11. .background
  12. position: absolute
  13. left:
  14. top:
  15. width: %
  16. height: %
  17. z-index: -
  18. opacity: 0.6
  19. filter: blur(20px)
  20. .top
  21. position: relative
  22. margin-bottom: 25px
  23. .back
  24. position absolute
  25. top:
  26. left: 6px
  27. z-index:
  28. .icon-back
  29. display: block
  30. padding: 9px
  31. font-size: 16px
  32. color: #003a39
  33. transform: rotate(-90deg)
  34. .title
  35. width: %
  36. margin: auto
  37. line-height: 40px
  38. text-align: center
  39. no-wrap()
  40. font-size: 18px
  41. color: #fff
  42. .subtitle
  43. line-height: 20px
  44. text-align: center
  45. font-size: 14px
  46. color: #fff
  47. .mini-vue
  48. display: flex
  49. align-items: center
  50. position: fixed
  51. left:
  52. bottom:
  53. z-index:
  54. width: %
  55. height: 60px
  56. background: #a1a1a1
  57. .icon
  58. flex: 40px
  59. width: 40px
  60. padding: 10px 20px
  61. .text
  62. display: flex
  63. flex-direction: column
  64. justify-content: center
  65. flex:
  66. line-height: 20px
  67. overflow: hidden
  68. .name
  69. margin-bottom: 2px
  70. no-wrap()
  71. font-size: 14px
  72. color: #fff
  73. .desc
  74. no-wrap()
  75. font-size: 12px
  76. color: #
  77. </style>

vue--动画收缩的更多相关文章

  1. vue动画的用法

    vue动画 在vue.js中有两种写动画的方法,第一种就是像js里一样,用原生代码来实现,第二种则是使用animate.css的动画类文件,这个动画类和bootstrap.css文件类似,直接调用类就 ...

  2. vue动画及其原理

    1,vue动画的实现原理,主要是通过在不同时期给需要动画的dom元素加上css动画样式 我们以显示和隐藏动画为例 a, 需要动画的dom元素 b,点击时vue控制往vue中加的样式 2,  我们以两张 ...

  3. vue教程3-02 vue动画

    vue教程3-02 vue动画 以下代码,已经用包管理器下载好vue,animate <!DOCTYPE html> <html lang="en"> &l ...

  4. vue动画实现方式

    vue动画实现方式 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset=&q ...

  5. vue动画理解,进入、离开、列表过度和路由切换。

    vue的动画对于很多初学者,甚至对很多老鸟来说也是很费劲,不容易控制的. 这篇文章讲vue动画的理解.其实没那么难. 动画理解 一个元素从A状态变成B状态,如果这个过程通过某种方式反应在视图上了,那么 ...

  6. Vue动画操作

    概述 Vue 在插入.更新或者移除 DOM 时,提供多种不同方式的应用过渡效果.包括以下工具: 在 CSS 过渡和动画中自动应用 class 可以配合使用第三方 CSS 动画库,如 Animate.c ...

  7. vue 动画原理 part1

    Vue动画原理 增加和删除css增加样式实现一个过渡效果也就是动画效果 1.需要动画效果的标签外包裹一个transition标签 会被自动分析css样式,然后自动构建一个动画流程 transition ...

  8. Javascript - Vue - 动画

    动画状态类名 vue动画通过将需要执行动画的标签放入transition标签中,再通过设置预置的vue动画类名的css样式来控制动画的呈现效果. 开场动画状态的三个类名 v-enter:动画开始之前的 ...

  9. 15.vue动画& vuex

    Vue.config.productionTip = false; ==是否显示提示信息== ==import/export== export xxx 必须跟跟对象或者和定义一起 对象: export ...

  10. vue动画

    最近想搞搞vue的过渡和动画,以为照着官网写就好了,谁知道还是出现一些状况 具体表现就是不用webpack打包时候写的过渡是正常的,而用了webpack打包就不正常了 说使用了未定义的element: ...

随机推荐

  1. 【JVM】-NO.113.JVM.1 -【JDK11 HashMap详解-4-resize()】

    Style:Mac Series:Java Since:2018-09-10 End:2018-09-10 Total Hours:1 Degree Of Diffculty:5 Degree Of ...

  2. 20175211 2017-2018-2 《Java程序设计》第六周学习记录

    目录 7.1 内部类 7.2 匿名类 7.3 异常类 断言 参考资料 <Java 2实用教程>第七章 内部类和异常类 7.1 内部类 内部类的外嵌类的成员变量在内部类中依然有效,内部类中的 ...

  3. MFC 对话框不显示,返回-1 原因

    DoModal失败原因 1.MFC 通常对话框不显示的原因有 1 父窗口HWND无效 2 在ONINITDIALOG里用了ENDDIALOG 3 无效的对话框资源ID 4 使用没有注册的的自定义控件 ...

  4. linux c tcp p2p

    江湖上一直都有这位哥哥的传说,也有很多人说自己就他的真身! 但是... 今天分享一下TCP连接的P2P demo,江湖的规矩也要与时俱进... ———————————————————————————— ...

  5. linux----------CentOS的一些除了yum安装以外的基本操作命令。

    1.tail -n 5 文件名字    : 查看大型文件的后五行内容      head -n 5 文件名字 : 查看文件的前五行内容   2.ls -lh          可以查看文件大小转换以后 ...

  6. 微信小程序之图片base64解码

    不知道大家在做微信小程序的时候遇到base64解码的问题,我之前在做微信小程序的时候遇到base64解析图片一直有问题,所以在这里把遇到的问题和解决方案在这里记录一下: 在平时的项目中我们是直接用ba ...

  7. jieba(杰巴)分词的三种模式

    jieba(结巴)是一个强大的分词库,完美支持中文分词,做为最好的Python中文分词组件. 安装:pip install jieba 特点 支持三种分词模式: 1.精确模式,试图将句子最精确地切开, ...

  8. Android Glide 加载图片

    0.借鉴文章地址:http://blog.csdn.net/zivensonice/article/details/51835802 和 http://www.cnblogs.com/zhaoyanj ...

  9. Seq2Seq ---学习笔记

    应用场景:机器翻译 与language model 不同 MT model 的a<0> 是由encoder 生成的. language model 的 a<0> 是 初始化的. ...

  10. Centos7 下安装mysql5.7.17(glibc版)

    一.安装前的检查 1.1 检查 linux 系统版本 [root@localhost ~]# cat /etc/system-release 1.2 检查是否安装了 mysql [root@local ...