Menu động là gì. Chúng tôi tạo ra một menu năng động và sống động. Viết code tạo menu động trong jQuery

Đã thích:
26



Không thích: 12

Trong bài viết này, tôi sẽ chỉ cho bạn cách viết một plugin jQuery đơn giản để xây dựng một đánh dấu HTML trông đẹp mắt từ đánh dấu HTML thông thường. thực đơn năng động. Điều đầu tiên chúng ta sẽ bắt đầu là quyết định chính xác plugin sẽ làm gì và mục tiêu của chúng ta là gì. Vì thế:

  • Hãy gọi plugin dynamenu (từ tiếng Anh Menu động). Một cái tên ngắn gọn, hay đúng tinh thần của jQuery. Tính năng động của menu sẽ được thể hiện bằng những thay đổi về “độ trong suốt” của các mục menu và những thay đổi về vị trí của thành phần menu khi di chuột - mục menu sẽ “di chuyển” một chút sang phải.
  • Chúng tôi sẽ thiết lập cấu trúc menu tĩnh ở dạng đánh dấu HTML. Đây sẽ là một tập hợp tuần tự các phần tử DIV. Bên trong mỗi div có một siêu liên kết với tên của mục menu. Đối với mỗi div chúng ta sẽ đặt một thuộc tính lớp="dynamenu"để sau đó bạn có thể truy cập một tập hợp các div và biến chúng thành một menu.
  • Để tạo hiệu ứng cho menu chúng ta sẽ sử dụng phương pháp chuẩn jQuery - hoạt hình(). Chỉ cần thực hiện nhiệm vụ “động lực” là đủ. Với phương pháp này chúng ta sẽ thay đổi thuộc tính độ mờ đụcbên trái tại thời điểm bạn di chuột qua một phần tử và xóa chuột khỏi phần tử menu.
  • Bây giờ hãy xác định tệp nào cần được tạo để kiểm tra hoạt động của ví dụ được đề cập. Họ đây rồi:

    2. jquery.dynamenu.js - mã plugin được đặt trong một tệp riêng.

    3. dynamenu.css - phong cách menu của chúng tôi. Chúng tôi đặt tất cả CSS ở đây

    Bạn có thể tìm thấy các tệp có menu làm việc này trong kho lưu trữ kèm theo bài viết. Ở cuối bài viết có phần minh họa trực tiếp về cách thức hoạt động của menu của chúng tôi. Xin lưu ý rằng trong bản demo, lệnh gọi plugin được đặt ở cùng vị trí với chính mã plugin. Điều này chỉ là do cơ chế demo trực tiếp mà chúng tôi sử dụng yêu cầu đặt mã JavaScript vào một khung riêng.

    Hãy bắt đầu viết một plugin. Đi!

    1. Nấu ăn đánh dấu HTML trang

    Hãy thiết lập nhiều nhất đánh dấu đơn giản cho thực đơn của chúng tôi. Hãy coi đây là một số mục menu cho trang web trong tương lai của chúng tôi:

    Trang tin tức Hướng dẫn Photoshop Bàn chải Photoshop Phông chữ đẹp

    Mọi thứ ở đây đều đơn giản - 4 phần tử div, mỗi phần tử có một lớp dynamenu, để sau đó chúng ta có thể chuyển nó làm bộ chọn cho plugin trong tương lai của mình. Bên trong mỗi div có một siêu liên kết với tên của mục menu.

    2. Đặt kiểu CSS

    Để tạo kiểu cho menu của chúng tôi, chúng tôi chỉ sử dụng hai kiểu CSS. Với sự giúp đỡ của họ, chúng tôi sẽ làm cho nền của mỗi mục menu có màu xám, chiều rộng menu 300 pixel với các phần bên ngoài và vết lõm Mỗi liên kết có kích thước 5 pixel và tất cả các liên kết menu đều có màu đen:

    a.mlink ( color:#000; text-trang trí:none; ) .dynamenu ( màu nền: #aaaaaa; chiều rộng:300px; lề:5px; đệm:5px; họ phông chữ: "Tahoma"; cỡ chữ: 9 điểm; )

    3. Chúng tôi viết “khuôn khổ” của plugin

    Trước hết, hãy xác định khung plugin của chúng tôi. Khung này được lấy một phần từ trang web chính thức của jQuery và chứa cái gọi là "Thực tiễn tốt nhất" ( thực tiễn tốt nhất và kỹ thuật - từ các nhà phát triển ngôn ngữ jQuery). TRONG trường hợp chung một khung tương tự có thể áp dụng cho hầu hết mọi người plugin jQuery. Nếu bạn nhớ và hiểu cách hoạt động của khung này thì bạn sẽ có thể viết plugin “một hoặc hai lần”. Nó trông như thế này:

    (function($) ( // danh sách các phương thức của plugin var Method = ( init: function(options) ( // việc khởi tạo plugin có thể được đặt ở đây. trong trường hợp của chúng tôi // để đơn giản sẽ không có gì ở đây cả), trượt: function () ( // phương thức trượt của plugin của chúng tôi sẽ trực tiếp xây dựng menu)); // “đăng ký” plugin của chúng tôi trong không gian tên jQuery. $.fn.dynamenu = function(method) ( // ở đây chúng tôi gọi hàm mong muốn phương thức bên trong plugin ) ))(jQuery) ;

    Như bạn có thể thấy, không có gì phức tạp trong khung hình. Nhưng anh mang trong mình thông tin hữu ích. Đầu tiên tâm điểm, cần được hiểu trong khung - chúng tôi thu thập tất cả các phương thức được thêm vào plugin của chúng tôi (init, slip) vào một đối tượng - các phương thức. Điều này cho phép bạn tránh làm lộn xộn không gian tên $.fn chức năng không cần thiết. Việc chỉ định chính xác không gian tên của plugin của chúng tôi là rất một phần quan trọng quá trình phát triển plugin của chính nó. Việc sử dụng không gian tên đảm bảo rằng plugin của chúng tôi ít có khả năng bị ghi đè bởi các plugin hoặc mã khác nằm trên cùng một trang HTML. Không gian tên cũng làm cho cuộc sống dễ dàng hơn vì... giúp bạn theo dõi tốt hơn các phương pháp, sự kiện và dữ liệu.

    Luôn sử dụng phương thức ẩn bên trong plugin, ví dụ như trong đối tượng phương thức. Bên cạnh thực tế là nó phong cách tốt lập trình, kỹ thuật này sẽ giúp bạn tránh xung đột với các thư viện và plugin của bên thứ ba khác, đồng thời cũng cho phép bạn không làm ô nhiễm không gian tên jQuery

    Điểm tiếp theo đáng chú ý là người thiết kế plugin của chúng tôi. Đây là dòng $.fn.dynamenu = function (phương thức) (...). Như bạn có thể thấy, hàm tạo lấy một tham số - phương pháp. Là một giá trị cho tham số, chúng ta sẽ truyền một chuỗi chứa tên của phương thức bên trong đối tượng phương pháp, mà chúng tôi sẽ gọi. Hãy điền vào hàm tạo với đoạn mã sau:

    $.fn.dynamenu = function(method) ( if (phương thức) ( Method.init.apply(this, đối số); phương thức trả về[ phương thức].apply(this, Array.prototype.slice.call(arguments, 1)) ; ) else ( $.error("Phương thức" + phương thức + " không tồn tại!"); ) )

    Hãy tìm hiểu những gì chúng tôi đã làm. Đầu tiên chúng ta kiểm tra xem một phương thức có tên được truyền trong tham số hàm tạo có tồn tại trong đối tượng không phương pháp plugin của chúng tôi. Nếu có một phương thức, trước tiên chúng ta gọi phương thức init để khởi tạo plugin, sau đó chúng ta gọi phương thức có tên được truyền trong tham số hàm tạo và chuyển tất cả các đối số còn lại cho nó. Nếu không có phương thức nào có cùng tên thì chúng tôi sẽ báo lỗi và plugin sẽ ngừng hoạt động.

    TRÊN ở giai đoạn này rất nhiều điều đã được thực hiện! Bây giờ chúng ta có thể truy cập plugin của mình và gọi các phương thức của nó, mặc dù không công việc hữu ích Họ vẫn chưa làm được điều đó. Tôi khuyên bạn nên đặt mã plugin của chúng tôi vào một tệp riêng biệt và gọi nó là jquery.dynamenu.js. Đặt mã plugin vào tập tin riêng biệt là hợp lý - xét cho cùng, về bản chất, plugin phải phổ biến và cho phép chúng tôi cũng như các nhà phát triển khác kết nối plugin này với trang web của họ.

    Bây giờ, khung của chúng ta chứa đầy mã có thể gọi các phương thức nội bộ của plugin, đã đến lúc xây dựng "phần thịt" - nghĩa là viết mã sẽ trực tiếp biến các khối div của chúng ta thành một menu động đẹp mắt. Bắt đầu nào...

    4. Chúng tôi viết mã tạo menu động trong jQuery

    Tất cả mã hữu ích plugin của chúng tôi sẽ được đặt trong hàm trượt, đó là phương pháp nội bộ plugin và nằm trong đối tượng phương pháp. Hãy mô tả ngắn gọn chuỗi hành động để biến đánh dấu tĩnh bằng các khối div của chúng ta thành một menu động trong jQuery:

  • Đầu tiên, thay đổi độ trong suốt của tất cả các khối div, đặt nó thành 0,4 điểm. Điều này sẽ làm cho mỗi mục menu có màu xám. Sau đó, khi bạn di chuột qua nó, chúng ta sẽ thay đổi độ mờ thành 1, từ đó tạo hiệu ứng làm nổi bật mục menu
  • Tiếp theo, chúng ta sẽ tạo các trình xử lý để “nhập” chuột vào khu vực mục menu và “thoát” nó. Khi bạn di chuột qua một mục menu, chúng tôi sẽ thay đổi kiểu phông chữ thành đậm và thay đổi màu nền thành màu tối hơn. Ngoài ra, bằng cách sử dụng phương thức animate tiêu chuẩn của jQuery, chúng ta sẽ tạo ra hiệu ứng “đẩy” menu sang bên phải một chút. Khi chuột rời khỏi khu vực mục menu, chúng ta sẽ chỉ đưa tất cả các tham số về trạng thái ban đầu.
  • Trên thực tế, đó là toàn bộ logic. Bây giờ hãy xem cách thực hiện điều này:

    return this.each(function() ( $(this).css(("opacity://0.4")); $(this).hover(function() ( $("a.mlink", this).css (("font-weight://bold")); $(this).animate(( opacity:1, "margin-left":+=5" ), 100, "tuyến tính"); ), function( ) ( $("a.mlink", this).css(("font-weight://normal")); $(this).animate(( opacity:0.4, "margin-left:">-=5 " ), 100, "tuyến tính"); )); ));

    Để đề phòng, tôi sẽ giải thích chuyện gì đang xảy ra. Vì vậy, ngay dòng đầu tiên chúng ta thấy toán tử. Nó thực hiện như sau: nó chạy qua những gì được truyền cho hàm trượt tập hợp các phần tử (tức là tất cả các khối div của chúng tôi) và thực thi mã được đặt bên trong. Sau khi chạy qua các phần tử như vậy, chúng tôi trả về ( tuyên bố trở lại) kết quả của việc thực hiện các phép toán cho từng phần tử của tập hợp, dưới dạng một tập hợp. Do đó, hàm trượt của chúng ta trả về một tập hợp các khối div được chuyển đến “đầu vào” của hàm, chỉ được xử lý và chuyển thành menu động. Điều này triển khai một khái niệm quan trọng của jQuery - khả năng sử dụng plugin của chúng tôi trong chuỗi cuộc gọi. Để hiểu rõ hơn chuỗi cuộc gọi là gì, đây là một ví dụ:

    $(".myelm").dynamenu("sliding").css(("border" : "1px màu đỏ đậm"));

    Trong đoạn mã trên, chúng ta thấy chuỗi lệnh gọi là gì: đầu tiên chúng ta chọn tất cả các thành phần trên trang có lớp myelm, sau đó chúng ta sử dụng plugin dynamenu và sau đó chúng ta lại sử dụng phương thức tiêu chuẩn dọc theo chuỗi jQuery CSS() để thay đổi kiểu dáng của các phần tử. Nếu chúng ta không trả về cấu trúc return this.each(function() ( ... )) từ phương thức, thì hãy sử dụng phương pháp css() trong một “chuỗi” họ sẽ không thể làm được.

    Sử dụng toán tử trả về this.each() để hỗ trợ xâu chuỗi các plugin của bạn và làm cho chúng linh hoạt hơn.

    Hãy tiếp tục, bên trong toán tử each(), nơi chúng ta chạy qua tất cả các khối div, nó diễn ra chính xác cài đặt ban đầu thuộc tính "trong suốt" (độ mờ) của phần tử trong 0,4. điểm. Giá trị độ mờ tối đa là 1 (100%), vì vậy chúng tôi đặt "độ mờ" thành 40%. Sau đó, chúng tôi thiết lập hai trình xử lý để “di chuột” chuột và “di chuyển” chuột ra khỏi khu vực khối div. Trong trình xử lý đầu tiên, chúng tôi đặt tiêu đề mục menu thành in đậm và sử dụng phương pháp sinh động() để đạt được “độ mờ hoàn toàn” của mục menu và cũng dịch chuyển nó sang phải 5 pixel. Trong trình xử lý “rời” chuột, chúng ta chỉ cần đưa phần tử về trạng thái ban đầu - thay đổi lại phông chữ thành bình thường và dịch chuyển nó sang trái thêm 5 pixel.

    Đó là tất cả! Plugin của chúng tôi đã sẵn sàng để sử dụng. Mặc dù đơn giản nhưng nó có thể rất hữu ích cho việc tạo menu động trên trang web. Dưới đây là minh họa cách plugin của chúng tôi hoạt động. Để xem kết quả của plugin, hãy chuyển đến tab Kết quả.

    chúc may mắn với bài viết của bạn plugin tốt! Bình luận, câu hỏi và phản hồi luôn được chào đón;)

    Bạn có thể đã từng thấy các menu động và sinh động trên một số trang web thay đổi khi bạn cuộn xuống. Bằng cách thu nhỏ menu điều hướng chính, bạn sẽ có nhiều không gian hơn cho nội dung. Trong hướng dẫn này, chúng tôi sẽ giải thích cách bạn có thể tự tạo một menu bằng HTML5, CSS3 và một chút jQuery.

    Nếu bạn muốn tập trung đặc biệt vào nội dung của trang web, cũng như cho phép bạn tạo điều hướng lớn hơn và ấn tượng hơn khi người dùng truy cập trang web lần đầu, thì loại menu này là hoàn hảo cho bạn. Bạn có thể giới thiệu hoàn hảo thương hiệu hoặc biểu tượng của mình và sau cái nhìn đầu tiên về trang web, hãy giảm bớt một số yếu tố, cho phép người dùng tập trung vào nội dung của bạn.

    Có nhiều hướng khác nhau để làm điều đó. Trong hướng dẫn này, chúng tôi sẽ giải thích cách tạo một menu cố định, có chiều rộng đầy đủ, có thể thay đổi kích thước theo chiều cao cùng với logo của bạn, tạo một phiên bản thu nhỏ của bản gốc. Nếu muốn, bạn cũng có thể thay thế logo bằng một tùy chọn khác, chẳng hạn như tên viết tắt hoặc biểu tượng, nhưng hãy nhớ rằng tính nhất quán ở đây rất quan trọng để người dùng hiểu phần tử đã thay đổi như thế nào và nó có ý nghĩa gì. mục tiêu chính vẫn là điều hướng trang web.

    Sự sáng tạo cấu trúc cơ bản trong HTML5

    Chúng ta sẽ bắt đầu bằng cách tạo mã HTML cơ bản mà chúng ta cần. Để bắt đầu, chúng ta sẽ sử dụng cấu trúc HTML5 rất đơn giản.

    Bây giờ mã HTML ban đầu của chúng ta đã được viết, chúng ta sẽ thêm mã cho menu cũng như một số chi tiết khác cho tiêu đề của tệp HTML.

    Cách tạo menu động | Tạp chí Thiết kế Web

    • trang chủ
    • Bài viết
    • Đây là một trang web rất thú vị!

    Cuộn xuống và xem menu thay đổi như thế nào

    Tất cả! Chúng tôi đã đến nơi!

    Trong phần : Chúng tôi đã thêm thẻ meta cho tác giả để chỉ ra người tạo tài liệu, sau đó chúng tôi đưa vào “Đặt lại CSS” nổi tiếng của Eric Meyer, thẻ này sẽ đặt lại hầu hết mọi thành phần trong tệp HTML, giúp bạn làm việc với tài liệu rõ ràng hơn và dễ dàng hơn với. Và vì sau này chúng ta sẽ sử dụng JQuery nên ở dòng cuối cùng của phần tử chính, chúng ta sẽ nhập nó qua JQuery CDN.

    Trong thẻ của chúng tôi, chúng tôi đã sử dụng phần tử HTML5 mặc định. Phần của chúng tôi sẽ có toàn bộ chiều rộng của trang và sẽ chịu trách nhiệm về những thay đổi giữa phiên bản lớn và nhỏ của menu. Chúng tôi đang cung cấp cho lớp của mình một lớp có tên là “lớn” để chúng tôi có thể thay đổi một số thuộc tính cụ thể trong CSS nhằm biến menu của chúng tôi thành một phiên bản nhỏ hơn. Đây là menu chứa hình ảnh logo trang web của chúng tôi và một danh sách menu không có thứ tự đơn giản với ba liên kết.

    Vì chúng tôi không có bất kỳ nội dung nào ở đây nên nội dung này sẽ được sử dụng để kéo dài trang và buộc cuộn có hiệu lực.

    Và đó là tất cả cho phần HTML. Bây giờ chúng ta cần tạo kiểu cho các thành phần bằng CSS và làm cho menu động.

    Tạo kiểu cho menu và trang

    /* Nhập phông chữ Amaranth */ @import url(//fonts.googleapis.com/css?family=Amaranth); /* Kiểu chính */ body( nền-color: #ebebeb; ) ul( float: right; ) li( display: inline; float: left;) img.logo(float: left;) /* Kích thước menu và căn giữa * / nav( chiều rộng: 960px; lề: 0 tự động;)

    Một chút CSS này sẽ làm cho menu của chúng ta rộng 960px ở giữa, đồng thời sắp xếp menu của chúng ta ở bên phải và logo ở bên trái. Chúng tôi cũng sẽ nhập phông chữ Amaranth từ Google Web Fonts để sử dụng cho văn bản của chúng tôi trên trang.

    Phần.stretch( float: left; chiều cao: 1500px; chiều rộng: 100%; ) phần.stretch p( font-family: "Amaranth", sans-serif; font-size: 30px; color: #969696; text-align: giữa; vị trí: tương đối; lề trên: 250px; ) phần.stretch p.bottom( trên cùng: 100%; )

    Ở đây, chúng tôi chỉ làm cho trang giãn ra để khuyến khích người dùng cuộn và định vị văn bản để cho biết phần đầu và phần cuối của nội dung.

    Tiêu đề( nền: #C7C7C7; viền dưới: 1px rắn #aaaaaa; float: trái; chiều rộng: 100%; vị trí: cố định; chỉ mục z: 10; ) tiêu đề a( màu: #969696; trang trí văn bản: không có; họ phông chữ: "Amaranth", sans-serif; chuyển đổi văn bản: chữ hoa; cỡ chữ: 1em; ) tiêu đề a.active, tiêu đề a:hover( color: #3d3d3d; ) tiêu đề li( lề-phải: 30px; ) /* Kích thước cho menu lớn hơn */ header.large( chiều cao: 120px; ) header.large img( chiều rộng: 489px; chiều cao: 113px; ) header.large li( lề-top: 45px; )

    Đây là nơi chúng ta hoàn thành kiểu dáng cơ bản của tiêu đề. sẽ đóng vai trò là nơi chứa menu của chúng tôi. Nó sẽ chứa phần tử của chúng tôi và sẽ đóng vai trò là phần tử nơi chúng tôi xác định màu nền, chiều cao menu, kiểu menu liên kết, v.v. Nó sẽ thích ứng với chiều rộng màn hình với thuộc tính chiều rộng: 100% và sẽ vẫn cố định trên các thành phần khác trên trang web. Điều quan trọng cần nhớ là đặt chỉ mục z để phần tử chồng lên phần còn lại của trang, cũng như vị trí: đã sửa để làm cho div được neo ở trên cùng để nó giữ nguyên vị trí trong khi người dùng cuộn qua trang mạng. Như bạn có thể thấy, ngoài việc đặt kiểu cho tiêu đề, chúng tôi còn đặt một số kiểu cụ thể cho lớp “lớn” bằng cách sử dụng header.large. Trạng thái ban đầu của menu của chúng tôi sẽ lớn và vì vậy chúng tôi chỉ xác định các kiểu cần thiết ở đây để làm cho nó trông giống như chúng tôi muốn khi người dùng lần đầu vào trang.

    Thay đổi kích thước menu động

    Thực đơn của chúng tôi đã được hoàn thiện và tạo kiểu, nhưng chúng tôi vẫn muốn giữ nó ở mức tối thiểu. Để tạo "trạng thái" này, chúng tôi sẽ tạo một lớp CSS mới có tên là "nhỏ", lớp này sẽ chịu trách nhiệm thay đổi các thuộc tính mà chúng tôi cần sửa đổi. Chúng ta đã xác định một menu lớn, vì vậy bây giờ chúng ta chỉ cần làm cho menu ngắn hơn, hình ảnh của chúng ta nhỏ hơn theo tỷ lệ và (lề trên) mà chúng ta sử dụng trong các phần tử của mình

  • , cũng nên giảm để chúng vẫn được căn giữa theo chiều dọc với chiều cao menu mới:

    /* Kích thước cho menu nhỏ hơn */ header.small( chiều cao: 50px; ) header.small img( chiều rộng: 287px; chiều cao: 69px; lề-top: -10px; ) header.small li( lề-top: 17px; )

    Vì vậy, như bạn có thể thấy, các kiểu này gần giống với các kiểu trong menu lớn hơn, chúng tôi chỉ thay đổi lớp “lớn” thành “nhỏ” và thay đổi các giá trị mà chúng tôi đã sử dụng thành các giá trị nhỏ hơn. Chúng tôi sử dụng phần trên cùng của lề âm trên hình ảnh để tập trung hình ảnh vào vùng chứa vì hình ảnh có bóng mỏng và cao hơn chữ viết để chứa nó. Bây giờ chúng tôi có tất cả các kiểu cần thiết để tùy chỉnh menu thay đổi kích thước và nếu bạn cố gắng thay đổi nó trong , bạn sẽ thấy trong trình duyệt rằng menu sẽ trở nên nhỏ hơn. Nhưng chúng ta cần nó phải năng động.

    Thay đổi lớp menu bằng jQuery

    Với tất cả kiểu dáng đã có sẵn, chúng ta chỉ cần thêm một số JavaScript để chuyển đổi giữa các lớp "lớn" và "nhỏ". Vì chúng tôi muốn thay đổi điều này dựa trên thao tác cuộn của người dùng, nên chúng tôi sẽ sử dụng hàm .ScrollTop() trong jQuery. Chức năng này sẽ cho phép chúng ta lấy hoặc đặt vị trí cuộn theo pixel. Vị trí cuộn là số pixel đã được cuộn trong cửa sổ trình duyệt. Trong trường hợp này, chúng ta chỉ cần biết người dùng đã cuộn bao nhiêu pixel để có thể gọi mã của mình và chuyển đổi giữa các lớp:

    $(document).on("scroll",function())( if($(document).scrollTop()>100)( $("header").removeClass("large").addClass("small") ; ) else( $("header").removeClass("small").addClass("large"); ) ));

    Nếu người dùng đã cuộn hơn 100 pixel thì lớp "lớn" mà chúng tôi đã tạo sẽ bị xóa và lớp "nhỏ" mới của chúng tôi sẽ được thêm vào. Bằng cách này, menu sẽ thay đổi kích thước như chúng tôi đã xác định trước đó trong CSS. Hãy dùng thử, bây giờ nó sẽ hoạt động, nhưng bạn có thể nhận thấy rằng sự chuyển đổi giữa các lớp có vẻ rất đột ngột.

    Chuyển đổi CSS cho hoạt ảnh menu

    Để chuyển đổi suôn sẻ giữa các lớp trong menu của chúng tôi, chúng tôi sẽ sử dụng chuyển tiếp CSS. Chỉ cần sử dụng đoạn mã này bên cạnh phần CSS còn lại của bạn.

    Header,nav, a, img, li( transition: tất cả 1s; -moz-transition: tất cả 1s; /* Firefox 4 */ -webkit-transition: tất cả 1s; /* Safari và Chrome */ -o-transition: tất cả 1 giây; /* Opera */ )

    Ở đây chúng tôi đã xác định các chuyển đổi cho tất cả các thuộc tính CSS.

  • các phần tử, về cơ bản là tất cả các phần tử mà chúng ta thay đổi. Mã này sẽ tạo hiệu ứng thay đổi giữa cả hai lớp bằng chuyển tiếp CSS trong vòng 1 giây. Kiểm tra ngay bây giờ, kết quả sẽ rất trơn tru.

    Bạn đã bao giờ nghe câu nói rằng "bạn không thể tạo menu thả xuống động chỉ bằng CSS trong IE" chưa? Tôi chắc chắn như vậy. Vậy bạn có thực sự tin vào điều này không? Đúng rồi, tốt nhất là đừng tin.

    Mục tiêu chúng tôi muốn đạt được trong bài viết này

    Mục tiêu của bài viết này là tạo một menu thả xuống cho IE được làm hoàn toàn bằng CSS. Bắt đầu với cài đặt này, tôi đã mở rộng nhiệm vụ để làm cho menu như vậy hoạt động trong các trình duyệt nổi tiếng nhất khác (từ các nhận xét, hóa ra những trình duyệt này là Opera 7.x và các phiên bản Firefox mới nhất).

    Mục tiêu mà chúng tôi muốn đạt được trong bài viết này về nguyên tắc ít nhiều mang tính giáo dục phổ thông, tức là. đưa ra khái quát chung về một số tính năng “ẩn” và hiếm khi được sử dụng của trình duyệt.
    Ngoài ra, những người đặc biệt tò mò có thể tìm thấy trong bài viết này một số thủ thuật mà bạn có thể đạt được một số kết quả không chuẩn. Chà, đối với các nhà phát triển, bài viết này có thể trở thành lý do để suy nghĩ hoặc nguồn cho những ý tưởng mới.

    Chúng ta hình dung trình độ của người đọc như thế nào?

    Tôi thực sự đang nghĩ đến việc gắn nhãn bài viết này là "nâng cao". Nhưng tôi chắc chắn rằng ngay cả những nhà phát triển giàu kinh nghiệm nhất cũng sẽ không hiểu rõ những gì được viết trong bài viết. Nói tóm lại, người đọc chỉ cần biết những điều cơ bản về CSS và
    HTML.

    Thực đơn này khác với những thực đơn khác như thế nào?

    Tôi đã dành một thời gian dài tìm kiếm trực tuyến các menu được tạo bằng CSS, nhưng tôi không tìm thấy một giải pháp nào có thể hoạt động mà không gặp trục trặc trong IE. Tuy nhiên, tôi đã tìm thấy nhiều ý tưởng thú vị dẫn tôi đến kết quả sẽ được mô tả ở đây. Đúng, mã của tôi cũng không hoàn hảo, nhưng đơn giản là tôi không có thời gian để sửa tất cả các lỗi. Giải pháp thay thế thú vị nhất mà tôi từng thấy (sử dụng CSS) dựa trên việc sử dụng lớp giả di chuột cho các phần tử LI. Nhưng tôi chưa bao giờ nghĩ rằng điều này là có thể, tôi cũng không nghĩ rằng có thể tạo một menu thả xuống cho IE mà không cần tập lệnh...

    Sự khác biệt chính giữa menu của tôi và các menu khác là menu của tôi chạy trong IE. Tất cả các giải pháp tôi đã thấy đều sử dụng phần tử LI làm thành phần chính cho lớp giả :hover, tuy nhiên Microsoft đã quyết định rằng lớp giả này chỉ có thể được sử dụng cho
    phần tử A. Hầu hết các trang web đều đặt trước rằng menu của họ chỉ hoạt động trong trình duyệt Opera 7.x hoặc Mozilla. Nhưng những trình duyệt này chỉ được 5% người dùng sử dụng! Có, các menu như vậy rất tốt trong các trình duyệt này, nhưng tiếc là chúng không thể hiển thị trong hầu hết các trình duyệt phổ biến nhất. Bây giờ chúng ta sẽ sửa chữa sự hiểu lầm này.

    Menu được tạo chỉ bằng CSS là gì?

    Đây là một menu động được tạo chỉ bằng CSS và không có tập lệnh (ví dụ: được viết bằng JavaScript).

    Cái gì, bạn không thể tin được à?

    Hãy nhìn vào mã:

    < STYLE type = text / css id = "default" title = "mặc định" name = "default" >
    *::- moz - bất kỳ - liên kết br ,*:- moz - bất kỳ - liên kết br (
    /*một giải pháp cho mozilla*/
    không trưng bày;
    }

    div #menu * (
    con trỏ: con trỏ; /*vì IE hiển thị con trỏ văn bản
    nếu liên kết không hoạt động*/
    }

    Tàn tật (
    màu đỏ ! quan trọng ;
    bối cảnh: không có! quan trọng ;
    }

    Div #menu (
    nền: #F5F5DC;

    chiều cao: 15px;
    khoảng trắng : nowrap ;
    chiều rộng: 100%;
    }

    Div #menu .a (
    nền: #F5F5DC;
    đường viền : 1px liền khối #F5F5DC;
    màu: #000000;
    trang trí văn bản : không có ;
    }

    Div #menu .a bảng (
    hiển thị: khối;
    phông chữ: 10px Verdana, sans-serif;
    khoảng trắng : nowrap ;
    }

    bảng div #menu, bảng div#menu a (
    không trưng bày;
    }

    Div #menu .a:hover, div#menu div.menuitem:hover (
    nền: #7DA6EE;
    đường viền : 1px liền khối #000080;
    màu: #0000FF;
    lề - phải :- 1px; /*giải quyết vấn đề với Opera
    không hiển thị đường viền bên phải*/
    }

    Div #menu .a:bảng di chuột, div#menu div.menuitem:bảng di chuột(
    nền: #FFFFFF;
    đường viền : 1px liền khối #708090;
    hiển thị: khối;
    vị trí: tuyệt đối;
    khoảng trắng : nowrap ;
    }

    Div #menu .a:di chuột bảng a, div#menu div.menuitem:di chuột bảng a (
    đường viền - trái : 10px liền khối #708090;
    đường viền - bên phải: 1px màu trắng; /*giải quyết vấn đề nhảy*/
    màu: #000000;
    hiển thị: khối;
    phần đệm: 1px 12px;
    trang trí văn bản : không có ;
    khoảng trắng : nowrap ;
    chỉ số z: 1000;
    }

    Div #menu .a:bảng di chuột a:hover, div#menu div.menuitem:bảng di chuột a:hover (
    nền: #7DA6EE;
    đường viền : 1px liền khối #000000;
    đường viền - trái : 10px liền khối #000000;
    màu: #000000;
    hiển thị: khối;
    phần đệm: 0px 12px;
    trang trí văn bản : không có ;
    chỉ số z: 1000;
    }

    Td(
    đường viền - chiều rộng: 0px;
    phần đệm: 0px 0px 0px 0px;
    }

    mục thực đơn (
    nổi: trái;
    lề : 1px 1px 1px 1px ;
    phần đệm: 1px 1px 1px 1px;
    }

    Mục thực đơn*(
    phần đệm: 0px 0px 0px 0px;
    }

    #khác (

    }

    #moz(

    }

    #moz::-moz-cell-content(
    chiều cao: tự động; khả năng hiển thị: có thể nhìn thấy;
    }

    #other::-moz-cell-content(
    chiều cao: 1px; khả năng hiển thị: ẩn;
    }

    #người giữ (
    chiều rộng: 100%;
    }

    < TABLE id = holder >
    < TR >
    < TD id = "other" >
    < DIV id = "menu" >
    < DIV class= "menuitem" >
    < a class= "a" href = "#" >Tài liệu< BR >
    < TABLE >
    < TR >
    < TD >< a href = #2>nhấp vào đây

    < TR >
    < TD >< a href = #3>Cứu

    < TR >
    < TD >< a href = #4>Đóng



    < DIV class= "menuitem" >
    < A class= "a" href = "#11" >Giúp đỡ< BR >
    < TABLE >
    < TR >
    < TD >< a class= "disabled" >..

    < TR >
    < TD >< a href = #13>Mục lục

    < TR >
    < TD >< a href = "#14" >Về






    < TR >
    < TD id = "moz" >Trình đơn cụ thể của Mozilla!
    < DIV id = "menu" >
    < DIV class= "menuitem" >
    < a class= "a" href = "#" >Filezilla
    < TABLE >
    < TR >
    < TD >< a href = #2>Mở

    < TR >
    < TD >< a href = #3>Cứu

    < TR >
    < TD >< a href = #4>Đóng




    < DIV class= "menuitem" >
    < A class= "a" href = "#11" >Trợ giúp
    < TABLE >
    < TR >
    < TD >< a class= "disabled" >..

    < TR >
    < TD >< a href = #13>Mục lục

    < TR >
    < TD >< a href = "#14" >Về







    < BR >

    Chuyện gì đang xảy ra vậy, tại sao mọi thứ vẫn hoạt động?

    Hãy đặt chỗ ngay rằng trong bài viết này tôi sẽ không hướng dẫn bạn cách sử dụng CSS. Do đó, chúng tôi ngay lập tức chuyển sang xem xét nguyên tắc hoạt động của menu - với lớp giả ":hover". Vâng, đây chính xác là lớp học. Những thứ kia. bộ chọn có thể kế thừa một bộ chọn khác bao gồm ":hover". Trong trường hợp của chúng tôi, "A:hover TABLE" chọn "

    V.
    yếu tố , mà con trỏ chuột đang di chuột qua. Sau đây là một thủ thuật với một bảng có thuộc tính "display" được đặt thành "none" (nghĩa là nó vô hình). Bảng nằm giữa các thẻ neo ( ,). Theo Microsoft, điều này có thể khiến IE phản ứng không thích hợp, nhưng tôi chưa nhận thấy điều gì như vậy.

    Tại sao chúng ta sử dụng bảng? Nhưng vì nó tách biệt rất rõ các neo lồng nhau mà chúng ta muốn sử dụng với neo chính. Giải pháp này không hoạt động trong Mozilla 0.7 và ngay cả với JavaScript, tôi vẫn chưa tìm được cách triển khai giải pháp này. Việc lồng trực tiếp các neo không được Microsoft cho phép, vì vậy thành phần bảng là một loại hack đối với IE. Và theo như tôi biết, chỉ có bảng mới cho phép bạn “chạy” IE theo cách này.

    vậy chúng ta có gì ở đây nào? 2 bàn có chốt neo bên trong.

    < A class= "a" href = "#11" >Giúp đỡ< BR >
    < TABLE cellpadding = "0" cellspacing = "0" border = "0" >
    < TR >
    < TD >< a href = "#12" >Làm cách nào để

    < TR >
    < TD >< a href = "#13" >Mục lục

    < TR >
    < TD >< a href = "#14" >Về

    Những gì được ẩn.

    div #menu .a bảng (
    không trưng bày;
    z - chỉ số :- 1 ;
    }

    Trình duyệt hiển thị nội dung của neo khi di chuột qua và áp dụng kiểu dáng phù hợp khi thực hiện như vậy:

    div #menu .a:hover (
    nền: #7DA6EE;
    đường viền: màu đen đặc 1px;
    màu đen; chỉ số z: 0;
    }

    Đối với bảng thả xuống mà chúng ta sử dụng cho menu con: đây là bảng khóa, là danh sách thả xuống.

    div #menu .a:bảng di chuột(
    nền: Trắng;
    hiển thị: khối;
    vị trí: tuyệt đối;
    chiều rộng: 125px; chỉ số z: 0;
    đường viền : 1px liền khối #708090;
    }

    Đối với các liên kết trong menu con:

    div #menu .a:di chuột bảng a (
    hiển thị: khối;
    màu đen;
    trang trí văn bản : không có ;

    }

    Nếu chúng ta di chuột qua một trong các liên kết trong menu con, trình duyệt sẽ áp dụng kiểu sau:

    Đối với các liên kết trong menu con:

    div #menu .a:hover bảng a:hover (
    hiển thị: khối;
    nền: #7DA6EE;
    màu đen;
    trang trí văn bản : không có ;
    phần đệm: 0px 11px;
    đường viền: màu đen đặc 1px; chỉ số z: 1000;
    khả năng hiển thị: có thể nhìn thấy;
    }

    Kiểu liên kết menu thả xuống:

    div #menu .a:di chuột bảng a (
    hiển thị: khối;
    màu đen;
    trang trí văn bản : không có ;
    phần đệm: 1px 12px; chỉ số z: 1000;
    }

    Bạn có thể nhận thấy rằng tôi đã sử dụng nhiều thuộc tính "z-index" trên một số phần tử. Chúng là những mẹo khắc phục một số vấn đề mà tôi phát hiện khi kiểm tra menu.

    Cải tiến

    Để thêm các cấp độ con vào menu thả xuống, bạn chỉ cần chèn một phần tử div ".menuitem" khác (cùng với nội dung và cấu trúc tương tự của nó) thay vì một liên kết trong bảng cha.
    Bây giờ bạn đã có các cấp độ phụ trong menu, bạn sẽ cần xóa các thẻ
    để đưa ra menu "trả phòng bình thường". Ngoài ra, bạn sẽ cần tạo nhiều bản sao của các lớp .menuitem và .a có cùng thuộc tính, nhưng tên khác nhau cho mỗi menu con.
    Có, có vẻ như có rất nhiều việc phải làm, NHƯNG bạn chỉ cần thêm bộ chọn của chúng vào phần thích hợp của biểu định kiểu.

    Mô tả đầy đủ Lần sau tôi sẽ làm như thế nào.
    Trong lúc chờ đợi, tôi sẽ nói rằng bạn có thể thay đổi menu này theo cách bạn muốn, điều chỉnh nó cho phù hợp với bạn. Và có vô số khả năng cho việc này - chỉ trí tưởng tượng của bạn mới có thể giới hạn chúng...

    Chuyển đổi phong cách (Skins)

    Nếu bạn muốn thêm giao diện cho menu của mình với khả năng người dùng thay đổi chúng, bạn sẽ cần thêm bảng bổ sung style và đặt tên cho chúng bằng id="some_name" (đối với IE) và với name="some_name" (đối với các trình duyệt khác). Để ngăn áp dụng cả hai kiểu, bạn cần tắt tất cả trừ kiểu mặc định bằng cách thêm tùy chọn "đã tắt" vào kiểu của thẻ (cho dù bạn liên kết nó hay sử dụng cú pháp tuyến tính). Mozilla và Opera cho phép bạn chuyển đổi các kiểu được đặt tên từ bên trong trình duyệt. Thông thường, các trình duyệt này không áp dụng tất cả các kiểu được xác định bởi name="..." và bỏ qua id="...". Họ cũng biết cách sử dụng name="default" làm biểu định kiểu mặc định và name="alternate" làm biểu định kiểu thay thế. Bạn có thể xác định tên kiểu mà người dùng sẽ xem là thuộc tính title="...". Ví dụ: menu demo trên trang này bao gồm các định nghĩa sau:

    < STYLE type = text / css id = "alternate" title = "Màu xanh da trời" name = "alternate" disabled >
    ...< STYLE >
    < STYLE type = text / css id = "default" title = "Mặc định" name = "default" >
    ...< STYLE >

    Hãy chú ý đến thứ tự đặt tên, tôi thực sự khuyên bạn nên tuân thủ nghiêm ngặt.

    IE không có tính năng chuyển đổi tích hợp Kiểu CSS, vì vậy chúng ta sẽ phải tự làm điều đó (không phải không sử dụng JavaScript):

    Chọn một trong các kiểu bằng cách nhấp vào kiểu thích hợp và quay lại để xem
    thay đổi:

    onclick = "document.styleSheets("default").disabled=false;document.styleSheets("alternate").disabled=true;" > Phong cách
    mặc định

    Onclick = "document.styleSheets("alternate").disabled=false;document.styleSheets("default").disabled=true;" > Màu xanh

    Onclick = "document.styleSheets("alternate").disabled=true;document.styleSheets("default").disabled=true;" > Không có
    phong cách

    Điều này được thực hiện như thế này:

    < ul >
    < li onclick = "document.styleSheets("default").disabled=false;
    document.styleSheets("alternate").disabled=true;" >
    < a >Mặc định

    < li onclick = "document.styleSheets("alternate").disabled=false;
    >
    < a >Màu xanh da trời

    < li onclick = "document.styleSheets("alternate").disabled=true;
    document.styleSheets("default").disabled=true;" >
    < a >Không có biểu định kiểu

    Cảnh báo! Đây chỉ là một ví dụ nhỏ!
    Tải lại trang sẽ đặt lại bảng định kiểu về mặc định. Do đó, vì mục đích thực tế, cần phải sử dụng cookie hoặc tập lệnh máy chủ để ghi nhớ các lựa chọn của người dùng, điều này một lần nữa không phải là chủ đề của bài viết này.
    Tôi sẽ chỉ nói thêm rằng đoạn mã trên sẽ chỉ hoạt động trong
    I E.

    Phần kết luận

    Tôi khuyên mọi người nên sử dụng menu trên Dựa trên CSS trên các trang web của bạn (và các ứng dụng web) vì bằng cách này bạn có thể tránh được nhiều vấn đề xuất hiện khi sử dụng menu trên Dựa trên JavaScript. Những vấn đề như vậy thường phát sinh khi các sự kiện được xử lý không chính xác trong IE. Hơn nữa, một số trình duyệt có khả năng vô hiệu hóa tập lệnh và hơn thế nữa, nhiều trình duyệt không hỗ trợ Microsoft JS.

    Nếu trình duyệt không hỗ trợ CSS thì ít nhất nó sẽ hiển thị tất cả các liên kết.

    Lỗi đã biết

    Theo mặc định, các liên kết trong menu con không hoạt động trong Mozilla. Nhưng tôi đã tìm thấy một giải pháp ít nhiều có thể chấp nhận được cho lỗi này. Nó dựa trên việc chèn menu đặc biệt, một lần nữa mà không sử dụng tập lệnh. Hãy xem xét cẩn thận những vị trí trong mã mà Mozilla (hoặc "moz") được đề cập. Bạn sẽ thấy rằng các phần HTML không có các neo lồng nhau (thẻ cuối cùng được đặt ở vị trí cần thiết). Trong phần đầu tiên của CSS, tôi sử dụng các bộ chọn không có giấy tờ - đây là bộ chọn đặc biệt cho Mozilla và thêm bộ chọn:hover cho những thứ đó phần tử div, được Mozilla hỗ trợ. Và sau đó, hành vi này vẫn không hoàn toàn chính xác.

    Có một lưu ý trong phần nhận xét (từ Nick Young) rằng menu không hoạt động trong Netscape. Tôi chắc chắn vấn đề ở đó cũng giống như ở Mozilla. Phải tìm kiếm Thông tin thêm về nó. Giải pháp có thể yêu cầu một số thay đổi vì mã thay thế cũng sẽ hoạt động tốt trong Netscape.

    Ghi chú:

    Trang này đã được thử nghiệm trên các phiên bản IE 5, 5.5, 6, Opera 7.23 và Mozilla 0.71. Rất có thể, menu sẽ hoạt động tốt hơn phiên bản trước các trình duyệt được chỉ định.

    Nhiều yêu cầu từ những độc giả kiên trì của tôi và những người dùng chỉ tò mò đã có tác dụng. Cuối cùng tôi đã tạo ra một bài học trong đó chúng ta sẽ học cách tạo menu VKontakte động bằng tác dụng của các nút nhấn! Bằng cách tương tự với các trang Internet thông thường, khi một liên kết đã truy cập được đánh dấu một cách đặc biệt(nút nhấn, gạch chân, v.v.) - chúng tôi sẽ tạo ra thiết kế tương tự trên VKontakte, sử dụng các trang và thiết kế đồ họa đã tạo. Để bắt đầu, chúng tôi sẽ tạo các mẫu đồ họa trong Photoshop - chúng tôi sẽ tạo tiêu đề menu và hai loại nút. Sau đó, chúng tôi sẽ tạo một số trang VKontakte, theo các mục trong menu của chúng tôi. Và cuối cùng chúng ta sẽ làm lừa, trên thực tế, điều này sẽ tạo cho chúng ta ảo tưởng là đang đi theo liên kết. Bài học khá phức tạp và phù hợp với những ai cảm thấy tin tưởng vào chức năng của Vkontakte. Tôi sẽ thực hiện tất cả các thao tác bằng cách sử dụng một ví dụ nhóm VKontakte của bạn, nơi hiệu ứng này được hiện thực hóa trực tiếp. Vì vậy, chúng ta hãy bắt tay vào làm việc!

    Bước 1. Tạo tiêu đề menu trong Photoshop
    Tạo một tài liệu trong Photoshop với chiều rộng 600 pixel. Chiều cao có thể khác nhau, theo ý của bạn. Bạn có thể đặt bất kỳ bức ảnh, ảnh ghép, biểu ngữ thông tin cụ thể nào và các hình ảnh đồ họa khác vào tiêu đề. Trong trường hợp này tôi đã sử dụng cái này biểu ngữ quảng cáo kích thước 600x172 pixel.

    Bước 2. Tạo thanh điều hướng trong Photoshop
    Bây giờ chúng ta cần tạo một thanh điều hướng. TRONG trong ví dụ này Tôi chỉ sử dụng văn bản làm nút. Nhưng theo ý mình, bạn có thể tạo các nút màu và viết chữ lên chúng. Chúng tôi thực hiện việc này - tạo một hình chữ nhật có kích thước 600x56 pixel trong Photoshop và trong trường hợp này tô nó với màu trắng. Sau đó, chúng tôi viết các mục menu trên dòng - khoảng 5-6 mục, không nhiều hơn. Số lượng lớn các mặt hàng sẽ trông bị ép.

    Bước 3. Tạo thanh điều hướng nhấn trong Photoshop
    Bây giờ chúng ta cần tạo các liên kết hoạt động, như thể chúng được nhấp vào. Tôi đã sử dụng gạch chân thông thường, nhưng bạn có thể sử dụng văn bản hoặc màu nền khác để đánh dấu liên kết đã truy cập.

    Bước 4. Cắt ảnh làm sẵn
    Ở giai đoạn này, chúng ta cần cắt các hình ảnh từ Bước 2 và Bước 3. Chúng ta nên có hai bộ năm nút, mỗi bộ - một nút không có gạch chân, nút còn lại có gạch chân. Các nút bấm cho từng mục riêng lẻ (có gạch chân và không gạch chân) phải được cùng cỡ. Hình ảnh dưới đây cho thấy tất cả của chúng tôi thiết kế đồ họa- mười nút và một tiêu đề menu.

    Bước 5. Tạo trang Menu VKontakte
    Bây giờ chúng ta hãy đến VKontakte. Nhiệm vụ của chúng ta là tạo ra trang riêngđược gọi là "Thực đơn". Để làm điều này, chúng tôi sẽ sử dụng đoạn mã sau
    http://vk.com/pages?oid=-XXX&p=Page_Name
    trong đó thay vì XXX, chúng tôi sẽ thay thế id của nhóm mình và thay vì văn bản “Tên trang”, chúng tôi sẽ viết Menu. Bây giờ chúng ta cần tìm ra id nhóm. Làm thế nào để làm nó? Chúng ta hãy đi đến trang chủ nhóm và xem các bài đăng của chúng tôi trên tường - ngay dưới khối “Thêm bài đăng”, nó sẽ ghi “Tất cả các bài đăng” – nhấp vào liên kết này.

    Bước 6. Xác định id nhóm và chỉnh sửa mã
    Chúng ta vào trang và thấy một URL như thế này https://vk.com/wall-78320145?own=1, trong đó các số 78320145 trong ví dụ này là id nhóm. Chúng tôi thay thế dữ liệu của mình thành nguồn và chúng tôi nhận được một bản ghi như thế này:
    http://vk.com/pages?oid=-78320145&p=Menu(với số của bạn!). Dán dòng này vào thanh địa chỉ trình duyệt và nhấn Enter. Đây là cách chúng tôi tạo ra trang mới VKontakte và ban đầu nó trông như thế này.

    Bước 7. Tạo các trang điều hướng VKontakte còn lại
    Theo cách tương tự, chúng tôi tạo thêm bốn trang điều hướng: Giá cả, Cách đặt hàng, Thông số kỹ thuật và Câu hỏi. Nghĩa là, chúng tôi sao chép mã tương ứng bốn lần nữa vào thanh địa chỉ của trình duyệt (với số id của bạn trong ví dụ bên dưới, số của tôi):

    http://vk.com/pages?oid=-78320145&p=Prices

    http://vk.com/pages?oid=-78320145&p=How_để đặt hàng

    http://vk.com/pages?oid=-78320145&p=Thông số kỹ thuật

    http://vk.com/pages?oid=-78320145&p=Questions
    Xin lưu ý rằng trong tiêu đề trang gồm hai từ (Cách đặt hàng), khoảng cách giữa các từ được thay thế bằng thứ tự How_to gạch dưới. Bây giờ chúng tôi có năm trang làm sẵn cho mỗi mục menu. Chúng tôi không tạo trang Portfolio vì nó nằm trên trang Menu

    Bước 8. Tải ảnh lên trang đầu tiên của menu
    Trên cái đã tạo, chưa Trang trống(xem Bước 6) Menu nhấp vào liên kết Chỉnh sửa hoặc liên kết Điền nội dung. Sau này chúng ta thấy bảng chỉnh sửa. Ở đây chúng ta cần nhấn vào biểu tượng camera có chức năng Tải ảnh lên. Quan trọng! Hãy đảm bảo rằng bạn đang ở chế độ đánh dấu wiki. Việc chuyển đổi chế độ được điều chỉnh bằng biểu tượng ở cạnh phải của trang.

    Bước 9. Kết quả sau khi tải ảnh
    Chúng tôi tải các hình ảnh mà chúng tôi đã tạo ở Bước 1 và Bước 2. Sau khi tải, chúng tôi thấy mã như trong hình bên dưới và bản thân menu trông như thế này. Sau mỗi lần đổi mã, đừng quên nhấn Lưu trang rồi nhấn Xem trước để xem kết quả.

    Bước 10. Chỉnh sửa mã hình ảnh
    Bây giờ nhiệm vụ của chúng ta là thay thế tất cả thuộc tính noborder bằng thuộc tính nopadding. Và đặt bức ảnh đầu tiên kích thước thực tế, vì VKontakte đã nén hình ảnh xuống 400 pixel khi tải lên. Sau tất cả những thay đổi, chúng ta sẽ nhận được mã và menu sau.

    Bước 11. Thêm liên kết vào hình ảnh
    Bây giờ chúng ta cần đặt link cho từng bức ảnh. Liên kết phải được chèn sau khi nopadding| thay vì khoảng trắng trước dấu ngoặc đơn đóng. Đối với hình ảnh đầu tiên (tiêu đề menu từ Bước 1), bạn có thể cung cấp liên kết đến trang chính của nhóm hoặc bạn có thể sử dụng thuộc tính nolink (đặt xuyên suốt; sau khi không có khoảng đệm). Đối với thẻ thứ 2 điền địa chỉ trang định dạng trang-78320145_49821289. Nghĩa là, URL đầy đủ của hình ảnh https://vk.com/page-78320145_49821289, phần đầu tiên có tên miền có thể được bỏ qua. Nhưng đối với các liên kết đến các trang bên ngoài thì URL của liên kết phải được chỉ định đầy đủ.

    Bước 12. Copy mã vào các trang điều hướng còn lại
    Thế là đủ rồi bước đơn giản, chúng tôi sao chép mã mới nhất từ bước trước và dán vào các trang đã tạo còn lại - Giá cả, Cách đặt hàng, Điều khoản tham chiếu và Câu hỏi. Chúng tôi đang ở trên trang, nhấp vào Chỉnh sửa hoặc Điền nội dung (chúng tôi đang ở chế độ đánh dấu wiki), dán mã và nhấp vào Lưu. Và sau đó cũng trên Trang tiếp theo. Tức là bây giờ chúng tôi có năm trang, trên mỗi trang có menu trông giống hệt nhau. Nhưng bạn đã có thể điều hướng qua menu - khi bạn nhấp vào một liên kết, chẳng hạn như Giá, chúng tôi sẽ được chuyển đến trang Giá, v.v.

    Bước 13. Tạo hiệu ứng nhấn nút
    Bây giờ chúng ta phải thay đổi một hình ảnh trên mỗi trang trong số năm trang (thay nút không có gạch chân bằng nút có gạch chân). Ví dụ: ở trang đầu tiên của Menu chúng ta tải một hình ảnh mới rồi thay thế địa chỉ trong mã Hình cũ sang một cái mới (gạch chân màu đỏ). Sau đó vào trang Giá, tải lên hình ảnh có Giá được gạch chân và thay đổi địa chỉ trong mã bức tranh mới. Sau đó chúng ta đi đến các trang Cách đặt hàng, Điều khoản tham chiếu và Câu hỏi và thực hiện thao tác tương tự theo cách tương tự.

    Trận chung kết.
    Kết quả là chúng tôi nhận được hiệu ứng điều hướng khi bạn nhấp vào liên kết menu và nó sẽ hoạt động. Nhưng vì thiết kế đồ họa trên tất cả các trang gần như giống nhau, ngoại trừ liên kết hoạt động, ảo giác điều hướng được tạo ra, mặc dù trên thực tế nó đang chuyển sang một trang khác.

    Menu được thiết kế theo cách này không phù hợp với thiêt bị di động. Khi kích thước màn hình giảm, các hình ảnh bắt đầu trượt xuống dưới hình kia. Để làm thiết kế thích ứng, bạn cần sử dụng bảng cho phiên bản cứng. Nhưng đây là một câu chuyện khác và một kỹ thuật tiên tiến hơn. Trong lúc đó, hãy nhìn vào Các tùy chọn khác nhau thiết kế đồ họa của menu.