Office Fabric UI I[component]StyleProp vs I[component]Styles 界面使用

Posted

技术标签:

【中文标题】Office Fabric UI I[component]StyleProp vs I[component]Styles 界面使用【英文标题】:Office Fabric UI I[component]StyleProp vs I[component]Styles interface use 【发布时间】:2019-04-15 08:53:52 【问题描述】:

例如,在 Office Fabric UI 文档中,每个组件都有两个接口

https://developer.microsoft.com/en-us/fabric#/components/nav

INavStyleProps 接口

INavStyles 界面

实现 INavStyleProps 的组件可以接收任何列出的 props 来自定义样式,例如

我想知道是否有任何方法可以与通过文档公开的 INavStyles 类进行交互;本质上,实现 INavStyles 接口向组件的使用者保证了什么,而不是实现了列出的类和样式。有没有办法覆盖、自定义或以其他方式与通过此接口公开的类进行交互,类似于我们如何使用 props 与实现 INavStylesProps 的组件进行交互。

【问题讨论】:

【参考方案1】:

这里是link,显示了两个界面用于导航。这是我们为 Nav 赋予默认样式的方式。

为了覆盖任何 INavStyles area 的默认样式,您可以使用 styles 属性并将 styleFunctionOrObject 传递给它。正如您从提供的第一个链接中看到的那样,INavStyleProps 用于传递一些值以用于Nav 部分的样式或布尔值以具有一些条件样式。此外,这也是我们将主题传递给样式的方式。

您可以传递给styles 属性的样式函数看起来与我们用来提供默认样式的函数减去getGloballClassNames 后的样式完全相同。此外,如果您只想设置一个区域的样式,则返回类型应为 Partial<INavStyles>,因为所有区域都是必需的,如果您不为所有区域提供样式,它会报错。

如果这消除了关于如何使用这两个接口的困惑,请告诉我。

【讨论】:

我最终在 sharepoint 文档中遇到了这个解决方案,它可以工作。但是,您必须将样式表示为 JSON 对象,并且他们建议将这些样式存储为 css.js 文件。这是您认为最好的方法,还是有更好的方法通过 sharepoint 工具进行集成,类似于它们在导入时将 sass 文件转换为 js 对象的方式。 我认为更好的命名方式是样式对象,而不是 JSON。当您说存储时,您的意思是样式对象实际上是在哪里编写的?另外,您能否给我一个指向您找到的 SharePoint 文档的链接?

以上是关于Office Fabric UI I[component]StyleProp vs I[component]Styles 界面使用的主要内容,如果未能解决你的问题,请参考以下文章

按其值着色 office-ui-fabric-react DetailsList Cell

如何强制 Office UI Fabric ChoiceGroup 水平对齐

在 Office UI Fabric 中设置“PivotItem”的宽度

用于颜色选择的jQuery UI小部件(类似于Microsoft Office 2010中的小部件)。

Office 365常见问题解答(第一期)

microsoft office web components