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

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

时间:2023-12-02 17:56:56浏览次数:36  
标签: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 按钮这个默认显示的蓝色背景色,让客户很难区分该按钮是否真正被点击过。

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

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

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

搞清楚 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行 ).

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

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

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

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

最后的运行时效果:

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

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

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

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

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

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

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

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

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

最后运行时的效果:

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

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

最后的运行时效果:

总结

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

标签:Web,Edit,企业级,UI5,应用,按钮,CSS
From: https://www.cnblogs.com/sap-jerry/p/17871922.html

相关文章

  • 什么是前端 Web 应用响应式页面布局里的 Breakpoint 概念
    在Web前端开发中,响应式设计是一个非常重要的概念,它允许网页UI根据不同的设备屏幕大小进行适当的调整以优化用户体验。在这种设计中,breakpoint是一个关键的概念。我们可以把breakpoint理解为屏幕宽度的一种临界点,当屏幕宽度达到这个点时,我们会调整页面布局以适应这个新的屏......
  • Web_XCTF_WriteUp | unserialize3
    题目分析根据题目指向,这题是反序列化漏洞。分析代码:classxctf{public$flag='111';//变量flag初始化为111publicfunction__wakeup(){//“__wakeup”:PHP魔术方法,在序列化后立即被调用exit('badrequests');//输出“badrequests”}?code=......
  • 探索 Web API:SpeechSynthesis 与文本语言转换技术
    一、引言随着科技的不断发展,人机交互的方式也在不断演变。语音识别和合成技术在人工智能领域中具有重要地位,它们为残障人士和日常生活中的各种场景提供了便利。WebAPI是Web应用程序接口的一种,允许开发者构建与浏览器和操作系统集成的应用程序。本文将探讨WebAPI中的Spe......
  • CSS进阶3-transform 动画-渐变(线性渐变、镜像渐变)-关键帧
      1.动画介绍:改变盒子在平面内的形态(平移、缩放、旋转、倾斜)属性: 平移:transform:translate(值1,值2);(默认为X轴,translateY--下移) ——平移依然在原来文档流。  移动:transform:translate......
  • 谈谈企业级 Angular 应用的二次开发 - 基于 Angular Component 替换的 Extensibility
    我们知道面向个人用户(toCustomer,简称2C)软件和面向企业级用户(toBusiness,简称2B)的软件,在设计和实现上都存在一些区别,比如个人软件通常注重直观的用户界面和简单易用的设计,其中用户体验是关键,因为个人软件的目标是满足个人用户的需求和偏好。想想我们每天都在刷的抖音和......
  • Web 应用显示 Icon 的几种技术盘点
    在Web前端应用开发中,渲染图标是一个常见的需求,可以通过多种技术来实现。图标在用户界面中扮演着重要的角色,提供直观的视觉反馈和更好的用户体验。以下是一些常见的前端图标渲染技术,以及它们的一些优缺点。**1.字体图标(IconFonts)字体图标是将图标作为字体文件(通常是.ttf或.o......
  • CSS技巧:从高度0过渡到自动高度
    本文翻译自CSStrick:transitionfromheight0toauto!,作者:FrancescoVetere,略有删改。如果你在CSS上花了足够长的时间,很可能你曾尝试过从height:0到auto的平滑过渡。。。却发现它不起作用!......
  • 企业级持续集成系列(01):DevTestOps自动化平台设计
     本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/16721826.html 为什么要写企业级持续集成(jenkins+pipeline+k8s)?目前网上自动化持续集成的资料很多,但基本上都是局限于jenkins自由风格的job,结合shell脚本来实现持续集成,这种方式的缺点也很明显:1、构建出问......
  • 初探webpack之单应用多端构建
    初探webpack之单应用多端构建在现代化前端开发中,我们可以借助构建工具来简化很多工作,单应用多端构建就是其中应用比较广泛的方案,webpack中提供了loader与plugin来给予开发者非常大的操作空间来操作构建过程,通过操作中间产物我们可以非常方便地实现多端构建,当然这是一种思想而不是......
  • css选择器
    这篇文章主要总结了css选择器的相关知识1.元素选择器<divid="container"><pclass="text"></p><h1class="titletext"></h1><div>//选中p元素p{font-size:12px;}2.群组选择器//html同上,同时选中p和h1元素p,h1{c......