Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

Đã đăng vào thg 4 22, 2016 12:29 SA 3 phút đọc 3 phút đọc

Từ khi có nhiều thiết bị thông minh ra đời như điện thoại, tablet hỗ trợ người dùng xem các trang web trực tiếp trên các trình duyệt được tích hợp, các front end developer lại phải đối mặt với những vấn đề về layout cho web, làm sao web có thể hiển thị tốt cả trên browser của desktop và mobile? Hôm nay mình xin chia sẻ một số vấn đề liên quan đến responsive design cho web

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

1. Ý tưởng tạo layout responsive

Ngày xưa, để tạo web tương thích với mobile và desktop các developer sử dụng browser’s user-agent để kiểm tra loại device. Sau khi kiểm tra xong thì sẽ chuyển người dùng về các subsites cho desktop hoặc mobile. Với cách làm này thì developer sẽ tốn nhiều effort.

Khi CSS3 phát triển mạnh, việc làm responsive đơn giản hơn. Việc canh chỉnh layout có thể được hỗ trợ hoàn toàn bởi CSS. Và nổi bật là sự ra đời của framework hỗ trợ responsive như Bootstrap. Lúc này các developer đã có một công cụ mạnh mẽ, có thể làm các layout đẹp, nhanh và tương thích với nhiều độ phân giải khác nhau của nhiều loại device.

2. Giới thiệu về bootstrap và sử dụng bootstrap trong rails project.

Bootstrap hỗ trợ responsive thông qua grid system. Có thể hiểu đơn giản là grid system sử dụng các row và column, số column có thể tăng đến 12 tuỳ theo device hoặc viewport site.

Để sử dụng bootstrap trong rails chúng ta có thể download source bootstrap và add vào project, hoặc sử dụng thông qua các gem, mình thường sử dụng gem bootstrap-sass https://github.com/twbs/bootstrap-sass

3. Một số lưu ý khi apply responsive design cho web.

Khi làm responsive design, mặc định bootstrap đã hỗ trợ rất nhiều, nhưng đôi khi có nhiều chổ chúng ta cần phải custom. Ví dụ như trên mobile chúng ta cần giảm đi các element phức tạp hoặc thay đổi bố cục để dễ nhìn hơn, lúc này chúng ta có thể làm được thông qua media-query. Media query nên được đặt ở cuối trong file css chính của project. Các bạn có thể thay đổi min-width theo device bạn muốn hỗ trợ và tuỳ chỉnh CSS ứng với loại device đó mà không sợ ảnh hưởng đến sự hiển thị của web trên các device có kích thước ngoài định nghĩa.

/* Extra small devices (phones, less than 768px) */

/* No media query since this is the default in Bootstrap */

/* Small devices (tablets, 768px and up) */

@media (min-width: @screen-sm-min) { ... }

/* Medium devices (desktops, 992px and up) */

@media (min-width: @screen-md-min) { ... }

/* Large devices (large desktops, 1200px and up) */

@media (min-width: @screen-lg-min) { ... }

Một điểm lưu ý nhỏ nhưng quan trọng nữa đó là làm sao để giữ các font chữ không bị thay đổi kích thước khi responsive? Vấn đề này mình đã từng gặp và solution là thêm vào head của web meta viewport với content là initial-scale=1.

Thank for reading

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

All rights reserved

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

**Đến đây coi như đã code xong cho Top nav rồi. Giờ làm tiếp cái Header.

5. Viết code cho Header

Những website không hỗ trợ responsive và chỉ thiết kế duy nhất cho một thiết bị hay một cỡ màn hình (ví dụ: website được thiết kế cho máy tính có cỡ màn hình 1024x768), thì khi người dùng xem trang website này trên các thiết bị khác, có cỡ màn hình khác nhau, nếu nhỏ hơn thì giao diện đó cũng bị thu bé lại, thành ra tất cả đều bé, chữ cũng bé tí rất khó xem, phóng to lên để xem rõ thì khó thao tác, rất khó chịu, v.v..

Giải pháp nào cho thiết kế website responsive tốt nhất?

Có rất nhiều cách để bạn thiết kế một giao diện website responsive. Nhưng với mình, hiện Bootstrap là một thư viện hỗ trợ tốt nhất cho việc design một website đáp ứng tốt mọi loại màn hình. Bootstrap hỗ trợ gần như mọi thứ và làm tất cả cho bạn rồi, bạn chỉ việc dùng và áp dụng sao cho phù hợp với thiết kế của mình mà thôi.

