【问题标题】:flex-layout within material-toolbar材料工具栏中的弹性布局
【发布时间】:2018-06-20 22:01:33
【问题描述】:

我目前在使用 flex 布局布局 Angular2 的材质模块时遇到问题。

正如您将在下面的示例以及附加的实时版本中看到的那样,Angular2 的工具栏模块似乎不允许将 flex 布局放置在 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>

Live Example

Editor Version

我想要实现的是将按钮放置在右侧对齐。在mat-toolbar 之外,一切都像魅力一样。有什么我遗漏的,还是一个植根于材料仍处于测试阶段的错误?

【问题讨论】:

    标签: angular angular-material angular-flex-layout


    【解决方案1】:

    问题是对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>
    

    相反,您可以在左右元素之间放置一些东西,用完容器的所有剩余空间:

    <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>
    

    【讨论】:

    • 是的,我明白了,它实际上很明显它不起作用。如此愚蠢的错误:D
    【解决方案2】:

    哦,我很确定它有效,别担心:)

    只需将fxFlex 添加到包含所有项目的 div 中。

    您的问题是 div 没有占用所有空间,让您认为它不起作用。

    另外,使用fxFlex 属性可以让你的元素占据它们所能占据的所有宽度,所以只有在组件应该占据所有剩余空间时才使用它。

    Do you want a working blitz 还是您想亲自尝试并发现?

    【讨论】:

    • 谢谢,问题解决了。是否有任何具体原因为什么我必须在此处专门添加它,以及为什么它在mat-toolbar 之外工作
    • 有一个特定的原因:使用fxLayout 将属性display 设置为flex,它的行为就像一个内联元素而不是一个块元素。
    • 好吧,所以mat-toolbar 可能已经设置了这个属性,而它没有为 body 标签定义。
    • 是的,工具栏使用弹性显示,只需检查它,您将在其属性中看到display: flex,因此是 div 的行为
    • 很烦人。因为如果有人来自 html 背景,默认情况下 div 应该采用全宽
    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2017-09-23
    • 2018-04-17
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多