当前位置:首页 > VUE

vue实现拖拽计算器

2026-03-06 20:24:53VUE

实现拖拽计算器的步骤

创建Vue项目

使用Vue CLI或Vite创建一个新的Vue项目。确保项目环境配置正确,安装必要的依赖。

npm create vue@latest drag-calculator
cd drag-calculator
npm install

安装拖拽库

Vue Draggable是一个基于Sortable.js的拖拽库,适合实现拖拽功能。

npm install vuedraggable

设计计算器界面

在组件中设计计算器的界面,包括数字按钮、操作符按钮和显示区域。使用CSS Grid或Flexbox布局确保按钮排列整齐。

<template>
  <div class="calculator">
    <div class="display">{{ currentValue }}</div>
    <div class="buttons">
      <button v-for="num in numbers" :key="num" @click="appendNumber(num)">{{ num }}</button>
      <button v-for="op in operators" :key="op" @click="setOperator(op)">{{ op }}</button>
      <button @click="calculate">=</button>
      <button @click="clear">C</button>
    </div>
  </div>
</template>

实现拖拽功能

使用vuedraggable组件包裹计算器,使其可以拖拽。设置拖拽的句柄或整个计算器为可拖拽区域。

<template>
  <vuedraggable v-model="calculatorPosition" :options="{ handle: '.calculator' }">
    <div class="calculator" ref="calculator">
      <!-- 计算器内容 -->
    </div>
  </vuedraggable>
</template>

添加计算逻辑

在Vue组件的methods中实现计算逻辑,包括数字输入、操作符设置、计算和清除功能。

methods: {
  appendNumber(num) {
    this.currentValue += num;
  },
  setOperator(op) {
    this.operator = op;
    this.previousValue = this.currentValue;
    this.currentValue = '';
  },
  calculate() {
    const prev = parseFloat(this.previousValue);
    const current = parseFloat(this.currentValue);
    switch (this.operator) {
      case '+': this.currentValue = (prev + current).toString(); break;
      case '-': this.currentValue = (prev - current).toString(); break;
      case '*': this.currentValue = (prev * current).toString(); break;
      case '/': this.currentValue = (prev / current).toString(); break;
    }
    this.operator = null;
    this.previousValue = '';
  },
  clear() {
    this.currentValue = '';
    this.previousValue = '';
    this.operator = null;
  }
}

样式优化

为计算器和拖拽区域添加CSS样式,确保计算器外观美观且拖拽体验流畅。

.calculator {
  width: 300px;
  border: 1px solid #ccc;
  border-radius: 5px;
  padding: 10px;
  background: #f9f9f9;
  box-shadow: 0 2px 5px rgba(0,0,0,0.1);
  cursor: move;
}
.display {
  font-size: 24px;
  text-align: right;
  padding: 10px;
  margin-bottom: 10px;
  background: #fff;
  border: 1px solid #ddd;
}
.buttons {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 5px;
}
button {
  padding: 10px;
  font-size: 18px;
  border: none;
  background: #e0e0e0;
  cursor: pointer;
}
button:hover {
  background: #d0d0d0;
}

测试功能

启动开发服务器,测试计算器的拖拽和计算功能是否正常工作。

vue实现拖拽计算器

npm run dev

标签: 计算器拖拽
分享给朋友:

相关文章

前端vue实现拖拽

前端vue实现拖拽

Vue 实现拖拽功能的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

Vue实现拖拽布局

Vue实现拖拽布局

Vue 实现拖拽布局的方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…

vue实现拖拽表格

vue实现拖拽表格

Vue 实现拖拽表格的方法 使用第三方库(推荐) 推荐使用 vuedraggable 或 sortablejs 这类成熟的拖拽库,它们对 Vue 有良好支持且功能丰富。 安装 vuedraggabl…

vue实现拖拽上传

vue实现拖拽上传

Vue 拖拽上传实现方法 使用 HTML5 原生拖拽 API 在 Vue 中可以通过监听原生拖拽事件实现基础功能: <template> <div class="dr…

vue实现简单拖拽

vue实现简单拖拽

Vue 实现简单拖拽功能 在 Vue 中实现拖拽功能可以通过 HTML5 的拖放 API 或第三方库(如 vuedraggable)来完成。以下是两种常见的实现方式: 使用 HTML5 拖放 API…

vue拖拽功能实现

vue拖拽功能实现

Vue 拖拽功能实现方法 使用 HTML5 原生拖拽 API HTML5 提供了原生的拖拽 API,通过 draggable 属性和相关事件实现基础拖拽功能。 <template>…