Vậy Bootstrap là gì?

Bootstrap là một framework CSS được Twitter phát triển. Bootstrap nói chung là một thư viện viết sẵn các CSS, giúp rút ngắn thời gian thao tác của người thiết kế. Bootstrap hỗ trợ rất nhiều, nhưng trong bài này sẽ nói đến Bootstrap Grid, vì ta sẽ dùng nó để thiết kế nên một website responsive.

Hiểu nhanh về Bootstrap Grid (Lưới Bootstrap)?

1. Trong Bootstrap Grid, mỗi một dòng (row) sẽ có 12 cột (column). Trong Bootstrap Grid, mỗi một dòng (row) sẽ có 12 cột (column).

Ví dụ:

Một dòng có 12 cột:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Code tương ứng sẽ là:

.col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1 .col-md-1
.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

.col-md-1

- Nếu muốn một dòng 2 cột như hình dưới này thì sao?

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Thì code sẽ là:

.col-md-8 .col-md-4
.col-md-8

.col-md-4


Qua ví dụ trên bạn đã hiểu cách tạo một hoặc nhiều cột trong một dòng rồi. Vậy nó có tác dụng gì? - Các cột đó của Bootstrap sẽ tự động xuống hàng nếu chiều rộng (ngang) của một thiết bị không chứa đủ. Vậy nó có tác dụng gì?
- Các cột đó của Bootstrap sẽ tự động xuống hàng nếu chiều rộng (ngang) của một thiết bị không chứa đủ.

Ví dụ:

Như ví dụ trên ta đã tạo một dòng 2 cột, một cột 8 và cột 4.

- Giờ ví dụ 1 cột của Bootstrap có độ rộng là 70px => cột 8 sẽ là (8x70) 560px và cột 4 sẽ là (4x70) 280px => tổng cộng độ rộng của dòng sẽ là: 560 + 280 = 840px.

- Tiếp theo, nếu bạn xem dòng này trên máy tính có màn hình từ 840px trở lên sẽ thấy 2 cột nằm chung 1 dòng, nhưng nếu xem trên điện thoại với màn hình 400px chẳng hạn, thì cột thứ 2 sẽ tự động xuống dòng, cả 2 cột sẽ tự động co lại vừa bằng 400px.

(Xem trên máy tính)

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

(Xem trên di động)

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

Ok, đến đây bạn đã hiểu cách hoạt động các cột này của Bootstrap Grid rồi chứ? Ta chính là áp dụng cái này vào thiết kế website responsive, bạn cứ tạm hiểu đến đây, bạn sẽ hiểu rõ hơn nữa qua ví dụ cụ thể mình sẽ hướng dẫn bên dưới sau.

2. Các tùy chọn của lưới Bootstrap: Tùy theo thiết bị mà độ rộng của các cột cũng khác nhau. Lưới Bootstrap hiện hỗ trợ cho 4 kiểu màn hình như sau: Các tùy chọn của lưới Bootstrap: Tùy theo thiết bị mà độ rộng của các cột cũng khác nhau. Lưới Bootstrap hiện hỗ trợ cho 4 kiểu màn hình như sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

[1] : 4 loại màn hình như hình. [2] : Độ rộng của một dòng. [3] : Class cho từng màn hình. [4] : Độ rộng trung bình 1 cột (Lấy cái số [2] chia cho 12 cột là ra nó). [5] : Khoảng cách biên của phần tử có trong một cột, trái 15px + phải 15px => tổng cộng 30px. Ví dụ: Trong cột có chứa một đoạn văn bản, thì đoạn văn bản này sẽ có biên phải cách cột là 15px và biên trái cũng thế.
[2] : Độ rộng của một dòng.
[3] : Class cho từng màn hình.
[4] : Độ rộng trung bình 1 cột (Lấy cái số [2] chia cho 12 cột là ra nó).
[5] : Khoảng cách biên của phần tử có trong một cột, trái 15px + phải 15px => tổng cộng 30px. Ví dụ: Trong cột có chứa một đoạn văn bản, thì đoạn văn bản này sẽ có biên phải cách cột là 15px và biên trái cũng thế.

Ví dụ:

Như ví dụ trên ta đã tạo một dòng 2 cột, một cột 8 và cột 4.

- Giờ ví dụ 1 cột của Bootstrap có độ rộng là 70px => cột 8 sẽ là (8x70) 560px và cột 4 sẽ là (4x70) 280px => tổng cộng độ rộng của dòng sẽ là: 560 + 280 = 840px.

