Advertisement
  1. Web Design
  2. Foundation for Apps

Xây dựng Thanh điều hướng Top Bar Off-Canvas bằng Foundation 5

Scroll to top
Read Time: 14 min

() translation by (you can also view the original English article)



Trong một bài hướng dẫn trước đây, chúng ta đã học How to Customize the Foundation 4 Top Bar (tuỳ biến top bar của Foundation 4) bằng CSS. Kể từ đó ZURB đã phát hành Foundation 5; nhanh hơn, tinh gọn hơn và mạnh hơn người tiền nhiệm của nó. Điều đáng chú ý là ZURB đã mang trở lại tính năng Off Canvas, có thể được tìm thấy trong Foundation 3.

Hôm nay, chúng ta sẽ kết hợp tính năng off-canvas với thanh điều hướng top bar của chúng tôi. Kết quả sẽ cho một thanh điều hướng tùy chỉnh đẹp cho người dùng máy tính để bàn và menu off-canvas mượt mà cho người dùng máy tính bảng và thiết bị di động.

Lưu ý: Chức năng mà chúng tôi sử dụng ở đây không hiệu quả đối với IE8 trở xuống. Tôi đã bao gồm một bản sửa lỗi cho IE9 trong các tài nguyên được liệt kê ở cuối hướng dẫn.

Những yêu cầu

Để thực hiện theo hướng dẫn này, bạn sẽ cần có kinh nghiệm cấp trung sau đây:

  • Hiểu biết cơ bản về Foundation và hệ thống Grid
  • Kiến thức về làm việc SaaS và Compass Foundation

Bắt đầu

Thiết lập môi trường

Nếu bạn chưa thực hiện, hãy thiết lập Compass và Sass bằng tài liệu Foundation Sass nếu bạn cần hướng dẫn. Nếu bạn đã làm thực hiện rồi, thì đây là thiết lập nhanh để tạo một dự án Foundation 5 mới bằng cách sử dụng Command Prompt:

Ruby Command Prompt

Chuyển đến thư mục ưa thích của bạn

cd c:/user/your-working-environment

Sử dụng lệnh này để tạo dự án của bạn

foundation new your-project

Di chuyển đến file dự án mới được tạo của bạn

cd your-project

Và sử dụng lệnh này để xem và biên dịch các file Sass của bạn.

compass watch

Nếu mọi thứ thành công, thư mục của bạn sẽ trông giống như sau:

Thư mục dự án Foundation 5

Việc duy nhất còn lại là tạo style.scss của chúng ta. Thực hiện việc này bằng cách tạo một file mới trong thư mục scss và đặt tên là style.scss. Chúng ta sẽ cần file này sau đó. Nếu Compass đang chạy, thì style.scss của bạn đã được biên dịch thành tệp style.css trong thư mục stylesheets của bạn. Tuyệt, chúng tôi đã thiết lập mọi thứ, hãy bắt đầu code cấu trúc HTML tổng quát của chúng ta.

Thiết lập cấu trúc HTML

Bước 1: Markup tổng quát

Mở index.html của bạn và xóa tất cả nội dung giữa các thẻ body, ngoại trừ các đoạn mã (script) ngay trước </body> . Chúng ta cần chúng cho tất cả các chức năng của Foundation hoạt động. Thứ hai, hãy tiếp tục và thêm dòng code sau vào <head> , để đảm bảo rằng đã load về file CSS của chúng ta.

1
<link rel="stylesheet" href="stylesheets/style.css" />

Với thiết lập đó, hãy bổ sung một vài mục và cho trang của chúng tôi với một số nội dung giả. Chúng ta sẽ bắt đầu với một số việc cơ bản, bằng cách thêm header (tiêu đề), main (nội dung chính), service (dịch vụ), call to action (lời kêu gọi hành động), footer (chân trang) và copyright (bản quyền).

1
<!-- HEADER SECTION -->
2
 <header>
3
   <div class="row">
4
 	    <div class="small-12 medium-12 large-12 columns">
5
 			<div class="logo">
6
 				<h1>Foundation 5 Topbar / Offcanvas menu</h1>
7
 			</div> <!-- END DIV.LOGO -->
8
 		</div> <!-- END 12 COLUMNS -->
9
 	</div> <!-- END ROW -->
10
 </header> <!-- END HEADER -->
11
 
12
 <!-- MAIN SECTION -->
13
 <section class="main-section">
14
 	<!-- CONTENT SECTION -->
