Как правильно использовать @angular/flex-layout?

Я создаю веб-приложение, используя https://github.com/angular/flex-layout.

Я стараюсь иметь 5% поля влево и вправо, когда экран меньше 600 пикселей (xs). Он работает правильно на больших экранах (когда есть fxLayout="row"-выпуск), но не в xs а также fxLayout="column"-situation.

Вот демонстрация в Плункер.

Вопрос: как сделать divне заполнить оставшееся пространство справа, но заставить их занять только 90% со смещением 5% влево и вправо?

2 ответа

Решение

В конце концов, я использовал такой же подход, как @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%;
}

Я отредактировал ваш плункер и заставил его работать, используя [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 {

}

демонстрация

Надеюсь это поможет!

Другие вопросы по тегам