当前位置:首页 > VUE

vue代码抛硬币实现

2026-02-20 23:46:13VUE

实现思路

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

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. 添加音效增强体验

    vue代码抛硬币实现

    // 在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翻转效果改进

    .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. 如需更真实效果,可引入物理引擎库模拟抛掷轨迹

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

相关文章

网页表格制作css代码

网页表格制作css代码

基础表格样式 使用CSS为HTML表格添加基础样式,包括边框、间距和背景色: table { width: 100%; border-collapse: collapse; margin…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <…

react代码如何优化

react代码如何优化

使用 React.memo 进行组件优化 通过 React.memo 对函数组件进行记忆化,避免不必要的重新渲染。只有当组件的 props 发生变化时才会重新渲染。 const MyCompon…

如何让react解析HTML代码

如何让react解析HTML代码

使用 dangerouslySetInnerHTML React 提供了 dangerouslySetInnerHTML 属性来直接插入 HTML 代码。该属性接受一个对象,其中 __html 字段包…

react实现表格代码

react实现表格代码

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

react实现代码对比

react实现代码对比

React 实现代码对比的方法 在 React 中实现代码对比功能,可以通过多种方式完成。以下是几种常见的方法: 使用现成的库(如 react-diff-viewer) react-diff-vie…