15
 	<section class="full-width content-section">
16
 		<div class="row">
17
 			<div class="small-12 medium-12 large-12 columns">
18
 				<h2>Moving aside for the Offcanvas people!</h2>
19
 				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vitae, minus molestias dolores blanditiis esse? Quam, accusamus, quo, eum, ipsum voluptatibus aliquam perspiciatis qui porro est sit eligendi suscipit. Expedita, eligendi, laboriosam animi itaque accusantium repudiandae dicta ullam quia ipsum amet quam nesciunt non! Porro, fuga molestiae quaerat accusantium nesciunt omnis.</p>
20
 				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Vero, minima, quidem repellendus facilis dignissimos laboriosam doloribus sequi tempora iusto facere maxime quasi est ex qui commodi nobis aliquid id eius magnam consectetur. Ut deserunt repellat asperiores dolores odio! Incidunt, esse, distinctio modi ratione facilis iusto tempora saepe nisi nostrum culpa velit eaque quos dolore repellat facere accusamus architecto iure similique numquam autem asperiores error cumque eum. Dolor, minima aspernatur autem eaque ipsa officiis rem! Suscipit, esse, quos. Quos, perferendis, iure nobis modi perspiciatis enim error nulla asperiores dignissimos harum. Dolor, non rem in nobis illum id hic laboriosam blanditiis aliquid!</p>
21
 			</div> <!-- END 12 COLUMNS -->
22
 		</div> <!-- END ROW -->
23
 	</section> <!-- END SECTION.CONTENT-SECTION -->
24
 
25
 	<!-- SERVICES SECTION -->
26
 	<section class="full-width services-section">
27
 		<div class="row">
28
 			<div class="small-12 medium-4 large-4 columns">
29
 				<h3>Service #1</h3>
30
 				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
31
 			</div>
32
 
33
 			<div class="small-12 medium-4 large-4 columns">
34
 				<h3>Service #3</h3>
35
 				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aliquam, nihil nemo tempore voluptatum veritatis corrupti id doloremque. Saepe, in sequi voluptatem impedit rem omnis aliquam?</p>
36
 			</div>
37
 
38
 			<div class="small-12 medium-4 large-4 columns">
39
 				<h3>Service #3</h3>
40
 				<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptate ducimus aut commodi eius! Sequi, magni labore ea iusto quibusdam autem repellendus ipsum dolorem quasi maxime!</p>
41
 			</div>
42
 
43
 		</div> <!-- END ROW -->
44
 	</section> <!-- END SECTION.FULL-WIDTH.SERVICES-SECTION -->
45
 
46
 	<!-- CALL 2 ACTION -->
47
 	<section class="full-width call-to-action">
48
 		<div class="row">
49
 			<div class="small-12 medium-12 large-12 columns">
50
 				<a href="#" class="button radius">Get in touch with us!</a>
51
 			</div>
52
 		</div>
53
 	</section>
54
 </section> <!-- END SECTION.MAIN-SECTION -->
55
 
56
 <!-- FOOTER SECTION -->
57
 <footer>
58
 	<div class="row">
59
     	<div class="small-12 medium-4 large-4 columns">
60
 		    <h4>Foundation</h4>
61
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
62
 		</div>
63
 
64
 		<div class="small-12 medium-4 large-4 columns">
65
 			<h4>Foundation</h4>
66
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
67
 		</div>
68
 
69
 		<div class="small-12 medium-4 large-4 columns">
70
 			<h4>Foundation</h4>
71
 			<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Natus, veniam, asperiores fugit quas quaerat soluta in quibusdam placeat incidunt suscipit esse neque quisquam eaque rem!</p>
72
 		</div>
73
 	</div> <!-- END ROW -->
74
 </footer> <!-- END FOOTER -->
75
 
76
 <!-- COPYRIGHT SECTION -->
77
 <section class="full-width copyright-section">
78
 	<div class="row">
79
 	    <div class="small-12 columns">
80
 			<p>&copy; 2014</p>
81
 		</div> <!-- END 12 COLUMNS -->
82
 	</div> <!-- END ROW -->
83
 </section> <!-- END SECTION.FULL-WIDTH COPYRIGHT-SECTION -->

Ở đây chúng tôi đã thêm vào một logo ở phần header, sau đó phần main được chia thành content (nội dung), ba phần service (dịch vụ) và call to action (kêu gọi hành động). Cuối cùng có phần footer (chân trang) với ba cột và phần copyright (bản quyền). Tiếp tục với phần markup, hãy đến top bar (thanh trên cùng)!

