当前位置:首页 > VUE

vue代码抛硬币实现

2026-02-20 23:46:13VUE

实现思路

使用Vue的数据绑定和事件处理功能,通过随机数生成模拟抛硬币的正反面结果,并添加动画效果增强交互体验。

基础实现代码

<template>
  <div class="coin-container">
    <div 
      class="coin" 
      :class="{ 'heads': isHeads, 'tails': !isHeads, 'flipping': isFlipping }"
      @click="flipCoin"
    >
      {{ coinFace }}
    </div>
    <p>点击硬币进行抛掷</p>
    <p>历史记录: {{ history.join(', ') }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isHeads: true,
      isFlipping: false,
      history: []
    }
  },
  computed: {
    coinFace() {
      return this.isHeads ? '正面' : '反面'
    }
  },
  methods: {
    flipCoin() {
      if (this.isFlipping) return

      this.isFlipping = true
      setTimeout(() => {
        this.isHeads = Math.random() > 0.5
        this.history.push(this.coinFace)
        this.isFlipping = false
      }, 1000)
    }
  }
}
</script>

<style>
.coin-container {
  text-align: center;
  margin-top: 50px;
}

.coin {
  width: 100px;
  height: 100px;
  border-radius: 50%;
  background-color: gold;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  font-size: 20px;
  cursor: pointer;
  transition: transform 1s ease-out;
  box-shadow: 0 0 10px rgba(0,0,0,0.3);
}

.coin.flipping {
  transform: rotateY(1800deg);
}

.heads {
  background-color: gold;
}

.tails {
  background-color: silver;
}
</style>

功能扩展建议

  1. 添加音效增强体验

    // 在methods中添加
    playSound() {
    const audio = new Audio('coin-flip-sound.mp3')
    audio.play()
    }
    // 在flipCoin方法中调用
  2. 统计功能

    data() {
    return {
     stats: {
       heads: 0,
       tails: 0
     }
    }
    },
    methods: {
    updateStats() {
     this.isHeads ? this.stats.heads++ : this.stats.tails++
    }
    }
  3. 3D翻转效果改进

    vue代码抛硬币实现

    .coin {
    transform-style: preserve-3d;
    }
    .coin:before, .coin:after {
    content: '';
    position: absolute;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    backface-visibility: hidden;
    }
    .coin:before {
    background: gold;
    transform: rotateY(0deg);
    }
    .coin:after {
    background: silver;
    transform: rotateY(180deg);
    }

注意事项

  1. 动画持续时间应与随机结果生成时间匹配
  2. 防止连续快速点击导致动画异常
  3. 移动端适配可考虑添加触摸事件支持
  4. 如需更真实效果,可引入物理引擎库模拟抛掷轨迹

标签: 硬币代码
分享给朋友:

相关文章

jquery代码

jquery代码

以下是关于jQuery代码的常见用法和示例,涵盖基础操作、事件处理、DOM操作等核心功能: 基础语法 jQuery通过$()函数选择元素,支持CSS选择器语法: // 选择所有<p>元…

vue代码核心实现

vue代码核心实现

Vue 核心实现原理 Vue.js 的核心实现主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现要点: 响应式系统 通过 Object.defineProperty(Vue 2)…

vue动画实现代码

vue动画实现代码

Vue 动画实现代码示例 Vue 提供了内置的过渡和动画支持,主要通过 <transition> 和 <transition-group> 组件实现。以下是常见的动画实现方式:…

vue实现代码块

vue实现代码块

Vue 实现代码块的常用方法 使用第三方库如 highlight.js 安装 highlight.js 并配置 Vue 插件,通过自定义指令或组件实现代码高亮。 npm install high…

react项目代码如何上生产环境

react项目代码如何上生产环境

构建生产环境代码 运行以下命令生成优化后的生产版本代码,该命令会启用代码压缩、tree-shaking等优化措施: npm run build 构建完成后会在项目根目录生成build文件夹,包含所有…

react实现表格代码

react实现表格代码

以下是一个使用React实现表格的完整代码示例,包含基本功能如动态渲染数据、排序和分页: 基础表格实现 import React from 'react'; const BasicTable…