6

我知道有关于同一主题的问题,但对于 HTML。关于在 Flex 应用程序中使用外部样式表有哪些好的约定?您将如何分解样式表(样式表的名称及其包含的内容)?

4

3 回答 3

2

当您发布项目时,Flex 会编译外部 CSS 文件。

有一种使用 Flex 在运行时加载 CSS 的方法;它可以通过将 CSS 文件编译成 SWF 文件并在运行时使用StyleManager.loadStyleDeclarations.

有关更多信息,请参阅运行时样式表上的 LiveDocs

于 2009-10-26T14:59:40.613 回答
1

我们在组织样式表时使用的一些约定:

  • 拥有一个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并查看源代码。但这会以运行时性能为代价。

于 2010-02-16T01:44:16.277 回答
0

Flex 不是我处理过的东西,但我做了一些研究。看起来调用远程样式表的代码是这样的:

<mx:Style source="com/example/assets/stylesheet.css" />

Flex 快速入门:构建简单的用户界面:为组件设置样式说明:

注意:您应该尽量限制应用程序中使用的样式表的数量,并且只在应用程序的顶层文档(包含标签的文档)中设置样式表。如果在子文档中设置样式表,可能会出现意外结果。

这似乎意味着多个样式表实际上是不可能的。听起来你想做的是组织你的样式表,查看组织你的样式表架构 CSS以获得一些方法的想法。看起来您有类和基本标记,但W3C 样式表规范与 Flex 样式表规范不同。

作为一名非 Flex 开发人员,命名空间作为一种组织命名空间的方式看起来很有趣:如何在 Flex 4 中使用新的 CSS 语法

于 2009-10-25T16:55:36.457 回答