Tuesday, March 9, 2021
Lưu Xuân Trường's Blog
  • Trang chủ
  • Backend
    • Laravel
    • Golang
    • NodeJS
    • MongoDB
    • Redis
    • WordPress
      • Kinh nghiệm
      • Plugins
  • Frontend
    • CSS
    • Javascript
      • ReactJS
      • UmiJS
      • VueJS
      • NuxtJS
      • Angular
      • RxJS
    • Game HTML5
  • Mobile
    • React Native
    • IOS
    • Android
    • Flutter
  • Tutorials
    • Redux-Saga
  • How to
  • Góc Ngoài Lề
    • Sống Chậm Nghĩ Sâu
    • Câu Hỏi Phỏng Vấn
    • IQ Test
  • Liên Hệ
No Result
View All Result
  • Trang chủ
  • Backend
    • Laravel
    • Golang
    • NodeJS
    • MongoDB
    • Redis
    • WordPress
      • Kinh nghiệm
      • Plugins
  • Frontend
    • CSS
    • Javascript
      • ReactJS
      • UmiJS
      • VueJS
      • NuxtJS
      • Angular
      • RxJS
    • Game HTML5
  • Mobile
    • React Native
    • IOS
    • Android
    • Flutter
  • Tutorials
    • Redux-Saga
  • How to
  • Góc Ngoài Lề
    • Sống Chậm Nghĩ Sâu
    • Câu Hỏi Phỏng Vấn
    • IQ Test
  • Liên Hệ
No Result
View All Result
Lưu Xuân Trường's Blog
No Result
View All Result

Cách tính chiều rộng của flex item

truongluu by truongluu
15/10/2020
in CSS
Reading Time: 3min read
0 0
0
Cách tính chiều rộng của flex item
0
SHARES
17
VIEWS
Share on FacebookShare on Twitter

Giả sử có 1 ví dụ sau:  1 flex container có chiều rộng 900px, và các thông số flex-item như hình dưới

Để tính chiều rộng của các flex-item, gồm các bước sau đây:

  1. Tìm khoảng trống còn lại:
    vì flex-basic: auto, nên ta có kích thước của mổi flex item khỏi tạo là 183px, ta tính được kích thước của khoảng trống còn lại
    1
    2
    3
    4
    5
    Chiều rộng của flex container là: 900px
     
    Kích thước khởi tạo của các flex item là: (183px + 183px + 183px) = 549px
     
    Như vậy kích thướt khoảng trống còn lại: 900px - 549px = 351px
  2. Nếu khoảng trống còn lại là số dương thì tính kích thướt của 1 flex-grow, ngược lại tính tỷ lệ nén của mổi flex-item:
    Trường hợp trên kích thướt khoảng trống còn lại là số dương, nên ta tính kích thướt của 1 flex grow
    1
    2
    3
    Tổng cộng tất cả giá trị của flex-grow : (1 + 1 + 1) = 3
     
    Như vậy của 1 flex grow là: 351px/3 = 117px

     
  3. Tìm kích thước của từng flex item:
    1
    2
    3
    4
    5
    Kích thướt của flex item 1 sẽ là: (1 × 117px) + 183px = 300px
     
    Kích thướt của flex item 2 sẽ là: (1 × 117px) + 183px = 300px
     
    Kích thướt của flex item 3 sẽ là: (1 × 117px) + 183px = 300px

     

Trong trườngh hợp kích thướt của khoảng trống còn lại là số âm, ví dụ: xét trường hợp sau

Ở hình trên, ta có các thông số sau: chiều rộng của flex container là auto (hiện tại là 542px), thì cách tính chiều rộng của flex item như sau:

  1. Tìm khoảng trống còn lại:
    1
    2
    3
    4
    5
    Chiều rộng flex container là: 542px
     
    Kích thướt khởi tạo của các flex item là: (200px + 183px + 183px) = 566px
     
    Như vậy khoảng cách còn lại khoảng trống là: 542px - 566px = -24px
  2. Vì khoảng cách còn lại là số âm, nên ta dựa vào flex shirk để tính tỉ lệ nén của mổi flex item:
    1
    2
    3
    4
    5
    6
    7
    Tổng số tất cả flex item co theo tỷ lệ là: ( (1 × 200) + (1 × 183) + (1 × 183) ) = 566
     
    Hệ số co cho flex item 1 là: (1 × 200) / 566 = 0.35
     
    Hệ số co cho flex item 2 là: (1 × 183) / 566 = 0.32
     
    Hệ số co cho flex item 3 là: (1 × 183) / 566 = 0.32
  3. Tìm kích thước của từng flex item:
    1
    2
    3
    4
    5
    Flex item 1 sẽ là: (0.35 × -24px) + 200px = 191.52px
     
    Flex item 2 sẽ là: (0.32 × -24px) + 183px = 175.24px
     
    Flex item 3 sẽ là: (0.32 × -24px) + 183px = 175.24px

    Ghi chú: Nếu các tính toán này dẫn đến chiều rộng âm, mục đó sẽ được kẹp ở 0 và các phép tính sẽ được thực hiện lại với các mục còn lại và khoảng trống còn lại mới

