我知道有关于同一主题的问题,但对于 HTML。关于在 Flex 应用程序中使用外部样式表有哪些好的约定?您将如何分解样式表(样式表的名称及其包含的内容)?
3 回答
当您发布项目时,Flex 会编译外部 CSS 文件。
有一种使用 Flex 在运行时加载 CSS 的方法;它可以通过将 CSS 文件编译成 SWF 文件并在运行时使用StyleManager.loadStyleDeclarations
.
有关更多信息,请参阅运行时样式表上的 LiveDocs。
我们在组织样式表时使用的一些约定:
- 拥有一个
main.css
样式表,其中包含用于对基础应用程序进行皮肤设计的所有数据。 - 有一个
fonts.css
样式表来存储主应用程序中的所有字体,因为这些会变得非常混乱。
main.css 样式表通过<mx:Style source="main.css"/>
标签包含在主 swf 中。我们尽可能少地加载我们的应用程序,一旦所有内容都加载完毕,如果我们需要立即显示一些文本(如果它是一个广告网站,有时我们只播放视频),我们在主要元素中淡入/补间并加载fonts.cssStyleManager.loadStyleDeclarations
在运行时通过。
- 如果我们有一个管理面板,我们就有一个
admin.css
在运行时加载的样式表,因为主应用程序不需要它。
我们不再需要分割 CSS,因为我们通常在Theme中创建一整套皮肤,所以样式表只是将这些皮肤应用到组件并且非常精简(使用 Flex 4)。我倾向于不将样式表分割成更小的东西(比如“pages.css”、“comments.css”、“popups.css”,甚至“controls.css”等),因为这样会有点矫枉过正,而且难以管理回报很少。这在 HTML 中很常见,但那是因为 HTML 需要 CSS 才能很好地呈现;Flex 完全可以不用 CSS。
在开发时,我们中的一个人通常会立即开发大部分皮肤(具有默认的线框设置,就像在ScaleNine上找到的那样,因为他们做的是 photoshop/flash/after-effects。没有办法不必重新编译 css swf 如果你进行更改。但如果它是在运行时加载的,你只需要重新编译 css 文件而不是主 swf,这在硬核皮肤开发过程中很有用但不是真正有用。
我尝试在开发过程中将主样式表分开(在自定义主题中),这使开发变得更加困难,因为每次进行更改时我都必须单独重新编译 css,有时我也必须重新编译主应用程序,并且有奇怪且难以追踪的错误等。然后我正在编译两个不同的应用程序。所以我建议保留主应用程序的主 css 文件部分。
如果您想要运行时 css 而无需重新编译任何东西,请尝试使用Ruben 的 CSS Loader并查看源代码。但这会以运行时性能为代价。
Flex 不是我处理过的东西,但我做了一些研究。看起来调用远程样式表的代码是这样的:
<mx:Style source="com/example/assets/stylesheet.css" />
Flex 快速入门:构建简单的用户界面:为组件设置样式说明:
注意:您应该尽量限制应用程序中使用的样式表的数量,并且只在应用程序的顶层文档(包含标签的文档)中设置样式表。如果在子文档中设置样式表,可能会出现意外结果。
这似乎意味着多个样式表实际上是不可能的。听起来你想做的是组织你的样式表,查看组织你的样式表和架构 CSS以获得一些方法的想法。看起来您有类和基本标记,但W3C 样式表规范与 Flex 样式表规范不同。
作为一名非 Flex 开发人员,命名空间作为一种组织命名空间的方式看起来很有趣:如何在 Flex 4 中使用新的 CSS 语法。