EDAILY
  • Hướng Dẫn
  • Review
EDAILY
  • Hướng Dẫn
  • Review
Không kết quả
Xem tất cả kết quả
EDAILY
Không kết quả
Xem tất cả kết quả
Trang chủ Hướng Dẫn

[Học CSS] Kỹ thuật tạo menu ngang cơ bản – ThachPham

admin qua admin
17 Tháng mười một, 2022
Trong Hướng Dẫn
0
0
Chia sẻ
0
Lượt xem
Share on FacebookShare on Twitter

Các bạn có tin không? Đối với ai mình không biết chứ đối với mình, việc tạo menu (dù ngang hay dọc) trong CSS rất khó khăn đối với mình ở thời gian đầu. Vì để tạo được một menu với CSS thì cần phải vận dụng rất nhiều kiến thức về CSS mặc dù nó chỉ là các kiến thức cơ bản nhưng bấy nhiêu thôi đã có thể gây khó dễ cho người mới rồi.

Nhờ việc rút dây kinh nghiệm từ chính bản thân, mình xin chia sẻ các cách tạo một menu theo hướng dễ hiểu nhất dành cho người mới bắt đầu. Ở bài này mình sẽ hướng dẫn bạn tạo một menu ngang và có thêm hướng dẫn tạo menu đổ xuống (dropdown menu), bài sau mình sẽ nói qua menu dọc.

Để tạo được một menu, mình yêu cầu các bạn xem lại toàn bộ các bài trước của serie này vì chúng ta sẽ vận dụng gần như hầu hết các kiến thức đó để tránh việc bạn sẽ không hiểu những gì mình nói ở bài này.

Cách tạo menu ngang đơn giản

Để tạo menu ngang, chúng ta sẽ sử dụng thẻ <ul> để tạo khu vực menu và <li> để tạo từng mục trong menu đó. Do vậy, trước tiên chúng ta có đoạn cấu trúc menu bằng HTML như sau, mình sẽ đặt menu vào trong một cái thẻ <div> với id là #menu.

[html] <div id=”menu”> <ul> <li><a href=”#”>Trang chủ</a></li> <li><a href=”#”>Diễn đàn</a></li> <li><a href=”#”>Tin tức</a></li> <li><a href=”#”>Hỏi đáp</a></li> <li><a href=”#”>Liên hệ</a></li> </ul> </div> [/html]

Kế tiếp là ta có thêm một đoạn CSS sau để reset CSS cho dễ viết CSS về sau, và thêm một số style cho toàn trang web như dùng font chữ có chân chẳng hạn.

/*==Reset CSS==*/ * { margin: 0; padding: 0; }