Bước 2: Markup cho top bar

Chúng ta sẽ đưa Top Bar của chúng ta vào trong một phần với tên class là navigation-section để tạo style. Chúng ta cũng sẽ cho phần này thêm một class khác: show-for-large-up. Điều này đảm bảo rằng Top Bar chỉ được hiển thị cho các thiết bị có chiều rộng tối thiểu nhất định và cao hơn. Đây là một trong nhiều Visibility Class mà Foundation cung cấp cho chúng tôi (bạn có thể đọc thêm về các tài liệu này trong tài liệu Foundation Component). Giờ là phần markup:

1
<!-- LARGE SCREEN TOP BAR MENU -->
2
 <section class="navigation-section show-for-large-up">
3
 	<div class="row">
4
 		<div class="large-12 columns">
5
 			
6
             <!-- TOP BAR INITIALIZATION -->
7
 			<nav class="top-bar" data-topbar>
8
 				<ul class="title-area">
9
 					<li class="name">
10
 						<h1></h1>
11
 					</li>
12
 				</ul> <!-- END UL.TITLE-AREA -->
13
 
14
 				<!-- TOP BAR MENU ELEMENTS -->
15
 				<section class="top-bar-section">
16
 					<ul class="left">
17
 						<li class="active"><a href="index.html">Home</a></li>
18
 						<li class="has-dropdown">
19
 							<a href="blog.html">Blog</a>
20
 							<ul class="dropdown">
21
 								<li><a href="blog.html">Archive</a></li>
22
 								<li><a href="post.html">Single</a></li>
23
 							</ul>
24
 						</li>
25
 						<li class="has-dropdown">
26
 							<a href="page.html">Page</a>
27
 							<ul class="dropdown">
28
 								<li><a href="page.html">Full-wdith</a></li>
29
 								<li><a href="sidebar-left.html">Left Sidebar</a></li>
30
 								<li><a href="sidebar-right.html">Right Sidebar</a></li>
31
 							</ul>
32
 						</li>
33
 						<li><a href="portfolio.html">Portfolio</a></li>
34
 						<li class="has-dropdown">
35
 							<a href="#">Dropdown</a>
36
 							<ul class="dropdown">
37
 								<li><a href="#">First link in dropdown</a></li>
38
 								<li><a href="#">Second link in dropdown</a></li>
39
 								<li><a href="#">Third link in dropdown</a></li>
40
 							</ul>
41
 						</li>
42
 					</ul>
43
 				</section> <!-- END SECTION.TOP-BAR-SECTION -->
44
 			</nav> <!-- END NAV.TOP-BAR -->
45
 
46
 		</div> <!-- END 12 COLUMNS -->
47
 	</div> <!-- END ROW -->
48
 </section> <!-- END SECTION.NAVIGATION-SECTION -->

Lưu ý: Nhớ kèm theo data-topbar trong nav của bạn. Bằng cách này, chúng tôi đảm bảo JavaScript của Top Bar hoạt động chính xác (ví dụ như menu dropdown).

Bước 3: Markup cho Off-Canvas

Menu Off-Canvas của chúng tôi sẽ bị ẩn ngoài ranh giới của viewport. Thời điểm chúng ta nhấn menu, Offcanvas sẽ trượt vào (từ bên trái trong trường hợp của chúng ta) và di chuyển nội dung của trang sang bên phải. Trong thiết lập của chúng ta, phần header và footer sẽ bị loại trừ. Chỉ có khu vực content (nội dung chính) sẽ được di chuyển sang một bên, phần header và footer được giữ lại.

Ngoài ra, khi cuộn xuống, header của chúng tôi (có thể chứa logo và nội dung khác) sẽ xuất hiện cố định ở đầu trang (Lưu ý: Trang phải chứa đủ nội dung để làm việc này, vì nếu không phần footer cũng sẽ trôi nổi trên menu Offcanvas của chúng tôi). Điều này có nghĩa là chúng ta phải "bao bọc" Off-canvas xung quanh phần nội dung chính. Sau phần điều hướng Top Bar và trước phần content (nội dung chính) của chúng ta, đưa vào HTML sau:

1
<!-- OFF CANVAS SECTIONS WRAPPING THE MAIN CONTENT -->
2
 <div class="off-canvas-wrap">
3
     <div class="inner-wrap">
4
 
