Deep parsing layout tool -Flex layout


Traditional web layout is based on a box model, which relies on display +position +float properties. However, the limitations and flexibility of this approach are poor, and the elements on the screen can become messy, making it difficult for users to layout the page. This is where Flex (Flexible Box) layout comes in. It can complete, simple, and responsive layouts for multiple pages, making the user the “master” of the page layout.

Basic knowledge of

  • Here’s an example:

    <div class="outside"> <div class="inside1"> Child element 1</div> <div class="inside2"> Child element 2</div> </div>Copy the code

    We can turn on the Flex layout by adding the display: flex attribute to the parent element. The element that opens the Flex layout is called a Flex container, or “container,” and all of its children automatically become members of the container, called a Flex item, or “item.” The elastic box is made up of a Flex container and a Flex item.

    .outside {
      display: flex;
    Copy the code

    After opening, it will look like the following figure:

  • The Flex layout is shown below:

The container has two axes by default: a horizontal main axis and a vertical cross axis. The starting position of the spindle (where it intersects with the border) is called main start and the ending position is called main end; The start position of the cross axis is called cross start and the end position is called cross end, and the items are arranged along the main axis by default. The main axis space occupied by a single project is called main size, and the cross axis space occupied is called cross size

Properties of the Flex container

  • Sets whether the elastic container wraps when an elastic element overflows in a child element

  • Properties:

    nowrap By default, elements are not wrapped
    wrap The element wraps along the secondary axis
    wrap-reverse The element winds in reverse along the auxiliary axis
  •   .outside {
        flex-wrap: nowrap | wrap | wrap-reverse;
    Copy the code

  • Specifies how the elastic elements in the container are arranged

  • Properties:

    row By default, elastic elements are arranged horizontally in the container
    row-reverse The elastic elements are arranged horizontally in reverse in the container
    column The elastic elements are arranged longitudinally
    column-reverse The elastic elements are arranged in reverse longitudinal directions
  •   .outside {
        flex-direction: row | row-reverse | column | column-reverse;
    Copy the code

  • Set how elements on the spindle are arranged (that is, how to allocate white space on the spindle)

  • Properties:

    flex-start The elements are edged along the principal axis
    flex-end The elements are arranged along the terminal edge of the principal axis
    center The elements are centered
    space-around White space is evenly distributed on both sides of the element
    space-between White space is evenly distributed between elements
    space-evenly Whitespace is distributed to one side of the element

  • It is a short form of the flex-direction and flex-wrap properties, and the default value is Row Nowrap

  • . Outside {flex - flow: < > 'flex - direction' | | < > 'flex - wrap'}Copy the code

  • Define how items are aligned on the cross axis

  • Properties:

    stretch Default value that sets the length of the element to the same value
    flex-start Elements do not stretch and are aligned along the secondary axis
    flex-end Align along the final edge of the secondary
    center Align center
    baseline Baseline alignment
  •   .outside {
        align-content: flex-start | flex-end | center | space-between | space-around | stretch;
    Copy the code

  • Used to modify the behavior of the flex-wrap attribute, but instead of setting the alignment of the elastic child elements, it sets the alignment of the rows

  • Properties:

    flex-start Align with the starting point of the cross axis
    flex-end Align with the focus of the cross axis
    center Align with the midpoint of the intersecting axis
    space-between Align with both ends of the cross axes and evenly distribute the spacing between the axes
    space-around The spacing on both sides of each axis is equal
    stretch By default, the axis takes up the entire cross axis
  •   .outside {
        flex-wrap: wrap;
        align-content: stretch | flex-start | flex-end | center | space-between | space-around
    Copy the code

Properties of the Flex project

The container has its own property “privileges”, so should the project!

  • Used to set attributes of elastic child elements in an elastic container. Syntax:

    order: <integer>
    Copy the code
  • : Uses integer values to define the order. The default value is 0, and the smallest value takes precedence.

    .inside2 { order: -1; } // Place the second child firstCopy the code


  • Defines the scale by which an item is shrunk. The default value is 1. If space is insufficient, the item is shrunk

  •   .inside2 {
        flex-shrink: 3;
    Copy the code


  • Defines the main size of the project before allocating extra space. The default value is auto

  •   .inside2 {
        flex-basis: 20px;
    Copy the code


  • Defines the zoom scale of the project. Default is 0

  •   .inside2 {
        flex-grow: 2
    Copy the code


  • This attribute is short for flex-grow, flex-shrink, and Flex-basis. The default value is 0 1 auto. The latter two attributes are optional

  •   .inside2 {
        flex: 0 1 auto;
    Copy the code

  • Defines the alignment of flex children in the lateral (vertical) direction alone. The default value is auto, which inherits the align-items property of the parent element, or stretch if there is no parent element

  •   .inside2 {
        align-self: auto | flex-start | flex-end | center | baseline | stretch;
    Copy the code
  • Property is used the same as align-items except for auto

The last

If it helps you, please like and bookmark this article and let more people see it ~ (“▔□▔)/

If you have any objections, please leave them in the comments section and I will reply one by one

If you are interested, please visitA blogger with a light in his eyes