使用Vue解决一下吃饭选择困难症

简介: 使用Vue解决一下吃饭选择困难症

每到中午,我就会陷入一个困境,不知道吃什么,今天和同事讨论了一下,我发现并不止我一个人这样,作为一名小白程序员,我毅然决然的准备使用代码解决这个问题,今天我们就使用Vue解决一下吧

效果图


image.png

页面结构

我们的页面结构是一个盒子用于存放我们喜欢的菜品,一个是用于存放开始选择和停止选择的按钮的盒子,开始选择和停止选择的按钮分别绑定了开始选择菜品事件,当我们点击的时候存放菜品的盒子会开始跳动,当我们点击停止的时候,存放菜品的盒子就会停止跳动,然后就会呈现出我们今天要吃的菜品,完美解决我们吃饭纠结的问题

<div id="app">
    <div class="Exhibition">{{food[foodIdx]}}</div>
    <div class="btns">
      <button @click="start">开始</button>
      <button @click="stop">停止</button>
    </div>
  </div>

样式

我们对其样式做一些调整

#app {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  }
  .Exhibition {
    width: 200px;
    height: 200px;
    border: 1px solid #000;
    background: #fff;
    border-radius: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    font-size: 20px;
  }
  .btns {
    margin-top: 20px;
    display: flex;
  }
   button {
      margin-right: 10px;
    }

逻辑实现

我们声明三个变量,food变量用于存放我们喜欢吃的菜品,这样避免了我们选择到自己不喜欢吃的菜,foodIdx是菜品的下标,主要用于变动显示的菜品,timer是存放变动菜品的定时器

export default {
  data() {
    return {
    //这里可以放我们喜欢菜品
      food: [
        "大米饭",
        "瓜丝儿",
        "山鸡丁儿"
      ],
      //菜品下标
      foodIdx: 0,
      //菜品定时器
      timer: null,
    };
  },
  watch: {},
  methods: {
 //开始选择菜品
    start() {
    //先清除一下菜品定时器,防止多次点击开始
      clearInterval(this.timer);
     //实现菜品的变换我们这里是通过周期性定时器执行随机获取菜品下标方法,使得菜品可以变换
      this.timer = setInterval(() => {
        this.getFood();
      }, 50);
    },
    //获取菜品下标方法
    getFood() {
    //最小值
      const Min = 0;
      //菜品列表最大值,因为length是整个列表的长度,但是下标是从零开始的所以需要减去1
      const Max = this.food.length - 1;
      //通过Math函数方法动态的获取最大值和最小值之间的值,作为菜品下标并赋值,使得页面上的菜品刷新
      this.foodIdx = Math.round(Math.random() * (Max - Min) + Min);
    },
    //停止菜品选择
    stop() {
    //我们是通过周期性定时器实现菜品的变化,所以当我们一清除周期性定时器,菜品变换自然而然的也停止了,页面上就是我们今天随机选择的菜品
      clearInterval(this.timer);
    }
  }
};

代码我放到码上掘金上了,有兴趣的朋友们,大家可以看一看!

image.png

坚持努力,无惧未来!

相关文章
|
1月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
6天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
1月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
39 1
vue学习第一章
|
1月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
30 1
|
1月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
38 1
vue学习第四章
|
1月前
|
JavaScript 前端开发 算法
vue学习第7章(循环)
欢迎来到瑞雨溪的博客,一名热爱JavaScript和Vue的大一学生。本文介绍了Vue中的v-for指令,包括遍历数组和对象、使用key以及数组的响应式方法等内容,并附有综合练习实例。关注我,将持续更新更多优质文章!🎉🎉🎉
25 1
vue学习第7章(循环)
|
1月前
|
JavaScript 前端开发
vue学习第九章(v-model)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript与Vue的大一学生,自学前端2年半,正向全栈进发。此篇介绍v-model在不同表单元素中的应用及修饰符的使用,希望能对你有所帮助。关注我,持续更新中!🎉🎉🎉
30 1
vue学习第九章(v-model)
|
1月前
|
JavaScript 前端开发 开发者
vue学习第十章(组件开发)
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文深入讲解Vue组件的基本使用、全局与局部组件、父子组件通信及数据传递等内容,适合前端开发者学习参考。持续更新中,期待您的关注!🎉🎉🎉
43 1
vue学习第十章(组件开发)
|
1月前
|
JavaScript 前端开发
vue学习第十一章(组件开发2)
欢迎来到我的博客,我是瑞雨溪,一名自学前端两年半的大一学生,专注于JavaScript与Vue。本文介绍Vue中的插槽(slot)使用方法,包括基本插槽、具名插槽及作用域插槽,帮助你在组件开发中实现内容的灵活定制。如果你觉得有帮助,请关注我,持续更新中!🎉🎉🎉
23 1
vue学习第十一章(组件开发2)

相关实验场景

更多