表单元素--修饰符--生命周期--动画

一、表单元素

1. 单选,通过v-model绑定同一个属性,设置value值。

性别:<input type="radio" v-model='sex' value="男">男
<input type="radio" v-model='sex' value="女">女

2. 多选,通过v-model绑定同一个属性,设置value值。在data中设置hobby2属性初始值为[ ]。

<input type="checkbox" value="唱歌" v-model='hobby2'>唱歌
<input type="checkbox" value="跳舞" v-model='hobby2'>跳舞
<input type="checkbox" value="画画" v-model='hobby2'>画画
<input type="checkbox" value="打豆豆" v-model='hobby2'>打豆豆

3. 下拉菜单,给select设置v-model。

<select v-model='hobby'>
  <option value="" disabled>请选择</option>
  <option value="吃饭">吃饭</option>
  <option value="睡觉">睡觉</option>
  <option value="打豆豆">打豆豆</option>
</select>

4.多选下拉框,给select添加multiple属性,并设置v-model。在data中设置hobby属性初始值为[ ]。

<select multiple v-model='hobby1'>
  <option value="" disabled>请选择</option>
  <option value="吃饭">吃饭1</option>
  <option value="睡觉">睡觉1</option>
  <option value="打豆豆">打豆豆1</option>
</select>

5. 解决闪烁问题:

  [v-cloak]{

    display:none;

  }

二、修饰符

1.事件修饰符:

  stop (阻止冒泡); prevent(阻止默认行为); capture(事件捕获);

  once(只触发一次); self(只能自己触发自己);

2. 键盘修饰符:

  事件: keydown,  keyup

  up,  down,  right,  left,  delete,  enter

3. 鼠标修饰符:

  事件: click

  left(左击);  right(右击);  middle(中键);

4. 表单修饰符:

  lazy: 输入框失去焦点之后才会更新数据;

  number:判断第一个字符是否是数字,如果是则返回number类型,否则返回string类型

  trim:过滤首尾空格,过滤用户输入的内容,不过滤初始值

三、Vue生命周期

钩子函数:

  beforeCreate,创建之前,指new vue(),el, data 都是undefined;

  created,创建完成,el为undefined, data已经获得数据;

  beforeMount,挂载之前,el为div,但数据仍为{{msg}},data 已经获取到数据;

  mounted,挂在完成,{{msg}}已经加载完成;

  beforeUpdate,更新之前,指页面的更新,更新前后数据是一致的;

  updated,更新完成;

  beforeDestroy,销毁之前;

  destroyed:销毁完成,vm实例已经销毁,双向数据绑定不再生效。

四、动画

1. 将需要创建动画的元素用 <transition></transition>标签包起来;

2. 设置样式,v-enter;  v-enter-active;  v-enter-to;  v-leave;  v-leave-active;  v-leave-to;

.v-enter{
  opacity: 0;

.v-enter-active{
  transition: all 2s;
}
.v-enter-to{
  opacity: 1;
}
.v-leave{
  opacity: 1;
}
.v-leave-active{
  transition: all 2s;
}
.v-leave-to{
  opacity: 0;
}

<transition>
  <div class="box" v-show='isShow'></div>
</transition>

3. 页面中有多个元素需要添加动画时,给 transition添加name属性,将v-改为name的名字。

<transition name='aa'>
  <div class="box" v-show='isShow'>aaaa</div>
</transition>

4. 引入animate.css库,需带前缀animate__animated;

<transition 
enter-active-class='animate__animated animate__rubberBand'
leave-active-class='animate__animated animate__backOutLeft'
>
  <div class="box" v-show='isShow'></div>
</transition>

5.动画的方法

<transition 
@before-enter = 'beforeEnter'
@enter = 'enter'
@after-enter = 'afterEnter'
>
  <div class="box" v-show='isShow'></div>
</transition>

在methods中设置beforeEnter, enter, afterEnter方法,enter方法中必须设置offset / scroll / client系列来触发动画,在最后使用done()方法来触发afterEnter()方法。

methods: {
  fade(){
    this.isShow = !this.isShow
  },
  // el:指的是当前的这个元素,在这指的就是小球
  beforeEnter(el){
    el.style.transform = 'translate(0,0)'
  },
  enter(el,done){
    // 这是用来触发动画,如果不写动画就没办法执行 用offset或者scroll还有client系列均可
    el.offsetWidth;
    // 小球的终止位置
    el.style.transform = 'translate(500px,400px)'
    // 小球的运动时间
    el.style.transition = 'all 2s'
    // 此时这个done方法就是用来触发afterEnter函数的
    done()
  },
  afterEnter(el){
    this.isShow = !this.isShow
  }

posted @ 2020-10-29 21:06  ss_shen  阅读(156)  评论(0)    收藏  举报