卡比记账项目——记账界面数字键盘

255 阅读2分钟

数字按键设计

记账app和核心就是按键,需要输入数字。所以我们需要制作一个数字键盘来进行记账。将这个组件命名为InputPad。 首先定义数字按键的按钮。点击事件后面再写。

使用表编程,将按钮放在一个数组里。里面的每一个对象就是每个按键的属性和事件。 截屏2022-10-17 13.11.31.png

内容就是遍历这个表的每一项,并且显示表的text属性内容。 截屏2022-10-17 13.11.54.png 加入一些CSS 效果预览: 截屏2022-10-17 13.46.19.png

封装一个时间相关的库

可以引入day.js,也可以自己写一个time.js。 声明一个time函数,加入要声明一个当前的时间,给一个new Date 声明一些api: 截屏2022-10-17 14.16.55.png 但是这个毕竟是自己做的原生js组件,在手机上的使用体验并不好。

引入Vant

因为我们只需要选择时间的插件,按照官网推荐可以安装一个vite-plugin-style的插件可以自动按需引入。

使用后报了一个错: 截屏2022-10-17 14.33.40.png

在vite.config.ts内配置就可以解决:

styleImport({
    resolves: [VantResolve()],
    libs: [
        {
            libraryName: 'vant',
            esModule: true,
            resolveStyle: (name) => `../es/${name}/style`
        }
    ]
}),

成功引入之后会发现这个时间选择器是默认展开的。我们需要写一个开关来控制。

截屏2022-10-17 14.42.25.png

const refShowPop = ref(false)

规定好默认是关闭状态。用Popup这个组件来展示弹出图层。

截屏2022-10-17 14.43.31.png 里面包裹着我们的时间选择器。用户选择好时间,点击确定或者取消实现浮层关闭。

截屏2022-10-17 14.49.16.png 用onConfirm和onCancel来控制。

布局改良

重新使用Grid布局进行优化,删除了一下无用按键

截屏2022-10-17 15.43.38.png 部分CSS:

截屏2022-10-17 15.44.04.png

数字输入检查

初始值为0,不能在初始值的0后面输入0,但是可以直接输入一个小数点。但是不能连续输入两个小数点。小数点之后可以输入0~9。此外.1.这种写法也是不被允许的,但是0.01这类是被允许的 这需要我们在append的时候进行判断,不能武断的直接写

截屏2022-10-17 15.47.33.png 逻辑如下: 截屏2022-10-17 17.37.11.png

最后预览:

截屏2022-10-17 17.37.27.png