4

ExtJS 有一个非常有用的布局机制叫做 flex。它通过将行或列中的所有事物相加来工作。然后使用 flex 值除以所有 flex 值的总和来分配空间。这会产生如下布局:

弹性布局

红色框是 hbox 布局,块 E 和 F 具有给定的 flex 值,总和为 3,因此 E 获得屏幕宽度的 1/3,F 获得 2/3。

Blue box 是另一种 hbox 布局,其中所有 4 个部分 (AD) 具有相同的 flex,因此每个部分获得 25% 的空间。

没有显示的是周围的 vbox 布局,其中蓝色盒子的 flex 为 22,红色盒子的 flex 为 78。

Angular中有这种布局吗?如果没有,您将如何在 Angular 中将其组合在一起?


基于以下一些答案的附加信息:

我希望能够用 Angular 替换 extjs。为此,我需要一些我在 extjs 中拥有的功能,而我不知道 Angular 中存在这些功能。我已经找到了观察屏幕尺寸、更改以调整整体显示尺寸的方法,但我还没有看到一个很好的指令示例,该指令基本上自省其组成指令的该 flex 值并根据大小设置它们的大小容器的更改事件。Flex 在 div 内部不起作用,它在 div 的容器内部起作用,因为它必须遍历容器中的所有 div 才能正确划分空间。我还没有看到这样做的角度指令。

我还没有使用 Angular 的实际开发经验(我看过很多来自http://egghead.io的视频,我读过文档和教程,听过这个播客:JSJ-Angular),所以我没有知道这是容易解决的问题,还是难以解决的问题,或者是否有人已经解决了。这种 flex 布局非常酷且易于使用,实际上对于整页应用程序,我不确定是否有更简单的方法来布置它们,以便它们保持全屏并且可以适应屏幕大小的变化。网格系统在某些方面非常有用,但它们并没有解决弹性系统解决的问题。

我正在尝试看看是否有一种方法可以从 extjs 飞跃到 Angular,而不会真正让我的生活变得困难。


额外发现的信息:

看起来 flex 现在正在以 CSSdisplay: flexdisplay: inline-flex(目前带有前缀)的形式成为一种显示类型

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes

有趣的是,看插图称它为Holy Grail Layout example. 当然 IE 不会正确或及时地实现它,但我的客户不介意使用 Chrome,如果它完成了工作。

4

2 回答 2

6

原来有人创造了一个,它做了我想要的大部分。

http://ngmodules.org/modules/flexy-layout

于 2013-10-07T01:52:24.853 回答
3

你错过了重点。Angular 是唯一可以帮助您的 JS 库:

  • 模块化你的代码
  • 允许您异步加载内容
  • 使用“魔术”更改内容(双向绑定)
  • 等等

它没有描述您网站的风格。您必须自己完成或使用流行的流体/响应式 CSS 框架之一,即:

只需选择自己,然后申请到您的网站。使用它还可以使您的设计独立于 JS(这是非常糟糕的)和 JS 框架(这是地狱的第 9 圈)。

于 2013-09-11T16:51:28.093 回答