如何用细节提升用户体验?

前端给用户反馈是提升用户体验的重要部分,根据场景选择不同的方式可以有效地提升产品的易用性和用户满意度。以下是常见的方法:

1. 视觉反馈

用户执行了某些操作后,需要即时确认操作结果。例如:按钮点击、数据提交、页面加载等。同时,在加载过程中,避免空白页面带来的不适感。

1.1 按钮状态变化

🌰:用户点击按钮后按钮变为不可点击,并显示“提交中...”。

<template><el-button :loading="isSubmitting" @click="handleSubmit">{{ isSubmitting ? '提交中...' : '提交' }}</el-button>
</template><script>
import { ref } from 'vue';export default {setup() {const isSubmitting = ref(false);const handleSubmit = async () => {isSubmitting.value = true;// 模拟耗时操作await new Promise(resolve => setTimeout(resolve, 2000));isSubmitting.value = false;alert('提交成功!');};return { isSubmitting, handleSubmit };},
};
</script>

适用场景:数据提交、文件上传等耗时操作。

1.2 骨架屏

🌰:页面加载时显示骨架屏代替真实内容。

<template><div><el-skeleton v-if="loading" :rows="5" /><div v-else>加载完成的内容</div></div>
</template><script>
import { ref, onMounted } from 'vue';
export default {setup() {const loading = ref(true);onMounted(() => {// 模拟加载数据setTimeout(() => {loading.value = false;}, 2000);});return { loading };},
};
</script>

适用场景:页面加载、图片加载等需要较长时间的操作。  

1.3 占位符

🌰:图片加载失败时显示默认占位符。

<template><el-image src="invalid-url.jpg" :fallback="defaultImage" alt="图片加载失败" />
</template><script>
export default {data() {return {defaultImage: 'https://via.placeholder.com/150',};},
};
</script>

2. 声音反馈

用户操作需要即时感知但不便通过视觉传达。例如:移动端设备、盲人用户辅助、警报系统等。

2.1 提示音、警告音等

表单提交成功时:

const audio = new Audio('/success.mp3');
audio.play();

用户输入错误密码时: 

const audio = new Audio('/error.mp3');
audio.play();

3. 文本提示

需要向用户提供明确的操作结果或错误原因。

3.1 通知栏提示

🌰:数据保存成功后,页面右上角弹出提示。

ElMessage.success('保存成功!');
3.2 错误信息

🌰:表单校验错误高亮

<template><el-form ref="formRef" :model="form" :rules="rules" label-width="100px"><!-- 邮箱输入项 --><el-form-item label="邮箱" prop="email"><el-input v-model="form.email" placeholder="请输入邮箱" /></el-form-item><!-- 提交按钮 --><el-form-item><el-button type="primary" @click="handleSubmit">提交</el-button></el-form-item></el-form>
</template><script>
import { reactive, ref } from 'vue';export default {setup() {const form = reactive({email: '',});const formRef = ref(null);// 校验规则const rules = {email: [{ required: true, message: '邮箱不能为空', trigger: 'blur' },{ type: 'email', message: '请输入有效的邮箱地址', trigger: 'blur' },],};// 提交表单const handleSubmit = () => {// 调用校验方法formRef.value.validate((valid) => {if (valid) {alert('提交成功!');} else {alert('校验失败,请检查输入内容!');}});};return { form, rules, formRef, handleSubmit };},
};
</script>

适用场景:表单提交失败时,高亮显示错误字段。

4. 进度条

用户操作需要较长时间完成,需要明确告知用户操作的进度。

分为:

- 线性进度条:文件上传、任务进度显示。 

- 环形进度条:图表渲染、复杂计算加载。

<template><div><h2>线形进度条</h2><el-progress :percentage="uploadProgress" /><h2>圆形进度条</h2><el-progress :percentage="loadingProgress" type="circle" /><div style="margin-top: 20px;"><!-- 按钮控制进度条模拟 --><el-button type="primary" @click="startUpload">开始上传</el-button><el-button type="success" @click="startLoading">开始加载</el-button></div></div>
</template><script>
import { ref } from 'vue';export default {setup() {// 定义上传进度和加载进度const uploadProgress = ref(0);const loadingProgress = ref(0);let uploadInterval = null;let loadingInterval = null;// 模拟上传进度const startUpload = () => {clearInterval(uploadInterval);uploadProgress.value = 0;uploadInterval = setInterval(() => {if (uploadProgress.value >= 100) {clearInterval(uploadInterval);alert('上传完成!');} else {uploadProgress.value += 10; // 每次增加 10%}}, 500);};// 模拟加载进度const startLoading = () => {clearInterval(loadingInterval);loadingProgress.value = 0;loadingInterval = setInterval(() => {if (loadingProgress.value >= 100) {clearInterval(loadingInterval);alert('加载完成!');} else {loadingProgress.value += 15; // 每次增加 15%}}, 400);};return {uploadProgress,loadingProgress,startUpload,startLoading,};},
};
</script>

加载过程中展示: 

5. 弹窗反馈

需要用户主动关注并采取操作时。

5.1 确认对话框
<template><el-button type="danger" @click="confirmDelete">删除</el-button>
</template><script>
import { ElMessageBox } from 'element-plus';export default {setup() {const confirmDelete = () => {ElMessageBox.confirm('确定要删除吗?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning',}).then(() => {alert('删除成功!');}).catch(() => {alert('已取消删除');});};return { confirmDelete };},
};
</script>

5.2 信息弹窗

用户登录成功后弹出欢迎信息。

ElMessageBox.alert('欢迎回来!', '登录成功');

6. 微交互

需要提升用户体验的小型反馈,如鼠标悬停、点击等。

6.1 鼠标悬停效果

🌰:用户悬停到商品卡片上,显示“加入购物车”按钮。

<template><div class="product-card" @mouseover="showButton = true" @mouseleave="showButton = false"><img src="https://via.placeholder.com/150" alt="商品" /><el-button v-if="showButton" type="primary" size="mini"> 加入购物车 </el-button></div>
</template><script>
import { ref } from 'vue';
export default {setup() {const showButton = ref(false);return { showButton };},
};
</script>

适用场景:商品展示、菜单交互。 

总结:

以上使用 Vue 3 和 Element Plus 组件库实现的一些简单方式,可以根据不同场景选择合适的反馈方式,提升用户体验!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[数据结构#2] 图(1) | 概念 | 邻接矩阵 | 邻接表 | 模拟

图是由顶点集合及顶点间的关系&#xff08;边&#xff09;组成的数据结构&#xff0c;可用 G ( V , E ) G(V,E) G(V,E)表示&#xff0c;其中&#xff1a; 顶点集合 V V V: V { x ∣ x ∈ 某数据对象集 } V\{x|x\in\text{某数据对象集}\} V{x∣x∈某数据对象集}&#xff0c;…

学习maven(maven 项目模块化,继承,聚合)

前言 本篇博客的核心&#xff1a;理解maven 项目模块化&#xff0c;继承&#xff0c;聚合 的含义 maven 项目模块化 含义 maven项目模块化&#xff1a;使用maven 构建项目&#xff0c;管理项目的方式&#xff0c;我们可以将maven项目根据内在的关系拆分成很多个小项目【模块】…

【OJ题解】最长回文子串

个人主页: 起名字真南的CSDN博客 个人专栏: 【数据结构初阶】 &#x1f4d8; 基础数据结构【C语言】 &#x1f4bb; C语言编程技巧【C】 &#x1f680; 进阶C【OJ题解】 &#x1f4dd; 题解精讲 目录 **题目链接****解题思路****1. 初步判断****2. 回文子串性质****3. 判断是…

EMQX 可观测性最佳实践

EMQX 介绍 EMQX 是一款开源、高度可伸缩、高可用的分布式 MQTT 消息服务器&#xff0c;同时也支持 CoAP/LwM2M 等一站式 IoT 协议接入。以下是 EMQX 的一些主要特点和功能&#xff1a; 海量连接与高并发&#xff1a;EMQX 能够处理千万级别的并发客户端&#xff0c;支持大规模…

kubeadm_k8s_v1.31高可用部署教程

kubeadm_k8s_v1.31高可用部署教程 实验环境部署拓扑图**署架构方案****Load Balance****Control plane node****Worker node****资源分配&#xff08;8台虚拟机&#xff09;**集群列表 前置准备关闭swap开启ipv4转发更多设置 1、Verify the MAC address and product_uuid are u…

mysql flink cdc 实时数据抓取

背景 通过监控mysql日志&#xff0c;获取表字段更新&#xff0c;用来做实时展示。 使用技术&#xff1a;Flink CDC Flink CDC 基于数据库日志的 Change Data Caputre 技术&#xff0c;实现了全量和增量的一体化读取能力&#xff0c;并借助 Flink 优秀的管道能力和丰富的上下游…

element plus el-select修改后缀图标

<el-selectv-model"value"placeholder"请选择工点"size"large":teleported"false":suffix-icon"CaretBottom"style"width: 100px"><el-optionv-for"item in options":key"item.value&quo…

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu&#xff0c;…

Qt6开发自签名证书的https代理服务器

目标&#xff1a;制作一个具备类似Fiddler、Burpsuit、Wireshark的https协议代理抓包功能&#xff0c;但是集成到自己的app内&#xff0c;这样无需修改系统代理设置&#xff0c;使用QWebengineview通过自建的代理服务器&#xff0c;即可实现https包的实时监测、注入等自定义功能…

Windows如何安装Php 7.4

一、进入官网&#xff0c;选择其他版本 https://windows.php.net/download/ 二、配置环境变量 将解压后的php 路径在系统环境变量中配置一下 cmd 后输入 php-v

ensp 静态路由配置

A公司有广州总部、重庆分部和深圳分部3个办公地点&#xff0c;各分部与总部之间使用路由器互联。广州、重庆、深圳的路由器分别为R1、R2、R3&#xff0c;为路由器配置静态路由&#xff0c;使所有计算机能够互相访问&#xff0c;实训拓扑图如图所示 绘制拓扑图 给pc机配置ip地址…

红米Note 9 Pro5G刷LineageOS

LineageOS介绍 LineageOS 是一个基于 Android 的开源操作系统&#xff0c;是面向智能手机和平板电脑等设备的替代性操作系统。它是 CyanogenMod 的继承者&#xff0c;而 CyanogenMod 是曾经非常受欢迎的一个第三方 Android 定制 ROM。 在 2016 年&#xff0c;CyanogenMod 项目因…

ECharts实现数据可视化入门详解

文章目录 ECharts实现数据可视化入门详解一、引言二、基础配置1.1、代码示例 三、动态数据与交互2.1、代码示例 四、高级用法1、多图表组合1.1、在同一容器中绘制多个图表1.2、创建多个容器并分别初始化 ECharts 实例1.3、实现多图联动 五、总结 ECharts实现数据可视化入门详解…

盲盒3.0版h5版-可打包app-新优化版紫色版

整体界面ui美观大气&#xff0c;盲盒项目也是一直比较热门的&#xff0c;各大平台一直自己也有做。 感兴趣的小伙伴可以搭建做自己的项目。盲盒项目的利润率还是很大的。

MacbookPro M1 安装Hive

前提注意⚠️⚠️⚠️ 1&#xff09;在安装Hive前确实需要安装MySQL&#xff0c;因为Hive可以使用MySQL作为元数据存储 2&#xff09;在安装Hive之前&#xff0c;需要先安装Hadoop。Hive是一个构建在Hadoop之上的数据仓库软件&#xff0c;它使用Hadoop的HDFS&#xff08;分布…

Crawl4AI:一个为大型语言模型(LLM)和AI应用设计的网页爬虫和数据提取工具实战

这里写目录标题 一、crawl4AI功能及简介1、简介2、特性 二、项目地址三、环境安装四、大模型申请五、代码示例1.生成markdown2.结构化数据 一、crawl4AI功能及简介 1、简介 Crawl4AI 是一个开源的网页爬虫和数据抓取工具&#xff0c;一个python项目&#xff0c;主要为大型语言…

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上&#xff0c;现在我们所处的阶段是&#xff0c;回顾最初的代码&#xff0c;我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本&#xff0c;涵盖我们认…

深度解读:Top14金融顶刊

作者Toby&#xff1a;来源&#xff1a;Python风控模型&#xff0c;Top14金融顶刊 各位同学好&#xff0c;我是Toby老师&#xff0c;今天为大家介绍金融风控领域的顶级学术期刊&#xff0c;用于小论文发布平台参考。 金融风控领域内有许多顶级学术期刊&#xff0c;它们发表高质…

数据库管理-第271期 Oracle 23ai:用MongoDB的方式来操作JSON二元性(20241214)

数据库管理271期 2024-12-14 数据库管理-第271期 Oracle 23ai&#xff1a;用MongoDB的方式来操作JSON二元性&#xff08;20241214&#xff09;1 初始化数据1.1 创建用户1.2 导入数据1.3 创建JSON关系二元性视图 2 创建ORDS服务2.1 下载JDK172.2 安装ORDS2.3 启用MongoDB API2.4…

计网_虚拟局域网VLAN

2024.12.08&#xff1a;计算机网络虚拟局域网VLAN学习笔记 虚拟局域网VLAN VLAN背景&#xff08;认真看&#xff09;VLAN定义&#xff08;最大的好处是隔离广播域&#xff09;VLAN以太网帧格式的扩展划分虚拟局域网VLAN的方式虚拟局域网的优点 VLAN背景&#xff08;认真看&…