5
 		<!-- OFF CANVAS MENU BAR -->
6
 		<nav class="tab-bar hide-for-large-up">
7
 
8
 			<section class="left-small">
9
 				<a class="left-off-canvas-toggle menu-icon" ><span></span></a>
10
 			</section>
11
 
12
 			<section class="right tab-bar-section">
13
 				<h1 class="title">Menu</h1>
14
 			</section>
15
 
16
 		</nav> <!-- END NAV.TAB-BAR HIDE-FOR-LARGE-UP -->
17
 
18
 		<!-- OFF CANVAS MENU -->
19
 		<aside class="left-off-canvas-menu">
20
 			<ul class="off-canvas-list">
21
 				<li><label>Navigation</label></li>
22
 				<li><a href="index.html">Home</a></li>
23
 			</ul>
24
 			<ul class="off-canvas-list">
25
 				<li class="has-dropdown"><a href="blog.html">Blog</a>
26
 					<ul class="off-canvas-list">
27
 						<li><a href="blog.html">Archive</a></li>
28
 						<li><a href="post.html">Single</a></li>
29
 					</ul>
30
 				</li>
31
 			</ul>
32
 			<ul class="off-canvas-list">
33
 				<li class="has-dropdown"><a href="page.html">Page</a>
34
 					<ul class="off-canvas-list">
35
 						<li><a href="page.html">Full-width</a></li>
36
 						<li><a href="sidebar-left.html">Left Sidebar</a></li>
37
 						<li><a href="sidebar-right.html">Right Sidebar</a></li>
38
 					</ul>
39
 				</li>
40
 			</ul>
41
 			<ul class="off-canvas-list">
42
 				<li><a href="portfolio.html">Portfolio</a></li>
43
 			</ul>
44
 		</aside>

Hãy chia nhỏ nó ra. Chúng tôi đã tạo hai phần tử div; một với class off-canvas-wrap và một với class inner-wrap. Off-canvas-wrap sẽ ẩn nội dung của chúng ta cho đến khi nút menu được nhấn. Phần wrap (bao bọc) bên trong chứa nav menu bar (thanh menu điều hướng), menu off-canvas ở bên trái và main content (nội dung chính) của chúng tôi. Chúng tôi đã cung cấp cho nav một class hide-for-large-up, để đảm bảo nó chỉ hiển thị cho các thiết bị vừa và nhỏ. Bằng cách bổ sung thêm class left-off-canvas-menu bên cạnh, để đảm bảo rằng menu off-canvas của chúng ta xuất hiện ở bên trái màn hình. Các mục menu trong off-canvas-menu của chúng ta tương tự như top bar. Đối với off-canvas, chúng tôi sử dụng một unordered list (danh sách không có thứ tự) với class off-canvas-list thực hiện điều kỳ diệu này.

Tất cả những gì còn lại cần làm là cung cấp cho người dùng một phương pháp để tắt menu Offcanvas. Sau đó chúng ta tắt các thẻ div off-canvas-wrap và inner-wrap. Bổ sung nó ngay sau khi đóng phần main section (nội dung chính).

1
    <!-- CLOSE THE OFF-CANVAS MENU -->
2
     <a class="exit-off-canvas"></a>
3
 
4
 	</div>
5
 </div> <!-- END OFF CANVAS -->

Bước 4: Kết quả hiện giờ

Hãy mở trình duyệt của chúng tôi và định vị file index.html mà chúng ta vừa chỉnh sửa. Kết quả sẽ trông giống như những ảnh chụp màn hình bên dưới (hãy thử thay đổi kích thước trình duyệt của bạn!)

HTML Top Bar
HTML Offcanvas

Cài đặt Sass

Được rồi, chúng tôi có một top bar đầy đủ chức năng cho người dùng máy tính để bàn và menu off-canvas đẹp, mượt mà cho người dùng thiết bị nhỏ hơn như máy tính bảng và điện thoại. Tuy nhiên, trang của chúng ta trông không giống như một website thực sự, vì vậy hãy tiếp tục và tô điểm thêm một ít.

Bước 1: Tạo style tổng quát

Đầu tiên, chúng tôi sẽ cung cấp cho các phần chung của chúng tôi (header, navigation, main, footer và copyright) một số màu sắc. Chúng ta cũng sẽ cho phần body một màu nền tinh tế và tạo một class full-width để có nó chiều rộng đạt 100%. Trong HTML, chúng tôi đã thêm class full-width vào các phần khác nhau, để đảm bảo chúng trải dài đến các cạnh biên của trình duyệt. Hãy xem Sass sau đây:

