vue动画效果和vue组件——day03

<div id="app"><br>    <input type="button" value="&#x8DD1;&#x8D77;&#x6765;" @click="flag=!flag"><br>    <transition><br>        <h3 v-if="flag">&#x8FD9;&#x662F;&#x4F7F;&#x7528;&#x8FC7;&#x6E21;&#x7C7B;&#x540D;&#x8FDB;&#x884C;&#x5F97;&#x52A8;&#x753B;&#x6548;&#x679C;~</h3><br>    </transition>   <br></div>
 <script><br>     var vm = new Vue({<br>         el:'#app',<br>         data:{<br>             flag:false<br>         },<br>         methods:{<br><br>         }<br>     })<br></script>
<style><br>    .v-enter,<br>    .v-leave-to {<br>        opacity: 0;<br>        transform: translateX(150px);<br>    }<br>    .v-enter-active,<br>    .v-leave-active{<br>        transition: all 0.8s ease;<br>    }<br></style>

v-enter 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入 v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了
v-enter-active 【入场动画的时间段】 v-leave-active 【离场动画的时间段】

自定义过渡类名,在 transition标签内添加一个 name属性

1.HTML结构

 <transition name="one"><br>     <h1 v-if="flag">&#x8FD9;&#x662F;&#x4E00;&#x4E2A;H1</h1><br></transition>     

2.样式结构

<style><br>  .one-enter,<br>  .one-leave-to {<br>        opacity: 0;<br>        transform: translateY(150px);<br>    }<br>    .one-enter-active,<br>    .one-leave-active{<br>        transition: all 0.8s ease;<br>    }<br></style>

1.导入第三方库

<link rel="stylesheet" type="text/css" href="./lib/animate.css">

2.定义transition属性

  <transition <br>              enter-active-class="flipInY" <br>              leave-active-class="flipOutX"<br>              :duration="{ enter: 200, leave: 400 }"><br>      <h3 v-if="flag" class="animated">&#x4F7F;&#x7528;&#x7B2C;&#x4E09;&#x65B9;&#x5E93;&#x8FDB;&#x884C;&#x52A8;&#x753B;&#x6548;&#x679C;</h3><br></transition>

上面的两个例子动画是全场动画,而做不到半场动画的效果,使用钩子函数可以做到半场动画效果

1.html结构


2.style样式

  <style><br>      .ball {<br>          background-color: aquamarine;<br>          width: 50px;<br>          height: 50px;<br>          border-radius: 50%;<br>      }<br></style>

3.vm实例定义三个methods钩子方法:

