自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 Vue3 使用 Signature Pad 实现电子签名(签名位置偏差问题解决)

Canvas 有 width / height 属性和CSS的 width / height 样式,两者需要一致。设备像素比(Device Pixel Ratio)表示一个 CSS 像素对应多少个设备物理像素。根据 DPI 调整笔迹粗细,确保在高分辨率设备上线条不会显得过细。监听窗口大小变化并重新初始化签名板,确保在响应式布局中正常工作。:在高分辨率屏幕上,CSS 像素与设备像素不一致。禁用触摸设备的默认滚动行为,确保签名体验流畅。:未考虑设备像素比导致的事件坐标转换错误。使事件坐标与实际绘制位置匹配。

2025-04-11 09:27:50 1259

原创 微信小程序 request 流式数据处理

流式数据处理(Streaming Data)指逐步接收并处理数据片段的技术,无需等待全部数据加载完成。适用于大文件下载、实时日志、AI生成报告等场景,可显著降低内存占用并提升用户体验。

2025-04-07 13:56:04 1822

原创 Vue3 视频播放与截图功能实现

调用 Canvas 的 toDataUrl() 方法,将绘制好的图像数据转换为 Base64 编码的图片URL。:创建一个与视频尺寸相同的 Canvas 画布,使用 Canvas 2D 上下文(Condext2D)的 drawImage() 方法将视频帧绘制到画布上。:首先,通过 <video> 元素获取当前播放的视频帧画面,浏览器会将视频解码为连续的图像帧,我们可以通过 <video> 标签的API访问当前显示的帧。使用 HTML5 的 <video> 标签实现,src。改成你自己的视频路径。

2025-04-03 16:57:39 542

原创 Vue 使用 xlsx 插件导出 excel 文件

是否自动调整列宽,默认为 true。工作表名称,默认为 Sheet1。数据数组,包含要导出的数据。导出的 Excel 文件名。水印文本,默认为空字符串。表头数组,包含列名。

2025-03-27 19:06:39 570

原创 微信小程序 scroll-view 滚动到页面底部

使用 wx.createSelectorQuery 获取 scroll-view 的内容高度,使用 scroll-top 设置竖向滚动条位置。

2025-03-05 17:10:21 885

原创 CSS 实现波浪效果

具体使用需要自行调节 radial-gradient,background-size,background-position 的值,使形状衔接流畅。调整 background-size 的百分比会改变波浪的覆盖范围,调整 background-position 的值会改变两个渐变图案的重叠程度。第一个值:水平位置(left, center, right 或百分比),第二个值:垂直位置(top, center, bottom 或百分比)。第一个值:渐变椭圆的宽度,第二个值:渐变椭圆的高度;

2025-02-26 11:05:20 1123

原创 Blob Url 转换成 Blob对象

【代码】Blob Url 转换成 Blob对象。

2025-01-17 10:19:05 458

原创 uniapp canvas 实现单指拖动、双指拖动和双指缩放

双指实现图片放大,首先获取图片的初始位置 initX 和 双指中心点到整个页面最左侧的距离 centerX ,得到双指中心点到自身边框的距离 bx ,接着通过缩放比例计算放大后双指中心点到自身边框的距离 ax,通过缩放前的 bx 减去缩放后的 ax ,就得到了缩放后图片在页面上移动的距离 scaleDx 了,y轴同理。双指拖动原理跟单指拖动一样,多加一步,用双指的中心点去计算,上图的点看成是双指的中心点,其他的一样。

2024-08-26 17:46:39 1809

原创 uniapp 使用 iconfont 图标

custom-prefix 对应 font-family ,type 对应 icon 后缀带的图标名。font-family 可以用默认的也可以自己命名,我这里是改了的,要改三个地方。全局引入在App.vue中引入,在 标签下引入。局部引入,在需要用到的页面引入,方法一样。iconfont-阿里巴巴矢量图标库。

2024-08-21 13:58:01 900

原创 JS 实现大对象深度对比

在现代前端框架(如 React、Vue)中,常常需要管理应用的状态,这时大对象就显得尤为重要。如果对象过于庞大,可能会对性能产生负面影响,例如响应速度变慢、内存占用增加等。大对象一般包含多个嵌套层级,可能包括数组、对象、函数等。

2024-08-19 21:31:34 482

原创 Vue3 自定义指令

可以定义指令的生命周期钩子,比如 created, beforeMount, mounted, beforeUpdate, updated, beforeUnmount, unmounted 等。在 main.js 文件中,通过 app.directive 方法来注册。

2024-08-09 16:23:22 533

原创 Vue3 使用 echarts

