material-toolbar 内的弹性布局
flex-layout within material-toolbar
我目前在使用 flex 布局布局 Angular2 的 material 模块时遇到问题。
正如您将在下面的示例以及附加的实时版本中看到的那样,Angular2 的工具栏模块似乎不允许将弹性布局放置在 mat-toolbar
中
<mat-toolbar color="primary">
<div fxLayout="row" fxLayoutAlign="end">
<a mat-button fxFlex="auto">Item 1</a>
<a mat-button fxFlex="auto">Item 2</a>
<a mat-button fxFlex="auto">Item 3</a>
<a mat-button fxFlex="auto">Item 4</a>
</div>
</mat-toolbar>
<div fxLayout="row" fxLayoutAlign="end">
<a mat-button>Item 1</a>
<a mat-button>Item 2</a>
<a mat-button>Item 3</a>
<a mat-button>Item 4</a>
</div>
我想要实现的是将按钮放置在右侧。在 mat-toolbar
之外,一切都像一个魅力。有什么我遗漏的吗?或者是根植于 material 仍处于测试阶段的错误?
哦,我很确定它有效,别担心:)
只需将 fxFlex
添加到包含所有项目的 div 即可。
您的问题是 div 没有占用所有 space,让您认为它不起作用。
此外,使用 fxFlex
属性 会使您的元素占用所有宽度,因此仅当组件应占用所有剩余宽度时才使用它 space.
Do you want a working blitz 还是你想尝试一下自己发现?
问题是对 fxLayoutAlign
的误解。它只是对齐容器内的内容,并不影响容器本身的位置。在您的情况下,包含所有链接的 div 的位置不受 fxLayoutAlign
属性的影响,而只会影响 div.
中链接的位置
<mat-toolbar color="primary">
<span>Nav</span>
<div fxLayout="row" fxLayoutAlign="end">
<a mat-button fxFlex="auto">Item 1</a>
<a mat-button fxFlex="auto">Item 2</a>
<a mat-button fxFlex="auto">Item 3</a>
<a mat-button fxFlex="auto">Item 4</a>
</div>
</mat-toolbar>
相反,您可以在右侧和左侧的元素之间放置一些东西,用完容器的所有剩余 space:
<mat-toolbar color="primary">
<span>Navi</span>
<span fxFlex></span>
<a mat-button>Item 1</a>
<a mat-button>Item 2</a>
<a mat-button>Item 3</a>
<a mat-button>Item 4</a>
</mat-toolbar>
我目前在使用 flex 布局布局 Angular2 的 material 模块时遇到问题。
正如您将在下面的示例以及附加的实时版本中看到的那样,Angular2 的工具栏模块似乎不允许将弹性布局放置在 mat-toolbar
<mat-toolbar color="primary">
<div fxLayout="row" fxLayoutAlign="end">
<a mat-button fxFlex="auto">Item 1</a>
<a mat-button fxFlex="auto">Item 2</a>
<a mat-button fxFlex="auto">Item 3</a>
<a mat-button fxFlex="auto">Item 4</a>
</div>
</mat-toolbar>
<div fxLayout="row" fxLayoutAlign="end">
<a mat-button>Item 1</a>
<a mat-button>Item 2</a>
<a mat-button>Item 3</a>
<a mat-button>Item 4</a>
</div>
我想要实现的是将按钮放置在右侧。在 mat-toolbar
之外,一切都像一个魅力。有什么我遗漏的吗?或者是根植于 material 仍处于测试阶段的错误?
哦,我很确定它有效,别担心:)
只需将 fxFlex
添加到包含所有项目的 div 即可。
您的问题是 div 没有占用所有 space,让您认为它不起作用。
此外,使用 fxFlex
属性 会使您的元素占用所有宽度,因此仅当组件应占用所有剩余宽度时才使用它 space.
Do you want a working blitz 还是你想尝试一下自己发现?
问题是对 fxLayoutAlign
的误解。它只是对齐容器内的内容,并不影响容器本身的位置。在您的情况下,包含所有链接的 div 的位置不受 fxLayoutAlign
属性的影响,而只会影响 div.
<mat-toolbar color="primary">
<span>Nav</span>
<div fxLayout="row" fxLayoutAlign="end">
<a mat-button fxFlex="auto">Item 1</a>
<a mat-button fxFlex="auto">Item 2</a>
<a mat-button fxFlex="auto">Item 3</a>
<a mat-button fxFlex="auto">Item 4</a>
</div>
</mat-toolbar>
相反,您可以在右侧和左侧的元素之间放置一些东西,用完容器的所有剩余 space:
<mat-toolbar color="primary">
<span>Navi</span>
<span fxFlex></span>
<a mat-button>Item 1</a>
<a mat-button>Item 2</a>
<a mat-button>Item 3</a>
<a mat-button>Item 4</a>
</mat-toolbar>