methods: {<br>        beforeEnter(el) { // &#x52A8;&#x753B;&#x8FDB;&#x5165;&#x4E4B;&#x524D;&#x7684;&#x56DE;&#x8C03;<br>          el.style.transform = "translate(0, 0)"<br>        },<br>        enter(el, done) { // &#x52A8;&#x753B;&#x8FDB;&#x5165;&#x5B8C;&#x6210;&#x65F6;&#x5019;&#x7684;&#x56DE;&#x8C03;<br>      //&#x53EF;&#x4EE5;&#x8BA4;&#x4E3A; el.offsetWidth &#x4F1A;&#x5F3A;&#x5236;&#x52A8;&#x753B;&#x5237;&#x65B0;<br>          el.offsetWidth;<br>          el.style.transform = 'translateX(0px)';<br><br>          // &#x8FD9;&#x91CC;&#x7684; done&#xFF0C; &#x8D77;&#x59CB;&#x5C31;&#x662F; afterEnter &#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF1A;done &#x662F; afterEnter &#x51FD;&#x6570;&#x7684;&#x5F15;&#x7528;<br>          done();<br>        },<br>        afterEnter(el) { // &#x52A8;&#x753B;&#x8FDB;&#x5165;&#x5B8C;&#x6210;&#x4E4B;&#x540E;&#x7684;&#x56DE;&#x8C03;<br>          this.isshow = !this.isshow;<br>        }<br>      }

注意: 动画钩子函数的第一个参数:el,表示 要执行动画的那个DOM元素,是个原生的 JS DOM对象, 大家可以认为 , el 是通过 document.getElementById(”) 方式获取到的原生JS DOM对象

使用 transition-group标签

1.html

 <transition-group appear tag="ul"><br>     <li v-for="(item, i) in list" :key="item.id" @click="del(i)"><br>         {{item.id}} --- {{item.name}}<br>     </li><br></transition-group>

2.vm实例

<script><br>    var vm = new Vue({<br>        el: '#app',<br>        data: {<br>            id: '',<br>            name: '',<br>            list: [<br>                { id: 1, name: '小一' },<br>                { id: 2, name: '小二' },<br>                { id: 3, name: '小三' }<br>            ]<br>        },<br>        methods: {<br>            add() {<br>                this.list.push({id:this.id,name:this.name})<br>                this.id = this.name = ''<br>            },<br>            del(i) {<br>                this.list.splice(i, 1)<br>            }<br>        }<br>    })<br></script>

3.style样式

<style><br>    li {<br>        border: 1px dashed rgb(187, 3, 233);<br>        margin: 5px;<br>        line-height: 35px;<br>        padding-left: 5px;<br>        font-size: 12px;<br>        width: 100%;<br>    }<br><br>    li:hover {<br>        background-color: rgb(32, 226, 7);<br>        transition: all 0.8s ease;<br>    }<br><br>    .v-enter,<br>    .v-leave-to {<br>        opacity: 0;<br>        transform: translateY(80px);<br>    }<br><br>    .v-enter-active,<br>    .v-leave-active {<br>        transition: all 0.6s ease;<br>    }<br><br>    /* 下面的 .v-move 和 .v-leave-active 配合使用,能够实现列表后续的元素,渐渐地漂上来的效果 */<br>    .v-move {<br>        transition: all 0.6s ease;<br>    }<br>    .v-leave-active{<br>        position: absolute;<br>    }<br></style>

什么是组件: 组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可; 组件化和模块化的不同:

  • 模块化: 是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一;
  • 组件化: 是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用

通过 template 属性,指定了组件要展示的HTML结构

var login = Vue.extend({<br>    template: '<h1>&#x8FD9;&#x662F;&#x4F7F;&#x7528; Vue.extend &#x521B;&#x5EFA;&#x7684;&#x7EC4;&#x4EF6;</h1>'<br>});

使用 Vue.component(‘组件的名称’, 创建出来的组件模板对象)
如果使用 Vue.component 定义全局组件的时候,组件名称使用了 驼峰命名,则在引用组件的时候,需要把 大写的驼峰改为小写的字母,同时,两个单词之前,使用 – 链接;
如果不使用驼峰,则直接拿名称来使用即可;

<!-- 在 被控制的 #app 外面,使用 template 元素,定义组件的HTML模板结构  --><br><template id="tmpl"><br><div><br>    <h1>&#x8FD9;&#x662F;&#x901A;&#x8FC7; template &#x5143;&#x7D20;,&#x5728;&#x5916;&#x90E8;&#x5B9A;&#x4E49;&#x7684;&#x7EC4;&#x4EF6;&#x7ED3;&#x6784;,&#x8FD9;&#x4E2A;&#x65B9;&#x5F0F;,&#x6709;&#x4EE3;&#x7801;&#x7684;&#x53EA;&#x80FD;&#x63D0;&#x793A;&#x548C;&#x9AD8;&#x4EAE;</h1><br>    <h4>&#x597D;&#x7528;,&#x4E0D;&#x9519;!</h4><br>    </div><br></template>

注意: 组件中的DOM结构,有且只能有唯一的根元素(Root Element)来进行包裹!

Original: https://www.cnblogs.com/zdh052286/p/12491451.html
Author: 清酒一杯
Title: vue动画效果和vue组件——day03

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/581593/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • docker 启动mysql

    创建配置文件 mysqld.cnf Original: https://www.cnblogs.com/outsrkem/p/15704614.htmlAuthor: Outsrk…

    Linux 2023年6月6日
    074
  • c++ 使用shell命令

    #include #include #include #include #include //execute shell command //执行&#x…

    Linux 2023年5月28日
    0108
  • docker部署安装Nginx

    docker部署安装Nginx 前言 Nginx是一个高性能的HTTP和反向代理web服务器,同事也提供了IMAP/POP3/SMTP服务。特点: 轻量级的Web服务器/反向代理服…

    Linux 2023年6月6日
    095
  • 如何验收安卓PCBA主板的质量和性能

    .版本:v0.1作者:河东西望日期:2022-7-15. 对很多安卓智能设备厂商来说,他们的通用开发模式一般是:ODM/OEM设计开发主板PCBA(包括BSP驱动、原生AOSP系统…

    Linux 2023年6月7日
    0110
  • MySQL主从复制的原理和实现

    垂直扩展: 横向扩展: 复制:使每一个节点都有相同的数据集 MySQL复制的实现:使用二进制日志来实现 提高性能(负载均衡)、 实现读写分离 实现数据备份的功能(实时备份) 高可用…

    Linux 2023年6月7日
    0103
  • 一篇”水文“带你解剖HTML中的ID属性以及和Class属性的区别。

    写在开篇 哈喽!我又来写”水文”了,回顾上篇讲到的class属性,那么class属性和本篇要讲的id属性有什么不一样呢?跟随笔者步伐,一一解剖。 HTML中…

    Linux 2023年6月7日
    0103
  • Bash shell

    例一: 函数、返回状态值、比较 #!/bin/bash NUM=$(date +%S) echo "当前苹果价格是每斤$NUM元" echo "===…

    Linux 2023年5月28日
    088
  • [Git专题] 环境搭建

    环境搭建 在正式使用 Git 之前,首先应当安装 Git 并完成一些基础配置,本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法。 如果你使用的是基于 De…

    Linux 2023年5月27日
    097
  • 部署apache

    1、使用DockerHub镜像 [root@master ~]# mkdir httpd_dockerfile [root@master ~]# cd httpd_dockerfi…

    Linux 2023年6月13日
    0116
  • CentOS8.4对home目录扩容

    在工作中会遇到home空间不足的情况需对其扩容 一、添加新硬盘 我的环境是虚拟机,首先为其添加一块16G的硬盘 进入机器首先 df -h 看一下发现CentOS8.4默认使用逻辑卷…

    Linux 2023年5月27日
    099
  • VIM快捷键全集

    VIM快捷键大法 vim是我最喜欢的编辑器,也是linux下第二强大的编辑器。 虽然emacs是公认的世界第一,我认为使用emacs并没有使用vi进行编辑来得高效。 如果是初学vi…

    Linux 2023年6月7日
    099
  • shell 同时执行多任务下载视频

    本文为博主原创,转载请注明出处: shell 脚本不支持多线程,但我们需要用shell 脚本同时跑多个任务时怎么让这些任务并发同时进行,可以采用在每个任务 后面 添加一个 &amp…

    Linux 2023年5月28日
    0108
  • 我为 Netty 贡献源码 | 且看 Netty 如何应对 TCP 连接的正常关闭,异常关闭,半关闭场景

    欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 写在前面….. 本文是笔者肉眼…

    Linux 2023年6月6日
    0115
  • CentOS shell中的变量

    shell中的变量 变量的介绍 变量即变化的量,核心是”变”与”量”二字,变即变化,量即衡量状态。 量:是记录现实世界当中的某种状态…

    Linux 2023年6月7日
    096
  • Redis 用的很溜,了解过它用的什么协议吗?

    我是风筝,公众号「古时的风筝」,一个兼具深度与广度的程序员鼓励师,一个本打算写诗却写起了代码的田园码农!文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白…

    Linux 2023年5月28日
    0114
  • 深入理解linux内核-进程和程序

    task_struct //进程基本信息 pid 进程id号 tgid 线程组id号,与线程组领头线程pid号相同 getpid()返回该值 tasks init_struct链接…

    Linux 2023年6月6日
    075
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球