- Tiếp theo, nếu bạn xem dòng này trên máy tính có màn hình từ 840px trở lên sẽ thấy 2 cột nằm chung 1 dòng, nhưng nếu xem trên điện thoại với màn hình 400px chẳng hạn, thì cột thứ 2 sẽ tự động xuống dòng, cả 2 cột sẽ tự động co lại vừa bằng 400px.
.col-md-4

.col-md-4

.col-md-4


(Xem trên máy tính)

(Xem trên di động)

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

Ok, đến đây bạn đã hiểu cách hoạt động các cột này của Bootstrap Grid rồi chứ? Ta chính là áp dụng cái này vào thiết kế website responsive, bạn cứ tạm hiểu đến đây, bạn sẽ hiểu rõ hơn nữa qua ví dụ cụ thể mình sẽ hướng dẫn bên dưới sau.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

2. Các tùy chọn của lưới Bootstrap: Tùy theo thiết bị mà độ rộng của các cột cũng khác nhau. Lưới Bootstrap hiện hỗ trợ cho 4 kiểu màn hình như sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

[1] : 4 loại màn hình như hình. [2] : Độ rộng của một dòng. [3] : Class cho từng màn hình. [4] : Độ rộng trung bình 1 cột (Lấy cái số [2] chia cho 12 cột là ra nó). [5] : Khoảng cách biên của phần tử có trong một cột, trái 15px + phải 15px => tổng cộng 30px. Ví dụ: Trong cột có chứa một đoạn văn bản, thì đoạn văn bản này sẽ có biên phải cách cột là 15px và biên trái cũng thế.nguyên tắc hoạt động của lưới Bootstrap đến đâu rồi? Dĩ nhiên vẫn còn vài kiến thức mình muốn phổ biến nữa, như kết hợp cách dùng Media query. Nhưng mình cũng không biết diễn tả sao mà vừa ngắn gọn vừa dễ hiểu nhất có thể. Nên hãy cùng làm qua bài ví dụ cụ thể sau đây :)

Xem ví dụ sẽ hình dung ra được cái bảng ở trên nói gì :D

- Ta có code như sau:

.col-md-4 .col-md-4 .col-md-4

- Xem cái bảng trên, nhìn số [3], sẽ thấy class col-md- hỗ trợ cho màn hình từ 992px trở lên, có chiều rộng là 970px. Nên nếu ta xem trên màn hình từ 992px trở lên sẽ thấy được 3 cột, còn dưới 992px các cột thứ 2, thứ 3 sẽ tự động bị đẩy xuống.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

(Xem trên máy có màn hình 992px)

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

(Xem trên máy có màn hình lớn hơn 992px nhiều nên dư biên 2 bên)

(Xem trên máy có màn hình nhỏ hơn 992px)

3. Thư viện cần có của Bootstrap

Để có thể chạy được code hỗ trợ website responsive, bạn cần khai báo đầy đủ các thư viện của Bootstrap.

Download ▼

- Sau khi tải về, giải nén, bạn sẽ được folder "website-responsive-with-bootstrap" có chứa các thư viện sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Click phải vào file "index" > Edit with.. để xem code và viết code. Bạn có thể mở bằng Notepad mặc định của Win cũng được, nhưng khuyên nên mở với Notepad++, hoặc các phần mềm hỗ trợ viết code để dễ thao tác.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Nếu chưa có phần mềm Notepad++, bạn tải về ở link dưới.

Download ▼

- Sau khi tải về, giải nén, bạn sẽ được folder "website-responsive-with-bootstrap" có chứa các thư viện sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Click phải vào file "index" > Edit with.. để xem code và viết code. Bạn có thể mở bằng Notepad mặc định của Win cũng được, nhưng khuyên nên mở với Notepad++, hoặc các phần mềm hỗ trợ viết code để dễ thao tác.
[2] : 3 thư viện cần có của Bootstrap: bootstrap.min.css // bootstrap.min.js // jquery-3.2.0.min.js
[3] : Tất cả code của Bootstrap đều phải được đặt trong thẻ:

.

- Nếu chưa có phần mềm Notepad++, bạn tải về ở link dưới.

- Sau khi mở file index, có code như hình dưới:

