vuejs 引导卡片组件动画

Posted

技术标签:

【中文标题】vuejs 引导卡片组件动画【英文标题】:vuejs bootstrap card component animation 【发布时间】:2018-07-01 01:47:04 【问题描述】:

我有一个 users 数组,并在循环中显示卡片组件中的每个用户,我希望在单击卡片时将带有动画的卡片展开到全宽以显示用户详细信息并隐藏其他卡片,my code on codepen 我的问题是动画,如何顺利隐藏其他卡片并将点击的卡片展开到整行(col-12)。

Vue.component('card', 
  props: ['user','index'],
  template:`
<div class="col-6 col-lg-3 mb-3">
    <div class="card step">
        <div class="card-body p-3 clearfix" @click="view(index)">
            name:  user.name 
        </div>
    </div>
</div>`,
  methods: 
    view(index) 
      this.$emit('on-view', index);
    
  
);

new Vue(
  el: '#app',
  data: 
    users:[name:'john',
           description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
           name:'mike',
           description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
           name:'kevin',
           description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
           name:'david',
           description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.',
          name:'sasha',
           description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.'],
    detailMode: false
  ,
  methods: 
    onDetailMode(index) 
      console.log(index);
      this.detailMode = true;
    
  
);
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-beta.2/css/bootstrap.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script>
<div id="app" class="container-fluid mt-4">
  <div class="row">
    <card :user="user" :index="index"
          v-for="(user,index) in users"
          @on-view="onDetailMode"></card>
  </div>
</div>

【问题讨论】:

【参考方案1】:

您可以在主组件中使用数据:

data: 
    selectedUser: null,
    user: [...]

methods: 
   select (id) 
       this.selectedUser = id;
   

在你的组件中添加一个属性:

Vue.component('card', 
   props: ['user','index', 'details'],
   template:`
   <div class="col-6 col-lg-3 mb-3">
    <div class="card step">
      <div class="card-body p-3 clearfix" @click="view(index)">
          name:  user.name 
       </div>
      <div v-show="details"> ... </div>
    </div> 
  </div>`,
 
);

然后在循环中你可以添加适当的行为。

<div v-for="item in users" @click="selectedUser = item.id">
    <card :details="item.id === selectedUser"></card>
</div>

【讨论】:

以上是关于vuejs 引导卡片组件动画的主要内容,如果未能解决你的问题,请参考以下文章

角度动画因不透明度​​设置而失败(以及更多错误)

我的 vuejs 动画/过渡滞后于路径更改。

Material-ui卡片翻转动画

Vue js引导程序在折叠时添加动画

我还应该在 VueJS 中使用 jQuery 来制作动画吗?

iOS炫酷动画图案多种选择器网络测速滑动卡片效果等源码