/*==Style cơ bản cho website==*/ body { font-family: sans-serif; color: #333; }

Được rồi, bây giờ chúng ta sẽ tiến hành xử lý cái menu.

Trước tiên là phần bao bọc menu (tức là thẻ <ul> trong #menu), chúng ta sẽ sử dụng thuộc tính list-style-type để xóa các dấu đầu dòng, thêm màu nền và đưa văn bản bên trong ra giữa cho đẹp nha.

/*==Style cho menu===*/ #menu ul { background: #1F568B; list-style-type: none; text-align: center; }

Kết quả ta tạm có như sau:

css-menu-basic-01

Kế tiếp, chúng ta sẽ muốn cho các mục con nằm dàng ngang nên sẽ dùng gì nè? Vâng, bạn có thể sử dụng float: left cho tất cả thẻ <li> hoặc đưa về kiểu hiển thị inline-block.

Lựa chọn 1: Kiểu inline-block (khuyến khích)

#menu li { color: #f1f1f1; display: inline-block; width: 120px; height: 40px; line-height: 40px; margin-left: -5px; }

Lựa chọn 2: Kiểu float

#menu li { color: #f1f1f1; float: left; width: 120px; height: 40px; line-height: 40px; }

Sở dĩ kiểu float mình không có margin-left: -5px là vì cái 5px kia là kiểu display: inline-block nó tự sinh ra nên phải xóa nó đi bằng cách này.

Nếu float thì nên thêm một vài thuộc tính như sau cho #menu ul.

#menu ul { background: #1F568B; list-style-type: none; overflow: hidden; width: 100%; }

Kết quả sau khi làm kiểu Inline.

Và cuối cùng là thêm style cho các thẻ <a> bên trong, quan trọng nhất là sẽ đưa kiểu hiển thị cho các thẻ này thành block để nó được phủ kín cái #menu ul.

#menu a { text-decoration: none; color: #fff; display: block; } #menu a:hover { background: #F1F1F1; color: #333; }

Kết quả khi hoàn thành:

css-menu-basic-0

Xem live:

[codepen id=”vEqPJG”]

Cách tạo menu dropdown đơn giản

Bây giờ ta cũng có một menu giống như cái ở trên, nhưng mình muốn ở phần Tin tức sẽ có thêm một vài menu con nữa, như vậy mình sẽ đặt thêm một thẻ <ul> lồng bên trong item Tin tức và thẻ <ul> này sẽ mang class sub-menu để sau này dễ tái sử dụng.

[html highlight=”6-10″] <div id=”menu”> <ul> <li><a href=”#”>Trang chủ</a></li> <li><a href=”#”>Diễn đàn</a></li> <li><a href=”#”>Tin tức</a> <ul class=”sub-menu”> <li><a href=”#”>WordPress</a></li> <li><a href=”#”>SEO</a></li> <li><a href=”#”>Hosting</a></li> </ul> </li> <li><a href=”#”>Hỏi đáp</a></li> <li><a href=”#”>Liên hệ</a></li> </ul> </div> [/html]

Và đoạn CSS y hệt bên trên để làm cái menu đơn giản trước cái đã.

/*==Reset CSS==*/ * { margin: 0; padding: 0; }

/*==Style cơ bản cho website==*/ body { font-family: sans-serif; color: #333; }

/*==Style cho menu===*/ #menu ul { background: #1F568B; list-style-type: none; text-align: center; } #menu li { color: #f1f1f1; display: inline-block; width: 120px; height: 40px; line-height: 40px; margin-left: -5px; } #menu a { text-decoration: none; color: #fff; display: block; } #menu a:hover { background: #F1F1F1; color: #333; }

Bây giờ kết quả hiển thị ra là bạn sẽ thấy các menu con của thằng Tin tức bị hiển thị thế này:

basic-dropdown-menu-01

Okay, vậy trước tiên, chúng ta cần phải cho .sub-menu ẩn đi cái đã.

/*==Dropdown Menu==*/ .sub-menu li { display: none; }

Bây giờ, chúng ta muốn tùy biến lại cái .sub-menu sẽ hiển thị (nếu có hiển thị) nằm bên ngoài cái phần #menu ul để nó không bị đẩy lên như vậy. Như bài trước ta đã học rồi, để tùy biến vị trí một phần tử mà không ảnh hưởng đến các phần tử khác thì sẽ sử dụng thuộc tínhposition. Nhưng mà chúng ta muốn cái .sub-menu nó phải nằm gần menu mẹ, vậy thì chúng ta phải thiết lập #menu li thành kiểu relative vì #menu li là các item cấp lớn nhất, mình gọi đó là menu mẹ.

#menu li { position: relative; }

Và tiếp theo là cho cái .sub-menu thành kiểu absolute để nó luôn luôn nằm trong phạm vi menu mẹ, tức là nằm trong #menu li ấy. Chúng ta viết lại đoạn .sub-menu như sau:

.sub-menu { display: none; position: absolute; }

Và cuối cùng, là chúng ta sẽ cho thằng .sub-menu sẽ hiển thị ra khi ta rê chuột vào menu mẹ, như vậy ta sẽ kết hợp với một pseudo-class là :hover để làm việc này. Để hiển thị ra chúng ta gán display: block cho nó.

#menu li:hover .sub-menu { display: block; }

Đoạn #menu li:hover .sub-menu nghĩa là khi chúng ta rê chuột vào #menu li thì nó sẽ thực hiện các thay đổi cho .sub-menu.

Thêm một chút CSS cho cái menu con bên trong để nó xóa cái margin không cần thiết đi.

.sub-menu li { margin-left: 0 !important; }

Bèm!

[codepen id=”yydwzq”]

Bạn đã nắm được chưa nào? Nhìn chung cũng đơn giản thôi nhưng hãy cứ thử làm vài lần cho đến khi nào không cần xem tutorial nữa là được, vì nó rất quan trọng sau này khi bắt tay vào làm các giao diện cơ website hoàn chỉnh đó. 😀

Liên quan Bài đăng

Hướng Dẫn

Những Lưu Í Quan Trọng Khi Mua Dây Thoát Hiểm Chung Cư

21 Tháng năm, 2025
Hướng Dẫn

Địa chỉ bán vòng mã não đỏ

7 Tháng năm, 2025
Hướng Dẫn

A Guide to Hold Your Destination Wedding in Vietnam

1 Tháng tư, 2025
Hướng Dẫn

Tấm Inox 304: Những Lợi Ích Không Ngờ Cho Các Dự Án Công Nghiệp

20 Tháng ba, 2025
Hướng Dẫn

Báo Giá Minh Bạch – Cách Nhận Diện Công Ty Tổ Chức Sự Kiện Đáng Tin Cậy

13 Tháng ba, 2025
Hướng Dẫn

Bật mí địa chỉ cung cấp cuộn inox chất lượng giá tốt

11 Tháng ba, 2025
Bài tiếp theo

Cách khâu vắt - Xưởng may túi vải

TIN PHỔ BIẾN

Không có sẵn nội dung

Chúng tôi

EDAILY

Edaily Kênh Tin Tức Giải Trí tổng hợp dành cho giới trẻ Cập nhật tin tức giải trí nhanh nhất, HOT nhất trong và ngoài nước !

Danh mục

  • Hướng Dẫn
  • Review

Chính sách

Chính sách bảo mật

Giới thiệu

Điều khoản

 

Mạng xã hội

© 2022 Edaily.vn

Không kết quả
Xem tất cả kết quả
  • Homepages
    • Home Page 1
    • Home Page 2

© 2022 Edaily.vn