如何正确使用@ angular / flex-layout?

时间:2017-07-18 19:53:54

标签: angular flexbox angular-flex-layout

我正在使用@angular/flex-layout创建一个网络应用。

当屏幕小于600px(xs)时,我尝试左右5%的边距。它在较大的屏幕上正常工作(当有fxLayout="row" - 布局时),但不在xsfxLayout="column"情况下。

Here is a demonstration in Plunker.

问题:如何让div填充右边的剩余空间,但只需要花费90%的5%左右偏移?

2 个答案:

答案 0 :(得分:3)

我编辑了你的plunker并使用[ngStyle.xs]让它工作。

代码:

@Component({
  selector: 'test-app',
  template: `
  <div fxLayout.xs="column"
     fxLayout.gt-xs="row"
     class="containerX"
     [ngStyle.xs]="{'width.%': 90, 'margin-left.%': 5, 'margin-right.%': 5}"
     style="background-color: grey">
    <div style="background-color: blue"
         fxFlex.xs="90"
         fxFlex.gt-xs="25"
         fxFlex.gt-sm="20"
         fxFlexOffset="5"
         fxFlexOffset.gt-xs="5"
         fxFlexOffset.gt-sm="10">
      Left / Top
    </div>
    <div style="background-color: red"
         fxFlex.xs="90"
         fxFlex.gt-xs="63"
         fxFlex.gt-sm="55"
         fxFlexOffset="5"
         fxFlexOffset.gt-xs="2"
         fxFlexOffset.gt-sm="5">
      Right / Bottom
    </div>
</div>
`,
  styles: [`
    .containerX {
      border: solid 1px #b6b6b6;
      background: skyblue;
      height: 200px;
      width: 100%;
    }`
]
})
export class TestApp {

}

demo

希望这有帮助!

答案 1 :(得分:3)

最后,我使用了与@ Nehal类似的方法,而不是ngStyle.xs我使用ngClass.xs并使其正常工作。

<div fxLayout.xs="column"
     fxLayout.gt-xs="row"
     fxFlex.xs="grow"
     fxFlex.gt-xs="grow">
  <div ngClass.xs="section-title-xs-margin"
       fxFlex.xs="90"
       fxFlex.gt-xs="25"
       fxFlex.gt-sm="20"
       fxFlexOffset.xs="5"
       fxFlexOffset.gt-xs="5"
       fxFlexOffset.gt-sm="10">
    Left / Top
  </div>
  <div ngClass.xs="content-xs-margin"
       fxFlex.xs="90"
       fxFlex.gt-xs="63"
       fxFlex.gt-sm="55"
       fxFlexOffset.xs="5"
       fxFlexOffset.gt-xs="2"
       fxFlexOffset.gt-sm="5">
    Right / Bottom
  </div>
</div>

在CSS中:

.section-title-xs-margin {
  margin-right: 5%;
}

.content-xs-margin {
  margin-right: 5%;
}