这个问题是在切换 series 或者 resize 时报错的, vue3 中使用 proxy 的方式监听响应式, this.chart 会被在 vue 内部转换成响应式对象,从而在 resize 的时候获取不到。在实例化echart时,将其指定为非响应式的即可。

2024-08-08 10:07:53 517

原创 Vue 3 纯前端实现导出excel功能

使用 xlsx-oc 的 exportExcel(header, list, fileName) 方法实现(header 表头数据,list 表格数据,fileName 文件名)

2024-07-19 17:29:01 370

原创 Vue 3 调起打印窗口

【代码】Vue 3 调起打印窗口。

2024-07-19 16:03:32 353

原创 React Native FlatList 实现上拉加载、下拉刷新

FlatList 提供了 上拉加载(onEndReached)、下拉刷新(onRefresh)、是否显示加载的 loading 效果(refreshing)这三个属性。

2024-07-16 17:18:13 946

原创 Vue3 el-form 当有必填项未填的时候,提交表单时光标自动移动到第一个未填项且出现提示信息

利用 Object.prototype.toString.call() 方法判断 proxy.$refs[keys[0]] 的类型是否为对象的字符串形式。1. 当校验不通过时收集所有未通过字段项的提示信息,将其通过 push 方法添加到定义好的数组中 messageArr。2. 通过 proxy.$refs[keys[0]] 获取到首个字段校验不通过的提示信息;3. 最后通过 scrollIntoView 方法滚动到首个不通过校验字段项。,作用主要是用来定位(ref 的值建议与 prop 同名)。

2024-07-12 16:20:03 743

原创 Vue3 实现长时间未操作系统,登录过期的功能

登录成功后记录时间(记为上一次点击),后面每次点击的时候都获取一次当前的时间,将当前时间减去上一次点击页面的时间,如果小于15分钟,就用当前的时间替换掉上一次点击的时间,大于15分钟就退出登录。用户登录系统,设置超时时间为15分钟,用户超过15分钟未操作页面,则在15分钟后再次点击页面的时候出现退出登录提示,点击跳转到登录页。

2024-07-12 16:01:15 1278

原创 React Native 封装一个 buttonGroup 按钮组

【代码】React Native 封装一个 buttonGroup 按钮组。

2024-06-25 14:31:21 296

原创 React Native 滚动到页面指定位置

3. 再通过 scrollViewRef.current.scrollTo({y: layoutY[i], animated: true});滚动到对应位置,y 是刚才获取到的 e.nativeEvent.layout.y。1. 在渲染需要滚动到的指定位置的 View 标签,通过 onLayout 的 e.nativeEvent.layout.y 获取每个关键词距离页面顶部的位置;2. 给 绑定一个 ref = {scrollViewRef};

2024-06-21 16:28:23 783

原创 React Native 使用 react-native-chart-kit 实现图表

【代码】React Native 使用 react-native-chart-kit 实现图表。

2024-06-19 19:27:16 781

原创 React Native 使用 react-native-table-component 实现表格

使用第三方库 react-native-table-component。使用第三方库 react-native-chart-kit。

2024-06-19 11:09:09 449

原创 vue 的五种组件通信方式

Vue 实例作为中央事件总线,通过 $on 监听事件,$emit 发布事件,实现任意组件间的通信。父组件通过 props 向子组件传递数据,子组件通过 emit 发送事件给父组件。之间的简单通信,父组件向子组件传递数据,子组件通过事件触发通知父组件。Vue.js 的官方状态管理库,集中式存储管理应用的所有组件的状态。适用于需要在子组件中访问父组件的特性和监听器的场景。获取父组件传递的非 prop 特性,通过。获取父组件传递的事件监听器。适用于复杂的组件结构,需要在。关系的非父子组件通信,或者。

2024-06-16 10:55:28 468

原创 Vue3 离开当前页面提示 防误触功能

使用 onBeforeRouteLeave 判断是否有路由跳转。

2024-06-13 18:52:40 968

原创 Vue 一个项目实现多个入口文件打包(单页面打包)

在 .env.development 和 .env.production 文件中定义打包变量。# 需要打包的页面 打包单页面填页面名称JsonData 打包全部all。

2024-06-12 19:02:29 639

原创 React Native 打包(本地)

接着会让你输入密钥库口令,我用的是官网给的 my-release-key ,这个口令最好一个项目的开发都统一,这样 gradle 配置一次就可以,后面不需要再改。

2024-06-04 18:56:46 709

原创 React Native 封装一个双层 tab 栏

react-native-elements 只提供单层的 tab 切换,且无法嵌套使用,所以使用 tab 和 button 这两个组件封装了一个,可以自定义两层 tab 标题和每个 tab 对应的页面(以组件形式传入)。

