首页 > 其他分享 >企业级 Web 应用里使用 CSS 调整应用外观的一些例子

企业级 Web 应用里使用 CSS 调整应用外观的一些例子

时间:2023-12-12 13:06:35浏览次数:33  
标签:Web Edit 企业级 背景色 UI5 应用 按钮 CSS

笔者在日常工作中曾经负责过一些企业级 Web 应用的负责和开发,也曾经指导过一些客户的二次开发人员,通过各种方式对我们发布的企业级 Web 应用进行一些定制开发。

所谓企业级前端应用,是指为大型企业或组织开发的前端应用,这些应用具有超过一般 2C 软件的技术复杂度,高度定制化和可扩展性,因为企业级前端应用程序,通常需要满足企业特定的业务需求和技术要求,因此除了实现业务需求之外,还必须具备强大的性能、可扩展性、安全性和可维护性。在企业级前端开发中,开发者需要面对大规模数据处理、复杂的业务逻辑、多模块协同工作等挑战。

回到本文标题描述的需求,从实现技术复杂度上来看,最简单直接的界面定制方式,就是通过 CSS 的修改,来调整 Web 应用的 UI 外观。

本文介绍笔者日常工作中积累的一些通过操作 CSS 文件来实现 Web 应用界面调整需求的实际例子。

下图是笔者团队负责的一个名叫 My Opportunities 的 Fiori 应用,该应用没有采取现在流行的 Fiori Elements + CDS view 实现,而是直接采用原生的 UI5 开发而成。

当时有个客户,对 Fiori 应用 Footer 工具条里的 Edit 按钮的蓝色背景色提出质疑,因为该客户使用 Android 设备访问该应用,在 Android 设备上,任何按钮被点击的瞬间,背景都会被蓝色高亮。因此当时 UI5 Edit 按钮这个默认显示的蓝色背景色,让客户很难区分该按钮是否真正被点击过。

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS

因此客户联系我们团队,询问是否能够将该 Edit 按钮的蓝色背景色去掉,让其和上图右边的 Follow Up 及 Messages 按钮显示风格一致。

我接到客户的抱怨后,分析了 UI5 Footer 工具条的源代码,发现 Edit 按钮的蓝色背景色是有意为之:按照 Fiori UX Guideline,Edit 按钮的语义类型是 Emphasized ( 下图第87行的代码: .m.ButtonType.Emphasized)

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_02

而在 UI5 标准的 CSS 文件里,Emphasized 类型的按钮,背景色被设置为深蓝色。如下图 Chrome 开发者工具截图所示:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_03

搞清楚 Fiori 应用按钮背景色的实现原理之后,解决方案也就不难设计了。My Opportunities 这个 CRM Fiori 应用,在其 Footer 工具条的渲染逻辑上,留了一个 extension hook ( ABAP 开发人员可以将其理解成 UI5 版本的 BAdI Definition).

最后我建议客户,实现这个 extension hook,在代码里将 UI5 Footer 工具条标准的 Edit 按钮删除(下图第9行代码),然后在 hook 里自行创建一个普通的按钮 ( 第3行 ) 即可。当然这个按钮点击之后,执行的逻辑需与删除的标准 Edit 按钮完全一致,因此需要给其 onBtnPressed 属性,绑定上原始 Edit 按钮的点击事件处理函数:onEdit ( 第5行 ).

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_04

最后的效果:Edit 的高亮背景色消失了,客户很满意。

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_背景色_05

看另一个举一反三的需求:如果客户想把 Edit 按钮旁边的 Follow Up 按钮的背景色设置成红色呢?

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_06

解决方案:在 UI5 增强项目代码里,重新实现 UI5 onAfterRendering hook, 找到 Follow Up 按钮的引用 ( 下图第二行 oButtonListHelper.aButtons 数组里,包含了 Footer 工具条里所有按钮,数组索引为1的元素即 Follow Up 按钮 ), 然后给其添加一个新的 CSS 类:jerryButton.

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_07

这个自定义的 CSS 类 jerryButton,嵌入在增强的 XML View 里,或者定义在增强项目自定义的 CSS 文件里均可。

最后的运行时效果:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_08

下面再来说说 Spartacus UI 显示风格调整。

Spartacus 使用 Angular 进行开发,并通过 core,Storefront 和 styles 这些库文件的方式,发布给客户使用。

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_09

客户新建一个 Angular 应用,在 package.json里导入 Spartacus 库文件的依赖,就可以进行 Storefront UI 的二次开发工作了。

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_背景色_10

Commerce Cloud UI 这种基于 Spartacus 库文件的二次开发方式,使得其通过 CSS 调整 UI 风格的难度,同本文前半部分介绍的 CRM Fiori 应用相比,要降低不少。

在 Partners 基于 Spartacus 创建的 Commerce Cloud UI Angular 应用里,有一个自动生成的 styles.scss 文件,里面有一行 import 语句,导入了 Spartacus 所有标准的 CSS styles:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_11

我们可以在 styles.scss 文件里,对 Commerce Cloud UI 的界面,按照需要进行 CSS 调整。

举个例子:假设我想调整购物车页面里这行 “ORDER SUMMARY” 的外观:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_12

在 Chrome 开发者工具里,找到其对应的选择器为:cx-order-summary h4

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_13

