当前位置:首页 > VUE

vue实现卡片翻转

2026-01-18 07:46:00VUE

vue实现卡片翻转

Vue 实现卡片翻转效果

卡片翻转效果可以通过 CSS 3D 变换和 Vue 的过渡系统实现。以下是两种常见实现方式:

基础 CSS 3D 翻转

<template>
  <div class="flip-card" @click="isFlipped = !isFlipped">
    <div class="flip-card-inner" :class="{ 'flipped': isFlipped }">
      <div class="flip-card-front">
        <!-- 正面内容 -->
        <h3>Front Side</h3>
      </div>
      <div class="flip-card-back">
        <!-- 背面内容 -->
        <h3>Back Side</h3>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFlipped: false
    }
  }
}
</script>

<style>
.flip-card {
  perspective: 1000px;
  width: 300px;
  height: 200px;
}

.flip-card-inner {
  position: relative;
  width: 100%;
  height: 100%;
  transition: transform 0.6s;
  transform-style: preserve-3d;
}

.flip-card-front, .flip-card-back {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
}

.flip-card-front {
  background-color: #42b983;
  color: white;
}

.flip-card-back {
  background-color: #35495e;
  color: white;
  transform: rotateY(180deg);
}

.flip-card-inner.flipped {
  transform: rotateY(180deg);
}
</style>

使用 Vue Transition 组件

<template>
  <div class="flip-container" @click="isFlipped = !isFlipped">
    <transition name="flip">
      <div v-if="!isFlipped" key="front" class="card front">
        Front Content
      </div>
      <div v-else key="back" class="card back">
        Back Content
      </div>
    </transition>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isFlipped: false
    }
  }
}
</script>

<style>
.flip-container {
  perspective: 1000px;
  width: 300px;
  height: 200px;
}

.card {
  position: absolute;
  width: 100%;
  height: 100%;
  backface-visibility: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
}

.front {
  background: #42b983;
  color: white;
}

.back {
  background: #35495e;
  color: white;
  transform: rotateY(180deg);
}

.flip-enter-active {
  animation: flip-in 0.6s;
}

.flip-leave-active {
  animation: flip-out 0.6s;
}

@keyframes flip-in {
  from { transform: rotateY(90deg); }
  to { transform: rotateY(0deg); }
}

@keyframes flip-out {
  from { transform: rotateY(0deg); }
  to { transform: rotateY(90deg); }
}
</style>

进阶技巧:3D 翻转效果

.flip-card-3d {
  transform-style: preserve-3d;
  animation: flip3d 2s infinite;
}

@keyframes flip3d {
  0% { transform: rotateY(0deg); }
  50% { transform: rotateY(180deg); }
  100% { transform: rotateY(360deg); }
}

注意事项

  1. perspective 属性设置观察者与 z=0 平面的距离,值越小3D效果越明显
  2. transform-style: preserve-3d 确保子元素保持3D空间
  3. backface-visibility: hidden 隐藏元素的背面
  4. 对于移动设备,可以添加 -webkit-backface-visibility 前缀确保兼容性

以上方法可以根据实际需求调整动画时间、缓动函数和翻转方向(rotateX或rotateY)。

vue实现卡片翻转

标签: 卡片vue
分享给朋友:

相关文章

vue实现单选

vue实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式完成,以下是几种常见的方法: 使用 v-model 绑定单选按钮 通过 v-model 绑定一个变量,可以实现单选功能。单选按钮的 v…

vue怎么实现页面返回

vue怎么实现页面返回

Vue 实现页面返回的方法 在 Vue 中实现页面返回功能,可以通过以下几种方式完成,具体取决于项目使用的路由模式和技术栈。 使用 Vue Router 的编程式导航 通过 this.$route…

vue实现压缩上传文件

vue实现压缩上传文件

压缩上传文件的实现方法 在Vue中实现文件压缩和上传功能,可以通过以下步骤完成。该方法结合了前端文件压缩库和HTTP请求,确保文件在上传前被有效压缩。 安装必要的依赖 需要使用compressorj…

vue实现微博印象

vue实现微博印象

实现微博印象功能的核心思路 微博印象功能通常指用户发布微博后,系统自动分析文本内容并提取关键词或标签,以可视化形式展示。Vue实现该功能需要结合文本分析、关键词提取和前端渲染技术。 文本分析与关键词…

vue实现展开与收起

vue实现展开与收起

Vue 实现展开与收起功能 在 Vue 中实现展开与收起功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-i…

vue实现弹窗可切换

vue实现弹窗可切换

实现弹窗可切换的 Vue 方案 动态组件切换 通过 Vue 的 <component :is="currentComponent"> 动态加载不同弹窗组件,结合 v-if 控制显示状态。…