element组件与动画使用

简介: 1.什么是ElementElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,封装很多常用组件,官网是element.eleme.cn/#/zh-CN/com…,下面就简单介绍 element。


image.png

本教程为入门教程,如有错误,请各位前端大佬指出。

1.什么是Element

Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库,封装很多常用组件,官网是element.eleme.cn/#/zh-CN/com…,下面就简单介绍 element。

当你访问官网,发现无数已经封装好了的页面,而且样式多样,一般可以满足大部分的业务需求,如果你是业务开发,直接复制粘贴,然后在复制好的代码上补充字段也填写业务即可了。

1.安装和引入

如果想使用Element,那么需要下载和安装element-ui的类库,否则会抛出异常。

1. npm i element-ui -S
2. npm install babel-plugin-component -D
3. 复制代码

然后,将.babelrc文件修改为:

{
  "presets": [
    ["env", {
      "modules": false,
      "targets": {
        "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
      }
    }],
    "stage-2"
  ],
  "plugins": ["transform-vue-jsx", "transform-runtime"],
  "env": {
    "test": {
      "presets": ["env", "stage-2"],
      "plugins": ["transform-vue-jsx", "transform-es2015-modules-commonjs", "dynamic-import-node", [
        "component",
        {
          "libraryName": "element-ui",
          "styleLibraryName": "theme-chalk"
        }
      ]]
    }
  }
}
复制代码

2.使用

接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容,证明你想使用引入的组件:

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
//element组件相关配置
import { Button, Select, Option } from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(Button)
Vue.use(Select)
Vue.use(Option)
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
    el: '#app',
    router,
    components: { App },
    template: '<App/>'
})
复制代码

然后将代码直接复制过来,将字段对应同时加入业务即可。

<template>
<el-select v-model="value" filterable placeholder="请选择">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
</template>
<script>
export default {
name: 'HelloWorld2',
data() {
      return {
        options: [{
          value: '选项1',
          label: '黄金糕'
        }, {
          value: '选项2',
          label: '双皮奶'
        }, {
          value: '选项3',
          label: '蚵仔煎'
        }, {
          value: '选项4',
          label: '龙须面'
        }, {
          value: '选项5',
          label: '北京烤鸭'
        }],
        value: ''
      }
    }
}
</script>
复制代码

通过element,我们就不用自己编写页面了,大大减少了工作量,同时方式也比较不错。上文仅仅使用按钮作为演示,其他组件请自行测试。

2.动画

Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果,在此过程中,就会形成动画。 动画使用包括以下工具:

  • 在 CSS 过渡和动画中自动应用 class
  • 可以配合使用第三方 CSS 动画库,如 Animate.css
  • 在过渡钩子函数中使用 JavaScript 直接操作 DOM
  • 可以配合使用第三方 JavaScript 动画库,如 Velocity.js

下面简单做一下动画的实例

1.隐藏显示

点击一次字体隐藏,再次点击字体显示,以下附上代码。

app.vue
<template>
  <div id="app">
    <anim/>
  </div>
</template>
<script>
import anim from './components/anim.vue'
export default {
  name: 'App',
  components:{
   anim
  },
  data () {
  return {
 }
},
  methods: {
   clickButton(event){
     if(this.stutas ==HelloWorld){
         this.stutas = HelloWorld2
     }else{
         this.stutas = HelloWorld
     }
   }
},
}
</script>
<style>
</style>
Anim.vue
<template>
<div id="demo">
  <button v-on:click="show = !show">
    Toggle
  </button>
  <!-- 动画必备 -->
  <transition name="demo">
    <p v-if="show">hello</p>
  </transition>
</div>
</template>
<script>
export default {
name: 'anim',
data () {
  return {
    show: true
}
},
methods: {
    clickButton(){
    }
}
}
</script>
<style>
.demo-enter-active, .demo-leave-active {
  transition: opacity 5s;
}
.demo-enter, .demo-leave-to /* .fade-leave-active below version 2.1.8 */ {
  opacity: 0;
}
</style>
复制代码

2.移动

点击一次字体右移,再次点击字体左移。下文附上代码。

