Hướng dẫn css-to-react-native - css-to-react-native
Để học được React Native thì chúng ta cần phải học thật vững HTML CSS Javascript trước. Tuy nhiên có thể có nhiều bạn lại quá vội vàng nhảy vào học thẳng React Native luôn, ví dụ như học theo một khóa trên Youtube: Học React Native qua các ví dụ thực tế 2021 (project based). Show Do đó mình sẽ tổng hợp lại một số thuộc tính CSS hay dùng trong React Native để các bạn ôn tập lại dễ hơn. Chú ý trong CSS viết thuộc tính theo dạng hyphen-delimited còn trong React Native thì viết theo dạng camelCase và giá trị có phân biệt là số hay chuỗi (dùng Javascript). Các thuộc tính CSS liên quan đến textĐổi màu chữ: color. Phân biệt với đổi màu nền là background-color. Màu sắc có thể đặt giá trị theo tên Tiếng Anh (red, green, blue, ...) hoặc dùng mã hex (#000000, #ffffff, ...). Đổi kích thước chữ: font-size. Chú ý trong React Native đơn vị luôn là px nên chỉ cần truyền giá trị dạng số. Ví dụ: Đổi độ đậm nhạt: font-weight. Đổi font chữ: font-family. Chú ý khi thay đổi sang font chữ khác thì cần cài đặt font vào trong ứng dụng. Biến đổi chữ: text-decoration, text-transform. Căn chữ (trái, phải, giữa, đều 2 bên): text-align. Chiều cao dòng: line-height. Chú ý line-height là chiều cao dòng khác với font-size là cỡ chữ. Line-height thường lớn hơn font-size (có thể dùng giá trị theo tỉ lệ), chữ trên cùng 1 dòng mặc định sẽ căn giữa theo chiều dọc. Các thuộc tính liên quan đến kích thước, layoutTùy chỉnh chiều rộng, chiều cao tối thiểu, tối đa, hoặc fix cứng: min-width, max-width, min-height, max-height, width, height.Tham khảo thêm về style Height và Width trong React Native: https://reactnative.dev/docs/height-and-width. Tùy chỉnh khoảng cách: margin (khoảng cách xung quanh phần tử), padding (khoảng cách từ viền đến nội dung bên trong). Hai thuộc tính này có thể viết gộp hoặc tách ra làm 4 hướng top, right, left, bottom. Trong React Native thì còn có thể viết gộp theo chiều là horizontal và vertical. Ví dụ tùy chỉnh khoảng cách trên dưới thì dùng Tùy chỉnh bo viền: border-width, border-color, border-radius. Border cũng có thể tùy chỉnh cụ thể từng hướng hoặc từng góc. Riêng với CSS Flexbox thì trong React Native hơi khác một chút, đó là trục chính (main-axis) mặc định là theo chiều dọc vì ở mobile chúng ta dàn nội dung theo hàng dọc. Tham khảo Layout với Flexbox trong React Native: https://reactnative.dev/docs/flexbox. Về position thì trong React Native chỉ có 2 giá trị là TransformTrong CSS có thuộc tính transform dùng để biến đổi một phần tử, phóng to thu nhỏ, xoay ngang xoay dọc, ... Transform trong React Native cũng hoạt động tương tự nhưng cú pháp hơi khác vì nó là Javascript, chúng ta sẽ phải dùng mảng các object vì transform là tổng hợp của nhiều thuộc tính nhỏ. Một số ví dụ sử dụng transform:
Tham khảo thêm về Transform trong React Native: https://reactnative.dev/docs/transforms. Trong các phần trước chúng ta đã tìm hiểu cách thức cài đặt, cách tạo một chương trình và cách sử dụng Props, State trong React Native. Nếu các bạn chưa đọc thì có thể tham khảo lại các bài dưới đây:
Trong phần này, chúng ta sẽ tìm hiểu sâu hơn về cách tạo và điều chỉnh giao diện trong React Native StyleTrong React Native, bạn không sử dụng một ngôn ngữ đặc biết hoặc ngôn ngữ có cấu trúc để định nghĩa style. Bạn chỉ cần sử dụng JavaScript để định nghĩa style cho ứng dụng của bạn. Tất cả các thành phần cơ bản sẽ sử dụng là một tham số có tên là 3. Những tham số style và giá trị của chúng towngj tự với cách hoạt động của CSS trên môi trường Web, điểm khách biệt đó là tên các tham số tuân theo quy tắc Lamda (hay một số người vẫn gọi là Lạc đà), ví dụ như 4 thay vì sử dụng 5 trên CSS.Thuộc tính 3 là một thuộc tính đã có từ lâu trong đối tượng JavaScript. Đây là cách đơn giản nhất và cũng là những thứ mà chúng ta sẽ dùng trong code ví dụ. Bạn động thời cũng có thể khai báo một mảng các style, style cuối cùng được khai báo trong mảng style sẽ được ưu tiên, như vậy bạn hoàn toàn có thể sử dụng style theo hình thức kế thừa.Dường như một thành phần được tạo ra sẽ phức tạp. Vậy nên nó thường được làm rõ bằng cách sử dụng 7 để định nghĩa các style và đặt chúng tại một nơi để dễ quản lý. Dưới đây là ví dụ
và kết quả nhận được ở dưới đây Một cách thức chung đó là cho tạo các thành phần của bạn cho phép tham số 3 truy cập trong khi nó được sử dụng như một phần phần con của style. Bạn có thể sử dụng bằng cách tạo ra các style theo mô hình thác nước mà người ta vẫn hay sử dụng trong CSS.Height & WidthChiều rộng và dài của các thành phần sẽ xác định kích thước của các thành phần giao diện trên màn hình. Kích thước cố địnhCách đơn giản nhất để chỉ định kích thước của các thành phần là sử dụng các tham số kích thước cố định 9 và 0 trong style. Tất cả kích thước được sử dụng trong React Native đều tuân theo đơn vị pixel khi hiển thị lên trên màn hình.
Để cài đặt việc hiển thị có sự tương tự nhau đối với nhiều loại kích thước màn hình các bạn đọc phần tiếp theo ngay dưới đây Kích thước linh độngSử dụng 1 trong style của các thành phần để thanh đổi vùng hiển thị một cách linh động dựa trên vùng hiển thị có thể. Thông thường, bạn sẽ sử dụng 2 khi mà bạn muốn một thành phần trải rộng hết mức có thể so với các thành phần khác có chung một view cha. Đây là giá trị tỷ lệ cao nhất mà 1 cung cấp. Với các tỷ lệ khác thì nó sẽ so sánh với các thành phần ngang hàng với nó để đưa ra tỷ lệ hiển thị trong cùng một view cha.
và kết quả chúng ta thu được ở hình dưới đây Sau khi bạn đã có thể điều kiển được kích thước của các thành phần, bước tiếp theo chúng ta sẽ tìm hiểu cách làm thế nào để có thể thay đổi bố cục của các thành phần ở ngay phần dưới đây. Điều chỉnh Layout với FlexboxMột thành phần có thể chỉ định rõ bố cục cho các view con của nó bằng cách sử dụng thuật toán của 8. Flexbox được thiết kế để cung cấp giao diện tương đồng trên những màn hình có kích thước khác nhau.Bạn sẽ thường phải sử dung với các thuộc tính 9, 0, và 1 để tạo ra được một giao diện đúng ý muốn.
Flex DirectionThêm thuộc tính 9 vào 3 của một thành phần để thay đổi hướng sắp xếp các thành phần con của nó. Những thành phần con nên được sắp xếp trên cùng một hàng 4 hoặc hoặc trên cùng một cột 3? Mặc định thì các thành phần con sẽ được sắp xếp nằm trên cùng một cột 3.
Chúng ta cùng xem kết quả thu được nhé Justify ContentThêm thuộc tính 1 tới style của một thành phần sẽ phân bổ theo vị trí tương đối của chúng trong cùng một hướng sắp đặt. Vậy các thanh phần con nên được phân bổ theo hướng từ điểm bắt đầu đến kết thúc, hay nằm chính giữa, hay từ điểm kết thúc lên điểm bắt đầu, hay ngang hàng nhau? Những tùy chọn đó sẽ tương ứng với những giá trị sau đây 7, 6, 7, 8, và 9.
Kết quả thu được sẽ như hình dưới đây: Align ItemsThêm thuộc tính 0 tới style của một thành phần để thay đổi các đối tượng con theo hướng sắp đặt còn lại(ví dụ như nếu như hướng sắp xếp lúc đầu để là 4 thì hướng sắp xếp còn lại sẽ là theo 3, và ngược lại thì tương tự). Vậy những thành phần con nên được đặt theo đầu đến cuối, ở trung tâm, hay tự động co giãn để lấp đầy đối tượng cha? Những giá trị tùy chọn đó sẽ tương ứng ở đây 7, 6, 7, và 6.
Đi vào sâu hơn nữaNhư vậy chúng ta đã khái quát được những thứ cơ bản, nhưng có rất nhiều những style khác mà bạn cần biết để điều chỉnh giao diện theo ý muốn. Danh sách đầy đủ các tham số và giá trị để có thể điều khiển được giao diện bạn nên tham khảo thêm ở link này. Như vậy chúng ta cũng đã có tạm đủ kiến thức để có thể thể bắt đầu xây dựng các ứng dụng thực tế. Một điều rõ ràng chúng ta cũng biết là chúng ta vẫn còn đang bị hổng những kiến thức về điều khiển, nắm bắt các sự kiện trên màn hình khi người dùng tương tác. Ở phần tiếp theo tôi sẽ làm rõ kiến thức đó. Nguồn tham khảo: React Native - The basic |