有没有办法覆盖现有主题及其控件,使用自定义字体?
问题:我可以使用我的自定义字体覆盖全局字体,但是我无法覆盖每个控件的字体,因为所有控件都有自己的字体属性而不是从全局继承。
有什么解决方案吗?
UI5主题化和LESS
UI5内部使用LESS,以便舒适地启用主题化。LESS是一种CSS预编译器,可以扩展CSS功能。其影响和缺点是提供的UI5主题已经预编译,这意味着您的应用程序只使用生成的纯CSS。
UI5主题化工具
不幸的是,到目前为止,UI5背后的真正工具并未向我们开发人员公开。他们提供的唯一工具是Theme Designer,甚至还有一个按需版本在此。通过Theme Designer,您应该能够轻松实现所需的样式更改。
修改UI5主题
但是,所有包含在主题中的ControlName.css文件都是未编译的less文件,您可以在library.less文件中找到UI5正在使用的所有LESS变量。因此,通过少量修改,您应该能够将这些LESS文件重新编译为一个新的library.css文件,该文件在运行时使用。库的所有CSS文件都与library.less组合并编译为一个单独的文件 - library.css
因此,如果您想要更多详细信息并了解背后的情况,请检查library.less文件,例如:http://[host][:port]/[path_to_my_application]/resources/sap/m/themes/sap_bluecrystal/library.less
您将在其中找到所有UI5 LESS变量。对您最有趣的可能是@sapUiFontFamily
。
无论如何,我不建议在此处进行大量更改,因为您的样式很容易在新的UI5版本中出现故障!