你还在划水? 用vue做一个人生计时器吧

简介: 你还在划水? 用vue做一个人生计时器吧

image.png



时光荏苒,仿佛10年前就在昨天,但是我们却已经不再年轻,你知道你的人生进度条过了多少了么? 我们来用vue写一个吧。


这里有一个假设哈,我们假设(如果有异议,以你为准),我们工作到80岁就退休了。所以这个人生计时器,是以80岁为界限,退休之后就不再计入了哈,那句话怎么说来着呢: "工作就是生命"。




效果展示


码上掘金地址

建议使用电脑端打开,移动端好像兼容有问题。

code.juejin.cn/pen/7141910…

我们假设想查询下1990年生成的人,还有多久退休

image.png


再查询一个1965 年的

image.png

兄弟们,时光如梭,在不工作就老了。



初始化项目


如果你会使用【码上掘金】工具,可以跳过这一段落,阅读【前端页面搭建】哈

我们打开码上掘金(code.juejin.cn/) ,选择【新建代码片段】【新建空白片段】创建一个空项目。

image.png

由于是编写vue代码,我们点击script处右边的设置,我们加入vue.js链接。

image.png


打开后,我们在【添加依赖资源】处我们添加vue.js的地址: cdn.jsdelivr.net/npm/vue@2.6…

image.png

最后,我们写一个hello world测试案例。

image.png

点进运行,能够成功看到hello juejin.pdudo,就证明我们初始化项目成功了。



Html页面搭建


我们项目的目的是让用户输入出生日期,而后点击按钮查询,用以输出工作时间占比进度条,所以整个页面就是很简单,核心的部件为: 一个输入框、一个按钮、还有一个进度条。我们再加上一些提示等。


页面代码编写如下:

image.png

我们尝试运行一下,效果如下:

image.png

我们核心骨骼有了,我们再给添点“肉”,我们将css也给整合进去,点击运行后效果如下:

image.png


css这里就暂不过多介绍了,面向搜索引擎编程总没错。


判断日期是否合规


我们前端写完了之后,我们就可以接入vue了,我们将计划输入日期后校验一下是否准确,随后输出语句来提示用户日期输入是否正确。


vue给我们提供了@keyup的事件,我们可以将input给修改一下,代码如下:

<input type="text" @keyup="replaceVal" v-model="userInput">


这样的话,我们每次输入,都会走replaceVal方法,去校验输入的数据是否合规了.

那么如何来校验呢? 我们可以先来判断数据格式是否合规,我们假设我们要获取的类型为: yyyy-mm-dd的类型,那我们就可以写一个正则表达式来校验一下,具体正则表达式为:

[1-9]{1}[0-9]{3}-[0-9]{2}-[0-9]{2}


其中,[0-9] 代表能够匹配: 0,1,2,3,4,5,6,7,8,9的任何一个,而后面的{number}表示前面的数据匹配多少次,我们反过来看正则,首先1-9匹配1次,而后0-9匹配三次,这个正好可以用来匹配年,因为年有4位,而而且第一位不应该为0,随后我们匹配了字符-,后面和上面同理,这样,我们就能够匹配年月日出来了。


最后,我们要知晓,月份的范围是为1-12的,而每月天数是从1-最大31天的。


js中,我们使用str.search(正则表达式),如果结果为-1,就表示匹配不成功。


有了如上知识铺垫,我们很快就写出了代码,如下:

image.png

如上代码是先用正则匹配输入的年月日,而后再根据匹配的结果,来输出对应的小提示,我们小提示使用msg变量来控制的。


我们尝试来跑一下呢,正确的日期:

image.png


错误的日期


image.png


image.png


计算还能工作多久


如上,我们拿到了出生日期,我们来计算,还能工作多久呢? 具体算法如下:


如文章开头所述,我们假设工作到80岁退休,假设我现在18岁,就用18除以80再乘以100,就能看到我的进度条了。


image.png


如下,我们假设到80岁退休,我们目前进度条已经走过22.5%了,怎么样,这个算法还行吧。

可是,我们在项目中,也要将岁数算出来么?


我们可以将其全部转为时间戳来计算,就可以了。


具体方法我们用图来展示一下:


image.png



上面图示,蓝色框框圈起来的,是不是很像一个进度条呢?

具体代码如下:

image.png