Nguồn: https://www.madebymike.com.au/demos/flexbox-tester/

Tags: flexbox
Previous Post

Exec mode cluster trong PM2 khi sử dụng Express với Socket IO

Next Post

Flexbox boilerplate phiên bản Less

truongluu

truongluu

Next Post
Flexbox boilerplate phiên bản Less

Flexbox boilerplate phiên bản Less

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Quotations

About me

Field of interests: Svelte, ReactJS, Angular, VueJS, React Native, Flutter, NodeJS, MongoDB, Message Broker, WordPress, AdonisJS, NestJS, NuxtJS, Docker, Microservice, Arduino, Game HTML5. Hope to share my experiences with everybody

Recent Posts

  • Code push in React Native
  • What’s middleware? How does it work?
  • Styled components trong ReactJS
  • Frontity cơ bản phần I (Tạo và chạy dự án)
  • React framework for WordPress

Recent Comments

  • truongluu on Giới thiệu về UmiJS P2 (Cấu trúc thư mục, cấu hình thường dùng)
  • Hung on Giới thiệu về UmiJS P2 (Cấu trúc thư mục, cấu hình thường dùng)
  • Redux Saga phần III (Tips khi làm việc) - Lưu Xuân Trường's Blog on Quản lý trạng thái tải khi dùng redux-saga
  • Redux Saga phần II (Các khái niệm cơ bản) - Lưu Xuân Trường's Blog on Cheatsheets Non Blocking, Blocking Redux Saga
  • truongluu on Giới thiệu về UmiJS P4 (Server Side Rendering)

Archives

  • February 2021
  • January 2021
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • March 2020
  • February 2020
  • January 2020
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • April 2018
  • March 2018

Categories

  • AdonisJS
  • Angular
  • Arduino
  • Backend
  • Câu Hỏi Phỏng Vấn
  • CSS
  • Ebook
  • Frontend
  • Frontity
  • Góc Ngoài Lề
  • How to
  • IOS
  • IQ Test
  • Javascript
  • Kinh nghiệm
  • Kinh nghiệm làm việc
  • Máy chủ
  • Mobile
  • MongoDB
  • NestJS
  • NodeJS
  • NuxtJS
  • Plugins
  • React Native
  • React Native
  • ReactJS
  • Redis
  • Redux-Saga
  • RxJS
  • Tutorials
  • UmiJS
  • Uncategorized
  • VueJS
  • WordPress

Friends

Phu's blog
  • RxJS toàn tập (P1 giới thiệu RxJS là gì)

    RxJS toàn tập (P1 giới thiệu RxJS là gì)

    0 shares
    Share 0 Tweet 0
  • Giới thiệu về UmiJS P1 (Tổng quan về umiJS)

    0 shares
    Share 0 Tweet 0
  • Redux Saga phần I (Giới thiệu)

    0 shares
    Share 0 Tweet 0
  • Giới thiệu về UmiJS P2 (Cấu trúc thư mục, cấu hình thường dùng)

    0 shares
    Share 0 Tweet 0
  • Một số câu hỏi phỏng vấn frontend developer

    0 shares
    Share 0 Tweet 0

About me

Lưu Xuân Trường

Field of interests: Svelte, ReactJS, Angular, VueJS, React Native, Flutter, NodeJS, MongoDB, Message Broker, WordPress, AdonisJS, NestJS, NuxtJS, Docker, Microservice, Arduino, Game HTML5. Hope to share my experiences with everybody

© 2020 https://luuxuantruong.info

No Result
View All Result
  • Trang chủ
  • Backend
    • Laravel
    • Golang
    • NodeJS
    • MongoDB
    • Redis
    • WordPress
      • Kinh nghiệm
      • Plugins
  • Frontend
    • CSS
    • Javascript
      • ReactJS
      • UmiJS
      • VueJS
      • NuxtJS
      • Angular
      • RxJS
    • Game HTML5
  • Mobile
    • React Native
    • IOS
    • Android
    • Flutter
  • Tutorials
    • Redux-Saga
  • How to
  • Góc Ngoài Lề
    • Sống Chậm Nghĩ Sâu
    • Câu Hỏi Phỏng Vấn
    • IQ Test
  • Liên Hệ

© 2020 https://luuxuantruong.info

Welcome Back!

Login to your account below

Forgotten Password?

Create New Account!

Fill the forms below to register

All fields are required. Log In

Retrieve your password

Please enter your username or email address to reset your password.

Log In