Всякий раз, когда мы создаем какой-либо макет, он должен быть создан таким образом, чтобы он подходил и реагировал на все размеры экрана. Мы используем Float, table, positioning и inline-block для обработки макетов в Интернете.

Однако гибкий макет имеет все эти функции и очень хорошо справляется с дизайном макета.

Зачем использовать макет Flex?

Макет Flex обрабатывает ширину и высоту элемента в соответствии с его размером в контейнере по отношению к разным размерам экрана.

Некоторые свойства flexbox применяются к его родительскому элементу, называемому flex container, а некоторые - к его дочернему элементу, который называется flex element. Гибкий контейнер растягивает свой элемент, чтобы заполнить свободное пространство, или сжимает его, чтобы предотвратить переполнение контейнера.

Создание гибкого контейнера

Запустите эту команду в интерфейсе командной строки, чтобы использовать гибкий макет: npm install @ angular / flex-layout -save

импортировать FlexLayoutModule в модуль приложения

src/app.module.ts
import { NgModule } from ‘@angular/core’;
import { BrowserModule } from ‘@angular/platform-browser’;
import { FlexLayoutModule } from ‘@angular/flex-layout’;
 
 
import { AppComponent } from ‘./app.component’;
@NgModule({
imports: [ BrowserModule, FlexLayoutModule ],
declarations: [ AppComponent ],
})
export class AppModule { }

app.component.html

<ul class=”container”>
 <li class=”odd-item”>item 1</li>
 <li class=”even-item”>item 2</li>
 <li class=”odd-item”>item 3</li>
 <li class=”even-item”>item 4</li>
 <li class=”odd-item”>item 5</li>
 <li class=”even-item”>item 6</li>
 </ul>

app.component.css

.container {
 padding: 0;
 margin: 0;
 list-style: none;
 display: flex;
 justify-content: space-around;
 flex-direction:row-reverse;
 }
 
 li {
 width: 100px;
 line-height: 150px;
 height: 150px;
 text-align: center;
 font-weight: bold;
 }
 .even-item {
 background: rgb(18, 102, 60);
 }
 
 .odd-item {
 background: rgb(39, 108, 165);
 }

Использование родительских контейнеров

fxLayout

Это используется для размещения гибкого элемента в контейнере по порядку. Есть 5 возможных значений для размещения гибкого элемента в гибком контейнере.

Свойство flex-direction используется для стилизации CSS.

Вот пример:

.container {
 flex-direction: row /* all the item will show in a single row. */ |
: column /* each flex item will show in a single column */ |
: row-reverse /* all flex item will show opposite direction of
flex-direction:row. */ |
: column-reverse /* all flex item will show opposite direction
Of flex-direction:column. */ |
:row-wrap /* if the item doesn’t fit inside container
then item overwrap to the next line. */
}

Flex-wrap

Это свойство управляет гибким контейнером и используется для обертывания гибкого элемента в одну или несколько строк. Flex-wrap может иметь разные значения.

Например:

.container {
 Flex-wrap : nowrap /* all flex items will be in one line. */ |
: wrap /* flex items will show in multiple line according
to their width from top to bottom. */ |
: wrap-reverse /* flex items will shows in multiples line from
bottom to top.*/
}

Flex Flow - сокращение от Flex-direction и Flex-wrap

  • flex-flow: row - это значение по умолчанию. Предметы размещаются в одну линию и не ломаются.
  • flex-flow: column wrap - элементы помещаются в столбец, а разрывы используются по мере необходимости.

Выравнивание содержания - выравнивание элементов главной оси

justify-content: flex-start | flex-end | center | space-between | space-around
.container {
 justify-content: flex-start | flex-end | space-evenly | space-between | space-around | center;
 }

Align-items - выравнивание поперечной оси

.container {
 align-items: stretch /* flex item will stretch from cross-start to
cross-end. */ |
flex-start /* flex item are placed toward the cross-start
of the line. */ |
flex-end /* flex-item are placed toward the cross-end of
the line. */ |
center /* flex items are in the center */ 
}

Выровнять содержание

Когда у гибкого контейнера несколько строк, мы используем это свойство align-content. Он определяет выравнивание каждой строки в контейнере.

.container {
 align-content: flex-start /* all lines are placed at the start of the
container. */ |
flex-end /* all lines are placed at the end of the
container. */ |
center /* all lines are placed in the center of the
container. */ |
space-between /* extra space distributed evenly among the
lines in the container.. */ |
space-around /* extra space distributed between the line
evenly with the equal space. */ |
stretch /* used to stretch the line to fill the free space
*/
}

Свойства дочерних элементов (гибкие элементы)

1) Заказ

Свойство Order используется для размещения гибкого элемента внутри контейнера в порядке возрастания или убывания. Стоимость заказа может быть отрицательной или указана пользователем.

Вот пример на Css:

.child-item { order:<integer>;/*default is 0 */ }

2) Самостоятельное выравнивание

Это дочернее свойство применяется к одному целевому гибкому элементу, а также используется для выравнивания поперечной оси. Вот пример:

.even-item {
 align-self: stretch | center | flex-start | flex-end | baseline | initial | inherit;
}

3) Гибкий рост

Это дочернее свойство используется для увеличения гибкого элемента, чтобы заполнить свободное пространство в контейнере.

Примечание. Это значение может быть только положительным.

4) Гибкая усадка

Это используется для сжатия гибкого элемента, чтобы при необходимости предотвратить переполнение. Вот как это выглядит в действии:

Css: flex-item {
flex-shrink: <number>; /* default 1 */
}

5) Flex-основа

Это дочернее свойство используется для указания размера в зависимости от его содержимого или от заданных значений высоты и ширины. Например:

Css: flex-item {
flex-basis: <length> | auto; /* default auto */
}

6) Гибкость

Flex - это сокращенное свойство для сочетания flex-shrink, flex-grow и flex-base.

‘0’, ‘1’ и ‘auto’ - значения гибкости по умолчанию. Во флексе второе и третье значение необязательно:

.flex-tem {
Flex: none | [ <’flex-grow’> <’flex-shrink’>? || <’flex-basis’>]
}

Надеюсь, это вам помогло. Спасибо за прочтение!

Многие разработчики пытаются понять, как изучение Flutter, React Native и Native может помочь им улучшить свои навыки разработки. В нашем посте ниже мы обсудим, что делает каждый из этих фреймворков таким эффективным.



Автор - Ниша Чаухан, DLT Labs

Об авторе: Ниша - инженер-программист в DLT Labs и часть нашей команды DL Certify, работающей над внешним и внутренним интерфейсом. Она владеет angular js, node js, PSQL, java-скриптами.

Использованная литература:

Https://css-tricks.com/snippets/css/a-guide-to-flexbox/