<template>
<div id="demo">
  <button v-on:click="show = !show">
    Toggle
  </button>
  <!-- 动画必备 -->
  <transition name="demo">
    <p class = "myDemo" v-if="show">hello</p>
  </transition>
</div>
</template>
<script>
export default {
name: 'anim',
data () {
  return {
    show: true
}
},
methods: {
    clickButton(){
    }
}
}
</script>
<style>
.demo-enter-active, .demo-leave-active {
    transition: all .5s ease;
}
.demo-enter, .demo-leave-to /* .fade-leave-active below version 2.1.8 */ {
  transform: translateX(100px);;
}
.demo-enter-to, .demo-leave /* .fade-leave-active below version 2.1.8 */ {
  transform: translateX(0px);;
}
.myDemo{
  position:absolute;
  left:50px
}
</style>
复制代码

在进入/离开的过渡中,会有 6 个 class 切换。

  • v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
  • v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
  • v-enter-to2.1.8 版及以上定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。
  • v-leave:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
  • v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
  • v-leave-to2.1.8 版及以上定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

3.使用第三方库

这里推荐的第三方库为Animate。首页: daneden.github.io/animate.css…。 Animate.css是一个随时可用的跨浏览器动画库,可用于您的 Web 项目。非常适合强调、主页、滑块和注意力引导提示。下文将简单介绍animate.css的基础用法。

1.index.html引入组件

相同道里,需要引入组件才能使用。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/animate.css@3.5.1" rel="stylesheet" type="text/css">
    <title>project</title>
</head>
<body>
    <div id="app"></div>
    <!-- built files will be auto injected -->
</body>
</html>
复制代码

2.引入div

然后获取官网文档的样式,直接使用即可。

<template>
<div id="example-3">
  <button @click="show = !show">
    Toggle render
  </button>
  <transition
    name="custom-classes-transition"
    enter-active-class="animated zoomOutRight"
    leave-active-class="animated fadeInDownBig"
  >
    <p v-if="show">hello</p>
  </transition>
</div>
</template>
<script>
export default {
name: 'anim',
data () {
  return {
    show: true
}
},
methods: {
}
}
</script>
<style>
</style>
复制代码

如有其他需要也可以参考文档:animate.style/#documentat…


相关文章
|
1月前
|
JavaScript
vue element plus Slider 滑块
vue element plus Slider 滑块
33 0
|
1月前
|
JavaScript
vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化
vue监听dom元素的宽高变化和自定义指令监听dom元素的宽高变化
31 0
|
1月前
|
JavaScript 容器
vue element plus Infinite Scroll 无限滚动
vue element plus Infinite Scroll 无限滚动
23 0
|
3月前
|
JavaScript
在Vue中,如何使用<transition>元素实现过渡效果?
在Vue中,如何使用<transition>元素实现过渡效果?
12 3
|
6月前
|
JavaScript
Vue框架Element UI教程-出现和隐藏动画(三)
Vue框架Element UI教程-出现和隐藏动画(三)
53 0
|
7月前
|
前端开发 JavaScript
优美的Reactl列表动画:Styled-Components动画实践
优美的Reactl列表动画:Styled-Components动画实践
Element Plus 日期选择器的使用和属性
Element Plus 日期选择器的使用和属性
|
9月前
Vue2-Element-ui滚动条美化
Vue2-Element-ui滚动条美化
256 0
|
10月前
|
Web App开发 JavaScript 前端开发
Element-ui 滚动条美化
有时候为了使界面滚动条,各个浏览器的滚动条能保持一致,这样我们的项目避免在各个浏览器存在差异导致UI界面的不一致,这时候我们就可以考虑使用通用组件的方式,对各个需要滚动的页面,或者弹出窗口添加统一的组件进行包裹,来保证滚动效果在各个浏览器中能有更好的体验效果。最后我们看到各个浏览器中滚动条的效果,基本上各个浏览器的表现效果是一致的,添加通用组件,默认情况下滚动条是不显示的,只有鼠标移动过去才会进行显示,整体上效果和用户体验会更好。在源码顶部,看到有一个链接地址,是参考另一个插件的实现,如下所示。
Element-ui 滚动条美化