Ở Phần 1 tìm hiểu về JqueryMobile đã dừng lại ở phần Buttons, hôm nay chúng ta sẽ tiếp tục cùng nhau tìm hiểu các thành phần còn lại của JqueryMobile
I. jQuery Mobile Icons
jQuery Mobile hỗ trợ một nhóm các icon sử dụng cho buttons, collapsibles, listview buttons và nhiều module khác. Mỗi icon sẽ được hỗ trợ 2 loại hình ảnh, một loại SVG và một loại PNG. Theo mặc định thì ban đầu nó sẽ load hình SVG trước tại vì hình SVG chạy rất mượt trên màn hình SD và HD. Riêng với những platform không hỗ trợ SVG thì nó sẽ chuyển sang load hình PNG.
jQuery Mobile cung cấp một tập hợp các biểu tượng (icon) cho các button giúp chúng trở nên đẹp và thân thiện với người dùng hơn.
Thêm icon vào button – Adding Icons to jQuery Mobile Buttons
Để thêm icon vào button thì chúng ta sử dụng class chứa tiền tố ui-icon-. Ví dụ với icon search thì class của nó sẽ là ui-icon-search; và sử dụng class chứa tiền tố ui-btn-icon- để xác định vị trí cho icon, ví dụ muốn để icon ở bên trái thì thêm class ui-btn-icon-left :
Lưu ý : Với những button khác như là button trong các list view và form thì bạn phải sử dụng thuộc tính data-icon.
Positioning Icons – Định vị icon
Như đã nói ở trên sử dụng class chứa tiền tố ui-btn-icon- để xác định vị trí cho icon, các vị trí có thể như : top, right, bottom hoặc left.
Ví dụ
Và đây là kết quả :
Lưu ý : 1 điều đặc biệt là nếu bạn không xác định vị trí icon cho button thì icon sẽ không được hiển thị.
Custom icon trong jQuery Mobile
Trường hợp danh sách các icons trên không đủ để sử dụng hoặc không giống với layout của bạn thì hãy custom nó bằng cách tạo một class mới và thiết lập background icon cho thuộc tính after.
CSS:
.ui-icon-skull:after { background-image : url("link_to_your_image") ; background-size : 18px 18px; }
HTML:
Chỉ hiển thị icons, không hiển thị text
Để hiển thị 1 mình icon thôi thì bạn bổ sung class ui-btn-icon-notext vào button (sử dụng với vai trò như 1 giá trị cho vị trí icon).
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_icon_notext
Xóa vòng tròn phía ngoài icon
Mặc định mỗi icon trong jQuery Mobile sẽ được bao phía ngoài bởi một vòng tròn màu xám (gray), và nếu bạn muốn xóa vòng tròn đó đi thì bổ sung vào class ui-nodisc-icon.
action
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_icon_disc
Chú ý rằng khi bạn sử dụng class ui-nodisc-icon trong khi đang chỉ hiển thị icon (không có text) thì màu nền xám sẽ mất đi nhưng vòng tròn bao ngoài icon vẫn hiển thị.
Black icon và white icon
Mặc định thì tất cả icon sẽ có màu trắng nhưng nếu bạn muốn đổi nó sang màu đen thì có thể sử dụng class ui-alt-icon.
action
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_icon_alt
Các icon có sẵn trong jQuery Mobile giúp chúng ta đỡ đi được một giai đoạn trong việc thiết kế giao diện của phiên bản Mobile. Tuy nhiên nó có nhược điểm là các icon sẽ không phối màu một cách linh động được nên thường thì chúng ta nên kết hợp với một thư viện chuyên về icon như Font Awesome hoặc tự tạo icons theo ý của mình.
II. Popup
Popup là một thành phần không thể thiếu trong các ứng dụng Mobile. Bạn có thể tạo nhiều loại Popup khác nhau như tooltip, image lightbox, …
Popup tương tự như dialog, đều là phần phủ (overlay) của page. Popup nên được sử dụng khi bạn muốn hiển thị đoạn text nhỏ, ảnh, bản đồ hoặc nội dung nào đó.
Tạo Popup
Lưu ý là thẻ div chứa popup và thẻ a chứa liên kết tới popup phải nằm trong cùng 1 trang.
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_basic
Để mở rộng padding và margin (kích cỡ) cho popup chỉ cần thêm class ui-content vào thẻ div chứa popup:
Closing Popups – Tắt Popup
Để tạo một button close popup thì bạn phải đặt button đó nằm bên trong thẻ div cha chứa popup và đồng thời bổ sung thuộc tính data-rel=”back”.
Positioning Popups – Định vị popup
Có 3 cách định vị cho popup:
data-position-to=”window”
popup sẽ xuất hiện ở trung tâm cửa sổ view (window)
data-position-to=”#myId”
popup sẽ phủ trên thành phần có id=”myId”
data-position-to=”origin”
Ví dụ:
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_position
data-position-to=”window”
data-position-to=”origin”
Transitions – Chuyển tiếp
Theo mặc định thì popup không có bất kỳ hiệu ứng chuyển tiếp nào. Bạn có thể sử dụng bất kỳ hiệu ứng nào sau đây chỉ cần thêm thuộc tính data-transition=”value” vào liên kết mở popup. value là 1 trong số các hiệu ứng ví dụ như “fade” :
Bạn có thể vào demo sau để quan sát và trải nghiệm với các loại hiệu ứng khác nhau : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_transitions
Popup Arrows – Dùng trong tạo Tooltip
Giá trị của thuộc tính data-arrow có thể là:
true : hiển thị dấu nhọn ở bất kì vị trí nào cho tương thích Responsive.
false : không hiển thị dấu nhọn
l, r, t, b xác định vị trí dấu nhọn (râu) gắn trên trên box popup lần lượt là left (trái), right (phải), top (đầu), hoặc bottom (đấy).
Ví dụ :
râu ở vị trí top, data-arrow=”t” :
râu ở vị trí đáy, data-arrow=”b” :
Bạn có thể vào ví dụ demo sau để thấy được vị trí râu thay đổi như thế nào : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_arrow
“” : khoảng trắng có tác dụng tương tự như false.
Popup Dialogs
Bạn có thể thêm các chi tiết chuẩn của dialog (standard dialog markup) vaò popup (header, content và footer markup):
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_dialog
Popup Photos – Tạo Photo lightbox
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_image
Chú ý : popup không phải là sự lựa chọn thông minh khi bạn muốn hiển thị nhiều ảnh (ví dụ 1 album 500 bức ảnh chẳng hạn), nó chỉ phù hợp và tốt khi bạn muốn phóng to 1 vài bức ảnh.
Popup Overlay – Lớp phủ cho popup
Bạn có thể chỉ định màu nền phía sau popup (màu nền phủ trên toàn windown phía sau popup) bằng cách thêm thuộc tính data-overlay-theme.
Theo mặc định lớp phủ này trong suốt. Khi sử dụng giá trị data-overlay-theme=”a” thì khi đó ta đang thêm 1 lớp phú sáng màu (light overlay) cho phần nền phía sau popup, ngược lại khi thêm data-overlay-theme=”b” là đang thêm lớp phủ tối màu (dark overlay):
Hình ảnh lớp phủ sáng màu:
Hình ảnh lớp phủ tối màu:
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_popup_overlay
Lớp phủ (overlay) này thường được sử dụng trong popup ảnh (photo lightbox)
Dialog
Để Dialog luôn hiển thị giữa màn hình thì ta bổ sung thuộc tính data-position-to=”window” cho button.
Để tạo hiệu ứng đẹp thì mình chọn data-transition=”pop”.
III. jQuery Mobile Toolbar
Toolbar là thanh công cụ thường được hiển thị ở đầu trang (header) và cuối trang (footer).
Thông thường trên thanh toolbar sẽ là menu hoặc các button điều hướng trang web như nút back, go home, …
Header bars
Header là phần nằm phía trên cùng của website, nó thường chứa tiêu đề của trang web hoặc các button điều hướng hoặc là menu. Ta có thể thêm các button vào Header bars tại các vị trí giữa, trái và phải đều được.
Tiêu đề thường được hiển thị trong thẻ h1, tuy nhiên bạn có thể sử dụng các thẻ từ h1 – h6 bất kì để thay thế.
Header là một thẻ div nằm bên trong thành phần Page và bắt buộc phải có thuộc tính data-role=”header”.
chú ý class ui-btn-left dùng để hiển thị bên trái và ui-btn-right dùng để hiển thị bên phải.
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_header
Footer bars
Footer là phần nằm phía dưới cùng của website và nó hoạt động linh hoạt hơn header, nghĩa là bạn có thể thêm nhiều module trên nó giúp người dùng thao tác dễ dàng hơn.
Để khai báo footer bạn phải bổ sung thuộc tính data-role=”footer” và bắt buộc nó phải nằm trong Page.
Mặc định thì các button trong footer không phải ở vị trí trung tâm (center) mà sẽ căn lề từ trái sang, để căn lề cho button sử dụng thuộc tính text-align cho style của footer:
Bạn hoàn toàn có thể thêm bất kì đối tượng nào bên trong Footer như Button, Menu, …
Như vậy thành phần cơ bản của một trang web viết bằng jQuery Mobile là header, content và footer.
Định vị Header và Footer
Bạn có thể tùy chỉnh cách hiển thị của Header và Footer thông qua hai thuộc tính data-position và data-fullscreen.
Thuộc tính data-position có các giá trị sau:
inline : đây là dạng mặc định, header và footer sẽ hiển thị dạng inline (trôi theo) so với nội dung trang.
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_toolbars_inline
fixed : header và footer sẽ đứng im khi bạn kéo (scroll) trang web.
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_toolbars_fixed
Fullscreen cũng là 1 dạng fixed như trên. header và footer sẽ đứng im khi bạn kéo (scroll) trang nhưng nó sẽ phủ lên nội dung trang (nhìn qua header và footer sẽ thấy nội dung page hiện mờ ở dưới)
Để làm được điều này chúng ta sử dụng thuộc tính data-position=”fixed” và thêm thuộc tính data-fullscreen vào thẻ chứa header và footer:
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_toolbars_fullscreen
Với fixed và fullscreen khi chạm vào màn hình sẽ ẩn và hiện header và footer
IV. jQuery Mobile Navigation Bars
Navigations Bar là phần nằm phía dưới header dùng để hiển thị các button kèm các icon và bạn có thể thêm tối đa là 5 buttons cho một Nav Bar.
Navigations Bar trong jQuery Mobile
Trong một layout bạn có thể thêm nhiều thanh Nav bar bằng cách khai báo chúng liền kề nhau và cái nào khai báo trước thì hiển thị trước. Bạn có thể đặt thanh Nav Bar tại bất kì vị trí nào bạn muốn.
Để khai báo một Nav Bar thì bạn chỉ cần bổ sung thuộc tính data-role=”navbar” vào thẻ div bất kì, sau đó khai báo một thẻ ul với tối đa là 5 thẻ li.
Ví dụ:
Demo : http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_navbars
Chú ý:
Theo mặc định, link bên trong 1 Nav Bar sẽ tự động trả về 1 button (không cần sử dụng class=”ui-btn” hoặc data-role=”button”, giống như các thẻ a trong thẻ ul trong ví dụ trên)
Theo mặc định tổng độ rộng của các button trong Nav Bar sẽ bằng 100% độ rộng content và độ rộng của từng button sẽ bằng nhau. ví dụ Nav Bar chỉ có 1 button thì button đó sẽ rộng bằng 100% content, 2 button thì mỗi 1 button sẽ bằng 50% độ rộng của content, 3 button thì mỗi button sẽ chiếm 100/3(~33.33%)…Nếu có hơn 5 button trong Nav Bar thì từ button thứ 6 nó sẽ tự động nhảy xuống dòng tiếp theo.
Icons trong Navigation Buttons
Để thêm icon vào trong Nav button thì chúng ta sử dụng thuộc tính data-icon cho button :
Thuộc tính data-icon sử dụng các giá trị giống với các class CSS nói đến trong chương Icon chỉ khác nhau ở chỗ thay vì sử dụng class ui-icon-value thì ở đây chúng ta sử dụng thuộc tính data-icon=”value”.