2024-05-31 16:21:47 443

原创 React Native 封装一个表单组件

使用 react-native-modal-datetime-picker 第三方组件,只能选择年月日,时间不进行处理的话是默认当前时间(为了适应后端接口需要,我这里设置了个 initTime ,可以手动将时间设置为 00:00:00 或者 23:59:59)。使用 react-native-dropdown-picker 第三方实现,现在多选 multiple 的选择结果值有问题,仍是单选结果。使用 elements 的 Input 组件,集成 Formik 和 Yup 表单校验。

2024-05-29 17:26:17 842

原创 React Native 展示富文本(HTML标签)

设置 contentWidth 是为了正确处理屏幕旋转和图像缩放,不设置的话可能会导致在屏幕旋转后布局变得不一致,也会出现警告。要想全局控制整体样式,需要设置 tagsStyles 属性,需要根据每个标签做适配,开发成本有些大。

2024-05-22 10:39:26 794

原创 React Native 添加全局水印

写一个将水印内容渲染到整个页面的组件,再全局引入。

2024-05-14 17:48:15 1215

原创 React Native 路由导航 react-navigation 6.x 的使用

react native 官网的主推方案就是一个单独的导航库 react-navigation。

2024-05-10 11:01:20 1977

原创 vue2/vue3 拖拽组件draggable封装

相同的组之间可以相互拖拽。list 是一个数组。设置拖动元素时的样式。

2024-04-29 16:50:42 739

原创 js 实现复制并能保留原格式粘贴

【代码】js实现复制并能保留原格式粘贴。

2024-04-18 11:18:49 700

原创 微信小程序 验证码登录 自定义输入框样式

将 input 输入框颜色设置透明,定位到自定义输入框的样式上面,点击输入框时聚焦,可以输入内容,再将输入的值分别赋值到已经渲染好的横线上,最后监听 input 的值,实现输入完直接自动登录。

2024-04-09 14:40:58 855

原创 微信小程序 自定义底部导航栏 tabbar

在每个导航栏的页面都需要单独写一个 onShow 方法,当显示 tabbar 页面时,需要手动 setData 选中当前菜单的 index ,否则无法实现自定义 tabbar 的选中状态。然后在 utils 文件夹中添加 tabBarUrl.js 文件,用来存放所有的 tabbar 地址,这个文件可以自己命名。),在这个文件夹里新建一个 index.wxa 的文件,就是我们自定义 tabbar 的文件了,这部分的代码基本可以照搬。接着编写自定义 tabbar 的文件,在与。

2024-04-09 14:19:36 548

原创 微信小程序 上传代码失败,提示分包大小超过限制的问题解决

如果有之前开发完成的功能,但是后续不再使用,在确认之后可以将其删除,减少代码量;或是之前的冗余代码也可进行优化。检查有没有引入但未使用的插件或组件,有的话要删掉,这也可以避免不必要的空间浪费。除了主页面和tabbar页面需要放在主包之外,其他的都可以按模块进行分包。直接将需要压缩的文件压缩完替换掉项目中原先的文件即可。按照以上代码配置如果出现下面的报错,可以试试“项目,有时候缓存的问题会导致奇怪的错误。

2024-04-02 15:44:48 2459

原创 vue3封装全局自定义可取消的加载弹框

【代码】封装全局自定义可取消的加载弹框。

2023-12-23 09:49:15 346

原创 微信小程序 游客模式

接口调用成功后再决定是否置为 'tourist'(比如退出登录的时候接口调用成功后也不需要置为 'tourist' )。这里当状态码返回4001时进入游客模式,存的是 wx.loginMode。在 wx.request 之前做判断,如果是游客模式,就 return。由于进入游客模式后不发起任何请求,所以在需要调用接口比如。等按钮的时候,需要先将。

2023-12-23 09:19:12 1211

原创 内容自动滚动轮播

【代码】内容自动滚动轮播。

2023-12-12 18:57:02 279

原创 Vue3 让用户高度自定义文本内容

【代码】让用户高度自定义文本内容。

2023-11-19 09:09:21 181

原创 js 拖拽事件

拖放元素在目标元素上离开时触发(在目标元素上时如果松开鼠标也会触发)。实现简单的拖拽事件(将一个 div 中的内容拖拽到另一个 div ),被拖放的元素在目标元素上同时鼠标放开触发的事件。拖放元素进入目标元素时触发。拖放元素在目标元素上时触发。才会触发drop事件】被拖拽的元素一定要有。在拖拽的过程中触发。

2023-09-06 07:38:25 381

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除