SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格

这是Jerry 2021年的第 19 篇文章,也是汪子熙公众号总共第 290 篇原创文章。


本文分别针对 SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI,介绍两个通过更改 CSS 达到更改其 UI 显示风格的例子。


不少 SAP 产品都提供了个性化设置,允许 Key User 通过这些设置对 SAP 产品 UI 风格进行微调。下图是 SAP Cloud for Customer 个性化设置的界面。


SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格除了这些个性化设置外,更灵活的界面风格调整,通常采用二次开发的方式进行。


Jerry 2015年所在的 SAP 成都研究院 CRM Fiori 开发团队,负责一个名叫 My Opportunities 的 Fiori 应用,该应用没有采取现在流行的 Fiori Elements + CDS view 实现,而是直接采用原生的 SAP UI5 开发而成。


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


SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格因此客户联系 SAP,询问是否能够将该 Edit 按钮的蓝色背景色去掉,让其和上图右边的 Follow Up 及 Messages 按钮显示风格一致。


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


SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格搞清楚 Fiori 应用按钮背景色的实现原理之后,解决方案也就不难设计了。My Opportunities 这个 CRM Fiori 应用,在其 Footer 工具条的渲染逻辑上,留了一个 extension hook ( ABAP 开发人员可以将其理解成 SAP UI5 版本的 BAdI Definition).


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


SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格关于这个客户需求的更多细节,请参考我当时写的博客.

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

SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格下面再来说说 SAP Commerce Cloud (电商云) 的 UI 显示风格调整。


不同于 SAP CRM Fiori 应用,SAP Commerce Cloud UI 基于开源框架 SAP Spartacus,后者使用 Angular 进行开发,并通过 core,Storefront 和 styles 这些库文件的方式,发布给客户使用。



SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格客户新建一个 Angular 应用,在 package.json里导入 Spartacus 库文件的依赖,就可以进行 Storefront UI 的二次开发工作了。SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格SAP Commerce Cloud UI 这种基于 Spartacus 库文件的二次开发方式,使得其通过 CSS 调整 UI 风格的难度,同本文前半部分介绍的 SAP CRM Fiori 应用相比,要降低不少。


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


SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格我们可以在 styles.scss 文件里,对 SAP Commerce Cloud UI 的界面,按照需要进行 CSS 调整。

举个例子:假设我想调整购物车页面里这行 “ORDER SUMMARY” 的外观:SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格在 Chrome 开发者工具里,找到其对应的选择器为:cx-order-summary h4

SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格为了减少工作量,避免对 Order Summary 和 Coupon 这两个区域对应的选择器,重复施加相同的 CSS 设置,我们可以将重复的 CSS 设置,定义在 %jerry-custom-div 里(类似编程语言里的宏), 然后在 cx-order-summary 和 cx-cart-coupon 里使用 @extend 直接引用这个公用定义。


SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格SAP CRM Fiori 应用和 SAP Commerce Cloud (电商云) UI 如何通过调整 CSS 来改变UI显示风格

上一篇:Oracle 执行在线重定义时,表空间满了报错 ORA-23539,怎么破?


下一篇:Linux Centos7 安装jdk