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

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

相关文章

js实现分页功能代码

js实现分页功能代码

分页功能实现方法 客户端分页(前端处理数据) 适用于数据量较小且已全部加载到前端的情况。 // 示例数据 const data = Array.from({length: 100}, (_, i)…

js实现轮播代码

js实现轮播代码

基础轮播实现 使用HTML、CSS和JavaScript创建一个简单的轮播效果。HTML部分定义轮播容器和图片元素。 <div class="carousel"> <div c…

vue 实现代码

vue 实现代码

Vue 是一个流行的前端框架,用于构建用户界面。以下是一个简单的 Vue 实现代码示例,展示如何创建一个基本的 Vue 应用。 安装 Vue 通过 CDN 引入 Vue: <script s…

vue拖拽实现低代码

vue拖拽实现低代码

Vue拖拽实现低代码方案 基于现成库的方案(推荐) 使用成熟的拖拽库可以快速实现低代码功能,例如: vuedraggable:基于Sortable.js的Vue拖拽组件 vue-draggable…

vue实现代码实例

vue实现代码实例

以下是一个基于 Vue 3 的完整代码实例,包含核心功能实现和常见开发场景的示例: 基础组件示例 <template> <div> <h1>{{ ti…

vue交错实现代码

vue交错实现代码

Vue 交错动画实现方法 使用 Vue 的 <transition-group> 组件结合 CSS 过渡可以实现交错动画效果。以下是一个典型实现方式: <template&…