[1] : Thay tên thành tên blog của bạn. [2] : 3 thư viện cần có của Bootstrap: bootstrap.min.css // bootstrap.min.js // jquery-3.2.0.min.js [3] : Tất cả code của Bootstrap đều phải được đặt trong thẻ: .

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Bây giờ hãy nhấp đôi chuột vào file index để xem thử trang nào, bạn sẽ thấy trang trống trơn. Đương nhiên rồi, vì ta chưa viết code gì lên đó mà. Ok, chuẩn bị xong hết rồi, bắt đầu viết code.

4. Viết code cho Top nav

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Mình dự định chia Top nav thành 2 cột với tỷ lệ 8-4, một cột chứa link giới thiệu, thông tin về website và một cột chứa hộp tìm kiếm. Vì mình sẽ viết code cho thiết bị có màn hình lớn nhất trước (từ 1200px trở lên), nên sẽ sử dụng class col-lg-. Code như sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Nhấn vào nút "Copy code" để lấy code và dán vào file index của bạn.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Lúc này, thử F5 trang index, vẫn thấy trang trống trơn, vì mình mới chia cột thôi, chưa viết gì lên đó. Bây giờ sẽ tiến hành thêm link và hộp tìm kiếm vào Top nav, code như sau:

- Bây giờ, hãy F5 trang index, để xem kết quả:

- Nhìn còn xấu, định dạng CSS cho Top nav đẹp hơn xí. Code như sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

Lưu ý:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

Tất cả các code CSS chèn trực tiếp vào trang, đều phải được đặt trong thẻ .... và đặt trên thẻ như hình trên.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Sau khi thêm CSS, F5 lại trang index, có kết quả như sau:

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Cũng tạm ổn. Bây giờ thử test trên nhiều thiết bị xem sao, bằng cách: Click chuột phải vào trang > Chọn Inspect.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Nhấp chuột vào biểu tượng như hình để xem trên chế độ responsive.

- Nhấp chuột vào menu Responsive và chọn Responsive như hình để test thử ở nhiều thiết bị. Bạn sẽ thấy cỡ màn hình từ 1200px trở lên mới hiện 2 cột một dòng, còn lại các thiết bị có cỡ màn hình nhỏ hơn 1200px đều bị đẩy cột xuống thành 2 dòng.

- Vậy giờ bạn muốn vẫn hiển thị 2 cột một dòng trên thiết bị có màn hình từ 992px trở lên thì sao? Thì ta thêm code như sau:

- Thêm class col-md-8 và col-md-4 vào vị trí như hình, lý do là vì class col-md- hỗ trợ cho màn hình từ 992px trở lên. Bây giờ bạn F5 trang index và xem thử với màn hình từ 992px trở lên, sẽ thấy hiện 2 cột một dòng.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

**Đến đây coi như đã code xong cho Top nav rồi. Giờ làm tiếp cái Header.

5. Viết code cho Header

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Như bản vẽ phát thảo, header mình dự định chia làm 2 cột, một cột tiêu đề blog và một cột trống sẽ dùng để chèn quảng cáo. Mình sẽ chia theo tỷ lệ 3-9. Code như sau:

- Chèn code trên vào bên dưới code của Top nav (như hình).

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Tiếp theo, viết code CSS cho header. Code như sau:

-Tương tự cũng chèn code CSS của header sau code CSS của Top nav (như hình).

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Nhấn F5 trang index để xem kết quả.

- Cũng như Top nav, Header cũng sẽ hiện 2 cột một dòng với thiết bị từ 992px trở lên.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

- Bây giờ mình muốn không hiện cột quảng cáo ở thiết bị có cỡ màn hình dưới 992px thì sao? Tức là khi xem website trên thiết bị có màn hình nhỏ hơn 992px, cột chứa quảng cáo sẽ bị ẩn đi. Thì mình sẽ code như sau:

- Chèn code CSS @media vào dưới code CSS của header (như hình).

- F5 trang index và xem thử trên thiết bị di động › cột quảng cáo đã bị ẩn đi khi xem trên thiết bị dưới 992px rồi.

Hướng dẫn responsive bootstrap 5 - bootstrap đáp ứng 5

**Như vậy, ta đã code xong cho Header. Tiếp tục đến viết code cho Mid nav.

- Lúc này, thử F5 trang index, vẫn thấy trang trống trơn, vì mình mới chia cột thôi, chưa viết gì lên đó. Bây giờ sẽ tiến hành thêm link và hộp tìm kiếm vào Top nav, code như sau:

- Bây giờ, hãy F5 trang index, để xem kết quả:/ đóng thẻ