1
body {
2
     background-color: #f1f1f1;
3
 }
4
 
5
 .full-wdith {
6
 	min-width: 100%;
7
 }
8
 
9
 header {
10
 	background: url('../images/stary-bg.png') #074e68;
11
 	min-height: 175px;
12
 	h1 {
13
 		color: #fff;
14
 		padding-top: 50px;
15
 	}
16
 }
17
 
18
 .navigation-section {
19
 	background-color: #333;
20
 	.top-bar {
21
 		li {
22
 			text-transform: uppercase;
23
 		}
24
 	}
25
 }
26
 
27
 .main-section {
28
 	padding: 30px 0 25px 0;
29
 }
30
 
31
 footer {
32
 	background-color: #074e68;
33
 	padding: 50px 0 40px 0;
34
 	h4, p {
35
 		color: #fff;
36
 	}
37
 }
38
 
39
 .copyright-section {
40
 	background-color: #333;
41
 	color: #fff;
42
 	padding: 25px 0 0 0;
43
 }

Lưu ý: Để bổ sung Starry BG, hãy tải xuống file nguồn!

Chúng tôi đã cho thiết kế nhiều khoảng trống hơn bằng cách thêm padding và tạo ra một thiết kế full-width bằng cách cho tất cả các phần một màu nền và chiều rộng tối thiểu 100%. Chúng tôi cũng chuyển các mục menu thành chữ in hoa với text-transform: uppercase.

Bước 2: Tạo style cho top bar với _settings.scss

Để tạo kiểu cho top bar của chúng ta, hãy xem kỹ file _settings.scss. Tùy thuộc vào code editor mà bạn đang sử dụng, hãy sử dụng tùy chọn Find (tìm kiếm) và nhập "Topbar". Ở đây bạn có thể tìm thấy tất cả các thiết lập để thay đổi top bar tiêu chuẩn. Đối với bài hướng dẫn này, chúng ta sẽ sử dụng hai tùy chọn khác nhau; chọn lựa đầu tiên điều chỉnh top bar cao hơn một chút và chọn lựa còn lại để tăng kích thước font chữ một chút. Gỡ bỏ phần ghi chú và thay đổi hai cài đặt sau đây:

1
$topbar-height: 65px;
2
 $topbar-link-font-size: rem-calc(15);

Bước 3: Tạo kiểu cho Off-Canvas với _setting.scss

Chúng ta cũng sẽ sử dụng file cài đặt để điều chỉnh menu off-canvas. Markup tiêu chuẩn cho off-canvas khá ổn, nhưng hãy bảo đảm rằng phần nav có chiều cao tương đương với phần nav của top bar. Trong điều kiện đó, chúng ta sẽ phải di chuyển biểu tượng hamburger một chút, do đó, nó nằm ở giữa tính từ trên xuống. Trong file cài đặt, tìm và nhập vào "Off-canvas". Bỏ ghi chú và thay đổi hai cài đặt sau đây:

1
$tabbar-height: rem-calc(65);
2
 $tabbar-hamburger-icon-top: rem-calc(16);

Bước 4: Tận hưởng kết quả của bạn

Lưu file lại, hãy để compass biên dịch các file của bạn và refresh trình duyệt của bạn. Bây giờ trang của chúng ta trông bắt mắt hơn và tất cả đều được hỗ trợ với một top bar tuyệt đẹp và cả off-canvas! Kết quả của bạn sẽ trông giống thế này:

Sass Top Bar
Sass Offcanavs

Tổng kết

Chúng tôi đã tạo một trang đẹp, tự thích ứng bằng cách sử dụng top bar và off-canvas của Foundation, thêm một chút tạo kiểu Sass của riêng chúng tôi để mang đến cho nó vẻ bắt mắt hơn và tinh chỉnh trang bằng cách sử dụng file _settings.scss.

Rõ ràng, chúng ta có thể làm nhiều hơn với _settings.scss ngoài phần tôi chỉ minh hoạ. Hãy tiếp tục và thực hiện các cài đặt để xem bạn có thể tùy chỉnh các phần tử Foundation dễ dàng như thế nào trong trang web của mình hoặc dùng thử bản demo này để tùy chỉnh thêm menu top bar/off-canvas của bạn. Chúc vui vẻ!

Các nguồn tài nguyên



Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.