Как правильно использовать @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 {
}
Надеюсь это поможет!