Những điều bất ngờ từ CSS (Part2)
Bài đăng này đã không được cập nhật trong 6 năm
Ở phần một mình đã giới thiệu với các bạn về margin-collapsing, block format context, absolute positioning,... Đến phần này mình sẽ tiếp tục giới thiệu đến các bạn những điều thú vị khác của CSS3
Flex box
Bạn có thực sự hiểu rõ về flex? Nếu bạn thực sự chưa hiểu rõ về flex thì thực sự bạn sẽ gặp khó khăn khi sử dụng, tại sao lại không hoạt động như mong muốn.
Mình sẽ giới thiệu 3 thuộc tính của flex là flex-grow, flex-basic, flex-shrink
flex-basic
flex-basic cũng giống như thuộc tính width. Khi flex-shrink và flex-grow được xét về 0 thì width của phần tử chính là flex-basic
Example
flex-grow Khi có nhiều hơn không gian củaflex-basicthì các phần tử có khả năng tăng trưởng dựa trên khoảng không gian trống và lúc nàyflex-growcó hiệu lực. Để hiểu một cách đơn giản thì mình sẽ lấy ví dụ sau:
.item1 {
width: 100px;
flex-grow: 1;
}
.item2 {
width: 100px;
flex-grow: 2;
}
Với flex-grow: 2; thì .item2 sẽ lấy phần dư gấp đôi item1
flex-shrink là 1. Điều này có nghĩa là khi chúng ta thu nhỏ trình duyệt lại, các phần tử đều co lại bằng nhau. Tuy nhiên giả sử mình muốn block3 nó co lại nhiều hơn so với các item khác thì mình sẽ tăng giá trị flex-shrink của nó lên.
.block3 {
flex-shrink: 2;
}
z-index
Có thể sẽ phức tạp nếu bạn không hiểu về nó Đầu tiên bạn cần hiểu thứ tự sắp xếp mặc định của các phần tử
- Static position
- Floating block
- Position block (none static position)
Đầu tiên: Z-index chỉ có tác dụng với những block có position khác
staticThứ hai: z-index hoạt động liên quan tới tổ tiên gần nhất Cuối cùng: z-index sẽ chỉ cạnh "tranh nhau" nếu chúng có cùng trong mộtstacking context
Percentages in transform
Với mô hình box modal tỷ lệ phần trăm sẽ tính toán trên kích thước của cha mẹ chúng.
Ví dụ, nếu cha có: width: 100px, con có: width: 10% thì con sẽ có width: 10px, và left: 100% thì sẽ nằm hoàn toàn bên phải của cha
Tuy nhiên với transform thì không phải như vậy
Ví dụ dưới đây sẽ giải thích rõ điều này
block.relative nằm hoàn toàn bên ngoài parent của nó vì left: 100% = width của parent.Tuy nhiên với block.transform thì left: 100% được tính là 100% width của chính nó, nên nó vẫn nằm trong parent
Tổng kết
Kết thúc hai phần mình đã giới thiệu một vài điều bất ngờ của CSS tới các bạn.Tuy nhiên CSS là cả một thế giới nên còn nhiều điều cần chính các bạn khám phá. Hãy khám phá nó và cho mình biết nhé!
Cảm ơn các bạn đã theo dõi! Good luck!!!
All rights reserved