我们再按钮部分,做了一个点击事件,当点击查询时,我们就会跳到queryLife方法,而该方法就是计算百分率,而后在写入youLife中,从而在页面上展示出来。



总结


哎。这个页面写出来,在电脑上运行就好好的,从手机点开,就不得行,都挤到一起去了。难怪别人说,前端花一天来完成需求,花一个月完成兼容。怎么样,好玩吧,快来试试,你的人生进度条吧。







相关文章
|
3天前
|
JavaScript
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
这篇文章介绍了在Vue项目中如何实现执行删除等危险操作时的二次确认机制,使用Element UI的`el-popconfirm`组件来弹出确认框,确保用户在二次确认后才会执行删除操作。
Vue中如何设置在执行删除等危险操作时给用户提示(二次确认后执行对应的操作)
|
3天前
|
JavaScript
如何创建一个Vue项目(手把手教你)
这篇文章是一篇手把手教读者如何创建Vue项目的教程,包括使用管理员身份打开命令行窗口、找到存放项目的位置、通过vue-cli初始化项目、填写项目信息、进入项目目录、启动项目等步骤,并提供了一些常见第三方库的引入方法。
如何创建一个Vue项目(手把手教你)
|
3天前
|
前端开发
StringBoot+Vue实现游客或用户未登录系统前、可以浏览商品等信息、但是不能购买商品或者加入购物车等操作。登录系统显示用户的登录名(源码+讲解)
这篇文章介绍了使用StringBoot+Vue实现用户登录状态判断的方法,包括前端加载用户信息和后端设置session的源码示例。
|
3天前
|
JavaScript
在Vue中使用Avue、配置过程以及实际应用
这篇文章介绍了作者在Vue项目中集成Avue组件库的完整过程,包括安装、配置和实际应用,展示了如何利用Avue实现动态表单和数据展示的功能。
在Vue中使用Avue、配置过程以及实际应用
|
3天前
|
JavaScript
如何在Vue页面中引入img下的图片作为背景图。../的使用
这篇文章介绍了在Vue页面中如何引入`img`目录下的图片作为背景图,提供了两种使用相对路径的方法。第一种是使用`../assets/img/`作为路径引入图片,第二种是使用`../../assets/img/`作为路径。文章还展示了使用这些方法的代码实现和效果展示,并鼓励读者学无止境。
如何在Vue页面中引入img下的图片作为背景图。../的使用
|
3天前
|
JavaScript
如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)
该博客文章介绍了如何在Vue 2框架下实现前后端分离的商品信息展示和详情页跳转,包括排序筛选、详情展示、加入购物车和分享功能。
如何通过点击商品的信息(图片或者文字)跳转到更加详细的商品信息介绍(前后端分离之Vue实现)
|
3天前
|
JavaScript
在Vue中使用Swiper轮播图、同时解决点击轮播图左右切换按钮不生效的问题、同时将轮播图抽离出为一个公共组件
这篇文章介绍了在Vue中如何使用Swiper插件创建轮播图,解决Swiper左右切换按钮不生效的问题,并展示了如何将Swiper轮播图抽离成一个可复用的公共组件,同时提供了详细的安装、配置和优化建议。
在Vue中使用Swiper轮播图、同时解决点击轮播图左右切换按钮不生效的问题、同时将轮播图抽离出为一个公共组件
|
3天前
|
JavaScript
如何查看Vue使用的版本
这篇文章介绍了如何在项目中查看Vue及其相关库的版本信息,比如element-ui和element-china-area-data。要查看Vue的版本,需要查看项目中的`package.json`文件,在`dependencies`部分可以找到Vue的版本号。如果需要查询不同版本的兼容性,可以访问相应的官方文档或资源网站。
|
3天前
|
存储 JavaScript 前端开发
Vue中如何通过三元运算符来展示不同的操作
这篇文章讲述了在Vue中如何使用三元运算符结合v-if指令来根据订单的不同状态展示不同的操作按钮,例如在待发货状态显示退款按钮,在待付款或完成状态显示删除按钮。
|
3天前
|
JavaScript 开发者
在Vue中引入Message,弹窗提示错误信息
这篇文章讲述了在Vue CLI项目中如何处理异常,通过引入Message组件实现弹窗提示错误信息,帮助开发者排查和解决webpack等问题。