然后在 styles.scss 里使用该选择器,覆盖掉 Spartacus styles 库里的原始设置即可:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_UI_14

最后运行时的效果:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_15

假设我想把下图 Order Summary 和 Coupon 页面的文本颜色变成绿色,字体加粗:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_背景色_16

为了减少工作量,避免对 Order Summary 和 Coupon 这两个区域对应的选择器,重复施加相同的 CSS 设置,我们可以将重复的 CSS 设置,定义在 %jerry-custom-div 里(类似编程语言里的宏), 然后在 cx-order-summary 和 cx-cart-coupon 里使用 @extend 直接引用这个公用定义。

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_17

最后的运行时效果:

企业级 Web 应用里使用 CSS 调整应用外观的一些例子_CSS_18

总结

本文介绍了两种基于 UI5 和 Angular 开发的企业级前端应用里,如何通过调整 CSS 来实现客户的页面定制化需求,希望对工作于类似需求的同事有所启发。



标签:Web,Edit,企业级,背景色,UI5,应用,按钮,CSS
From: https://blog.51cto.com/jerrywangsap/8785336

相关文章

  • Web 应用显示 Icon 的几种技术盘点
    在Web前端应用开发中,渲染图标是一个常见的需求,可以通过多种技术来实现。图标在用户界面中扮演着重要的角色,提供直观的视觉反馈和更好的用户体验。以下是一些常见的前端图标渲染技术,以及它们的一些优缺点。**1.字体图标(IconFonts)字体图标是将图标作为字体文件(通常是.ttf或.otf......
  • 谈谈企业级 Angular 应用的二次开发 - 基于 Angular Component 替换的 Extensibility
    我们知道面向个人用户(toCustomer,简称2C)软件和面向企业级用户(toBusiness,简称2B)的软件,在设计和实现上都存在一些区别,比如个人软件通常注重直观的用户界面和简单易用的设计,其中用户体验是关键,因为个人软件的目标是满足个人用户的需求和偏好。想想我们每天都在刷的抖音和头......
  • JavaWeb——文件上传与下载
    一、文件上传简介1、文件上传的步骤(1)要有一个form表单,请求方式为post请求(因为上传的文件一般都超出长度限制)。(2)form标签的encType属性值必须为multipart/form-data。表示提交的数据,以多段的形式进行拼接,然后以二进制流的形式发送给服务器。多段:一个表单项代表一个数据......
  • 【HarmonyOS】Web组件使用setResponseIsReady+setResponseData实现异步自定义响应数据
    【问题描述】在web组件的自定义响应数据方法如下:Web().onInterceptRequest((event)=>{…})如果需要在callbak中如果使用Promise等获取异步信息,并读取该如何操作 【解决方案】通过setResponseIsReady+setResponseData的方式控制数据返回,先设置setResponseIsReady为fal......
  • 【SpringBootWeb入门-9】分层解耦-分层解耦(IOC-DI引入)
    1、分层解耦概念上一节我们讲解了三层架构,我们把web程序分为了三层,分别是Conroller控制层、Service业务逻辑层、DAO数据访问层,这一节我们来讲解分层之后的解耦。解耦的含义就是接触耦合,首先我们来介绍两个概念:内聚、耦合。内聚:软件中各个功能模块内部的功能联系。耦合:衡量软......
  • Dest0g3-web部分wp
    最近的大赛很多,但是在群里也不会做,而且事比较多,所以就找点简单的小比赛查漏补缺一下,因为感觉自己基础不是很牢固。phpdest<?phphighlight_file(__FILE__);require_once'flag.php';if(isset($_GET['file'])){require_once$_GET['file'];}require_once跟直接include......
  • 炫酷CSS加载动画
    HTML结构首先是HTML代码,定义了一个类名container的<div>容器:在这个容器里面包含了一些加载器.loader,每个加载器都具有不同的旋转角度自定义属性--r(1~4),而每个加载器里面有20个<span>元素,并且也都具有不同的旋转角度自定义属性--r(1~20)。后面会通过CSS设置不同的旋转角度属性--r和......
  • .net6 webapi Swagger显示控制器为版本及接口注释
    1.安装Nuget包:Swashbuckle.AspNetCore2.使用Swagger中间件builder.Services.AddEndpointsApiExplorer();builder.Services.AddSwaggerGen(option=>{//要启用swagger版本控制要在api控制器或者方法上添加特性[ApiExplorerSettings(GroupName="版本号")] typ......
  • css中伪元素使用
    1.:after  ::after单双引号的区别其实无论是单引号还是双引号,他们的本质都是伪元素,只不过因为伪类使用的也是单引号,同时他们的写法类似,写法也相仿,但实际上css3为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。但因为兼容性的问题,所以现在大部......
  • 耐心极限大挑战,整蛊小游戏之「禁止向上走」【玩转Web小游戏】
    故事是这样开始的很久很久以前,我关注的一个游戏博主,发了一个游戏视频。然后我就见识到了什么叫,「游戏叫你一步噶,你绝对走不到第二步」。这个带那么点整蛊的性质的脑洞游戏,瞬间引起了我浓厚的兴趣。需要玩家克服大脑常规套路的惯性,那岂不是游戏处处是惊喜。不过,游戏的本质还是在于趣......