Làm cách nào để thiết kế đường dẫn trong CSS? Breadcrumbs trong thiết kế web: ứng dụng và ví dụ Thiết kế breadcrumbs
Trên các trang web có nhiều trang, đường dẫn ( điều hướng đường dẫn) có thể giúp ích rất nhiều cho khách truy cập điều hướng cấu trúc phân cấp của tài liệu và cho biết vị trí hiện tại của người dùng trên trang web. Từ góc độ khả năng sử dụng, đường dẫn có thể giảm số bước mà khách truy cập phải thực hiện để tìm đường lên cấp cao nhất của trang.
Breadcrumb là gì?
vụn bánh mì (Chức năng điều hướng, "Mẩu bánh mì", Tiếng Anh vụn bánh mì) - một thành phần điều hướng trang web, thể hiện đường dẫn xuyên qua trang web từ “gốc” của nó đến trang hiện tại mà người dùng đang ở.
Tựa đề "Breadcrumbs" là một sự ám chỉ mỉa mai đến câu chuyện cổ tích Đức "Hansel và Gretel", trong đó những đứa trẻ khi bị dẫn vào rừng lần thứ hai đã không thể tìm được đường quay về vì lần này thay vào đó là những viên sỏi nhỏ. họ để lại những mẩu vụn bánh mì, sau đó bị chim rừng mổ.
Bạn thường có thể xem đường dẫn trên các trang web có nhiều nội dung được sắp xếp theo thứ bậc. Hình thức đơn giản nhất là khi breadcrumb được trình bày dưới dạng các liên kết văn bản nằm ngang và các ký hiệu phân tách (> -"lớn hơn") cho biết mức độ của trang đó so với các trang khác.
Khi nào bạn nên sử dụng Breadcrumbs?
Sử dụng đường dẫn breadcrumb dành cho các website lớn và website có tổ chức trang phân cấp.
Không nên sử dụng đường dẫn cho các trang web cấp đơn không có bất kỳ phân cấp hoặc nhóm logic nào.
Một cách tuyệt vời để xác định liệu một trang web có được hưởng lợi từ việc sử dụng đường dẫn hay không là xây dựng sơ đồ hoặc sơ đồ trang web thể hiện kiến trúc điều hướng của trang web, sau đó phân tích xem đường dẫn có cho phép người dùng dễ dàng điều hướng trong và giữa các danh mục hay không.
Điều hướng phân cấp nên được coi là một tính năng bổ sung và không nên thay thế menu điều hướng chính hiệu quả. Đây là sơ đồ điều hướng phụ cho phép người dùng xác định vị trí của họ và là một cách khác để điều hướng trang web.
Các loại Breadcrumb
Có ba chínhloại "mẩu bánh mì".
Dựa trên vị trí
Đường dẫn dựa trên vị trí hiển thị cho người dùng vị trí của họ trong hệ thống phân cấp trang web.Chúng thường được sử dụng cho các cấu trúc điều hướng có nhiều cấp độ (thường là nhiều hơn hai cấp độ).Trong ví dụ dưới đây (từSitePoint ), mỗi liên kết văn bản của trang nằm ở bên trái sẽ cao hơn một cấp.
Dựa trên thuộc tính
Đường dẫn dựa trên thuộc tính phản ánh các thuộc tính của một trang cụ thể.
Dựa trên đường dẫn
Chúng hiển thị đường dẫn người dùng đã đi để đến trang hiện tại. Đường dẫn này là động. Cùng một trang có thể có các địa chỉ khác nhau.
Lợi ích của việc sử dụng Breadcrumb
Chúng có thể giúp người dùng
Breadcrumbs được sử dụng chủ yếu để cung cấp cho người dùng một phương tiện bổ sung để điều hướng một trang web.Trên các trang web lớn, đa cấp, việc cung cấp hình ảnh trực quan về đường đi có thể giúp người dùng điều hướng đến các danh mục cấp cao hơn một cách khá dễ dàng.
Giảm số lần nhấp chuột hoặc hành động để quay lại các trang cấp cao hơn
Thay vì sử dụng nút quay lại của trình duyệt hoặc điều hướng chính của trang web, người dùng có thể điều hướng quay lại các danh mục hàng đầu bằng cách sử dụng đường dẫn với ít lần nhấp chuột hơn.
Nói chung không làm tắc màn hình
Chúng thường có hướng nằm ngang và do đó không chiếm nhiều không gian trên trang.
Giảm tỷ lệ thoát
Breadcrumbs có thể lôi kéo khách truy cập mới duyệt phần còn lại của trang web của bạn. Ví dụ: người dùng truy cập một trang thông qua tìm kiếm trên Google, xem các danh mục được đăng ở trên và có thể quan tâm. Điều này, đến lượt nó, làm giảm tỷ lệ thoát của trang web.
Lỗi khi sử dụng Breadcrumbs
Sử dụng breadcrumbs khá đơn giản. Nhưng trước khi triển khai chúng trên trang web của mình, bạn cần xem xét một số sai lầm mà bạn nên tránh.
Sử dụng breadcrumb khi không cần thiết
Một sai lầm phổ biến là sử dụng breadcrumbs khi làm như vậy không mang lại lợi ích gì.
Trong ví dụ trên, chúng ta có thể thấy có quá nhiều tùy chọn điều hướng được đặt khá gần nhau: điều hướng chính, đường dẫn và điều hướng phụ.
Sử dụng đường dẫn làm điều hướng chính của bạn
Như đã lưu ý trước đó, đường dẫn nên được sử dụng như một công cụ hỗ trợ điều hướng bổ sung.
Sử dụng đường dẫn khi trang có nhiều danh mục
Breadcrumbs có cấu trúc tuyến tính nên sẽ khó sử dụng nếu trang của bạn không thể chia thành các danh mục rõ ràng.Việc quyết định có nên sử dụng đường dẫn hay không phụ thuộc phần lớn vào cách bạn đã tạo hệ thống phân cấp trang web của mình.Ở cấp độ trang thấp, việc sử dụng đường dẫn không hiệu quả, không chính xác và gây nhầm lẫn cho người dùng.
Thiết kế đường dẫn
Khi phát triển đường dẫn, một số câu hỏi có thể phát sinh. Ví dụ:
Ký hiệu nào nên được sử dụng để phân tách các liên kết?
Ký hiệu phổ biến và dễ nhận biết nhất để phân tách các siêu liên kết trong đường dẫn là ký hiệu lớn hơn - (>).
Bạn cũng có thể sử dụng dấu ngoặc kép để biểu thị góc bên phải (") và dấu gạch chéo lên (/).
Sự lựa chọn phụ thuộc vào chính trang web và loại chuỗi bạn sử dụng.Ví dụ: nếu các liên kết trong đường dẫn không có mối quan hệ phân cấp với nhau thì việc sử dụng ký hiệu lớn hơn > có thể không truyền tải chính xác bản chất của chúng.
Họ nên là gì?
Bạn không muốn đường dẫn của bạn chiếm ưu thế trên trang.Chúng nên được sử dụng như một công cụ hỗ trợ bổ sung cho người dùng (để thuận tiện), vì vậy kích thước của chúng cũng phải phù hợp với điều này và truyền tải chức năng này đến người dùng một cách chính xác - chúng phải nhỏ hơn hoặc ít được chú ý hơn so với điều hướng menu chính.
Một nguyên tắc nhỏ khi xác định quãng đường di chuyển là nókhông nên là yếu tố đầu tiên thu hút sự chú ý của người dùng trên trang.
Breadcrumbs nên được đặt ở đâu?
Breadcrumbs thường xuất hiện ở đầu trang, bên dưới menu điều hướng chính, nếu sử dụng menu ngang.
Số liệu thống kê
Dưới đây là số liệu thống kê được thu thập vào tháng 5 năm 2002 trên 75 trang thương mại điện tử hàng đầu.
Định hướng chuỗi
95% - ngang
5% theo chiều dọc
Dấu phân cách giữa các phần tử (đối với chuỗi ngang)
Ví dụ về việc sử dụng breadcrumbs trong thiết kế web
Bây giờ chúng ta đã xem ai, như thế nào, khi nào và tại sao mọi người sử dụng đường dẫn, chúng ta có thể xem một số ví dụ về cách chúng được sử dụng trên các trang web.
Cách sử dụng breadcrumbs cổ điển
Sử dụng các ký hiệu khác
Điều hướng Breadcrumb giúp khách truy cập trang web điều hướng cấu trúc phân cấp của tài liệu và tìm đường đến cấp cao nhất. Do đó, nếu trang web chứa một số lượng lớn tài liệu thì nó phải được cung cấp “mẩu bánh mì”. Bài học này sẽ trình bày mã CSS để tạo các tùy chọn thiết kế khác nhau cho một công cụ điều hướng cần thiết như vậy.
đánh dấu HTML
Việc đánh dấu rất đơn giản và tối thiểu. Nó dựa trên một danh sách không có thứ tự.
CSS
Trước tiên, hãy thiết lập lại CSS một chút cho danh sách không có thứ tự của chúng ta:
Ul(lề: 0; phần đệm: 0; kiểu danh sách: không có; )
Chúng tôi sẽ sử dụng các phần tử giả để thiết kế đường dẫn của mình.
Ví dụ đầu tiên
Ví dụ này sử dụng một kỹ thuật rất đơn giản. Một hình tam giác được tạo trên khung bên phải bằng cách sử dụng các phần tử giả được đặt chồng lên nhau. Hình tam giác tối được bù đắp để tạo hiệu ứng khung.
#breadcrumbs-one( nền: #eee; độ rộng đường viền: 1px; kiểu đường viền: rắn; màu đường viền: #f5f5f5 #e5e5e5 #ccc; bán kính đường viền: 5px; bóng hộp: 0 0 2px rgba(0, 0,0,.2); tràn: ẩn; chiều rộng: 100%; ) #breadcrumbs-one li( float: left; ) #breadcrumbs-one a( đệm: .7em 1em .7em 2em; float: left; text- trang trí: không có; màu: #444; vị trí: tương đối; bóng văn bản: 0 1px 0 rgba(255,255,255,.5); màu nền: #ddd; hình nền: gradient tuyến tính(sang phải, #f5f5f5, # ddd); ) #breadcrumbs-one li:first-child a( đệm-trái: 1em; bán kính đường viền: 5px 0 0 5px; ) #breadcrumbs-one a:hover( nền: #fff; ) #breadcrumbs-one a ::after, #breadcrumbs-one a::trước( nội dung: ""; vị trí: tuyệt đối; trên cùng: 50%; lề trên: -1,5em; viền trên: 1,5em trong suốt; viền dưới: 1,5em rắn trong suốt; viền-trái: 1em rắn; phải: -1em; ) #breadcrumbs-one a::after( z-index: 2; border-left-color: #ddd; ) #breadcrumbs-one a::trước( viền-trái-màu: #ccc;phải: -1.1em; chỉ số z: 1; ) #breadcrumbs-one a:hover::after( border-left-color: #fff; ) #breadcrumbs-one .current, #breadcrumbs-one .current:hover( font-weight: đậm; nền: none; ) # breadcrumbs-one .current::after, #breadcrumbs-one .current::trước( nội dung: bình thường; )
Hình dạng CSS được xây dựng bằng cách sử dụng các phần tử giả được đặt trước và sau một phần tử.
#breadcrumbs-two( tràn: ẩn; chiều rộng: 100%; ) #breadcrumbs-two li( float: left; lề: 0 .5em 0 1em; ) #breadcrumbs-two a( nền: #ddd; phần đệm: .7em 1em ; float: trái; trang trí văn bản: không có; màu: #444; bóng văn bản: 0 1px 0 rgba(255,255,255,.5); vị trí: tương đối; ) #breadcrumbs-two a:hover( nền: #99db76; ) #breadcrumbs-two a::trước(nội dung: ""; vị trí: tuyệt đối; trên cùng: 50%; lề trên: -1,5em; chiều rộng đường viền: 1,5em 0 1,5em 1em; kiểu đường viền: liền khối; đường viền- color: #ddd #ddd #ddd trong suốt; trái: -1em; ) #breadcrumbs-two a:hover::trước( border-color: #99db76 #99db76 #99db76 trong suốt; ) #breadcrumbs-two a::after( nội dung : ""; vị trí: tuyệt đối; trên cùng: 50%; lề-trên: -1,5em; viền-trên: 1,5em khối trong suốt; viền-dưới: 1,5em khối trong suốt; viền-trái: 1em khối #ddd; phải: -1em; ) #breadcrumbs-two a:hover::after( border-left-color: #99db76; ) #breadcrumbs-two .current, #breadcrumbs-two .current:hover( font-weight: đậm; lý lịch: không có; ) #breadcrumbs-two .current::after, #breadcrumbs-two .current::trước( content: normal; )
Thuộc tính bán kính đường viền làm tròn các góc của hình chữ nhật và hình vuông. Hình vuông được xoay để tạo thành một viên kim cương.
#breadcrumbs-ba( tràn: ẩn; chiều rộng: 100%; ) #breadcrumbs-ba li( float: left; lề: 0 2em 0 0; ) #breadcrumbs-ba a( đệm: .7em 1em .7em 2em; float: trái; trang trí văn bản: không có; màu: #444; nền: #ddd; vị trí: tương đối; chỉ mục z: 1; bóng văn bản: 0 1px 0 rgba(255,255,255,.5); bán kính đường viền: .4em 0 0 .4em; ) #breadcrumbs-ba a:hover( nền: #abe0ef; ) #breadcrumbs-ba a::after( nền: #ddd; nội dung: ""; chiều cao: 2,5em; lề trên: -1,25em ; vị trí: tuyệt đối; bên phải: -1em; trên cùng: 50%; chiều rộng: 2,5em; chỉ số z: -1; biến đổi: xoay(45deg); bán kính đường viền: .4em; ) #breadcrumbs-ba a:hover: :after( nền: #abe0ef; ) #breadcrumbs-ba .current, #breadcrumbs-ba .current:hover( font-weight: đậm; nền: none; ) #breadcrumbs-ba .current::after( nội dung: bình thường; )
Sử dụng các phần tử giả, hai hình chữ nhật được thêm vào. Sau đó, họ làm tròn các góc.
#breadcrumbs-four( tràn: ẩn; chiều rộng: 100%; ) #breadcrumbs-four li( float: left; lề: 0 .5em 0 1em; ) #breadcrumbs-four a( nền: #ddd; phần đệm: .7em 1em ; float: trái; trang trí văn bản: không có; màu: #444; bóng văn bản: 0 1px 0 rgba(255,255,255,.5); vị trí: tương đối; ) #breadcrumbs-four a:hover( nền: #efc9ab; ) #breadcrumbs-four a::trước, #breadcrumbs-four a::after( nội dung:""; vị trí:tuyệt đối; trên cùng: 0; dưới cùng: 0; chiều rộng: 1em; nền: #ddd; biến đổi: skew(-10deg ); ) #breadcrumbs-four a::trước( left: -.5em; border-radius: 5px 0 0 5px; ) #breadcrumbs-four a:hover::Before( nền: #efc9ab; ) #breadcrumbs-four a ::after( right: -.5em; border-radius: 0 5px 5px 0; ) #breadcrumbs-four a:hover::after( nền: #efc9ab; ) #breadcrumbs-four .current, #breadcrumbs-four .current :hover( font-weight: đậm; nền: không có; ) #breadcrumbs-four .current::after, #breadcrumbs-four .current::trước( nội dung: bình thường; )
Lợi ích của thiết kế Breadcrumb CSS3
- Không có hình ảnh nên dễ dàng cập nhật và bảo trì.
- Dễ dàng mở rộng.
- Tương thích ngược với các trình duyệt cũ hơn.
Danh sách rất thuận tiện do cấu trúc phân cấp và cài đặt chế độ xem linh hoạt, vì vậy chúng không chỉ được sử dụng cho mục đích đã định mà còn để tạo các thành phần trang khác nhau như đường dẫn, đánh số trang, menu, tab, v.v.
vụn bánh mì
Đường dẫn giúp bạn điều hướng trang web và hiển thị vị trí của trang hiện tại so với các phần khác của trang web. Điều này giúp bạn dễ dàng thăng cấp và hiểu được mình đang ở phần nào. Vì vậy, đối với một trang web kỹ thuật, việc điều hướng có thể như sau (Hình 1).
Cơm. 1. Loại bánh mì vụn
Văn bản cuối cùng trỏ đến trang hiện tại và không phải là một liên kết. Tất cả các mục được phân tách với nhau bằng một số ký hiệu, thường là mũi tên (→), dấu gạch chéo (/), dấu lớn hơn (>) và những thứ tương tự.
Vì thiết kế được giao phó cho các kiểu dáng nên mã HTML rất ngắn gọn. Chúng tôi tạo một danh sách và gán cho nó lớp breadcrumbs để kiểu này không mở rộng sang các danh sách khác.
Lưu ý rằng không có dấu phân cách ở đây; chúng được hiển thị bằng thuộc tính kiểu nội dung (ví dụ 1).
Ví dụ 1: Tạo Breadcrumb
Để bắt đầu, chúng ta đặt lại tất cả lề và phần đệm của danh sách, đồng thời sắp xếp các mục theo chiều ngang bằng cách sử dụng thuộc tính display có giá trị inline-block . Nó cũng loại bỏ các điểm đánh dấu, vì vậy không cần phải cố ý làm điều này. Phần tử giả ::Before được yêu cầu để thêm dấu phân cách giữa các mục và kiểm soát sự xuất hiện của nó. Văn bản được thêm vào tất cả các điểm, bao gồm cả điểm đầu tiên, tất nhiên là chúng tôi không cần. Do đó, chúng tôi loại bỏ nó bằng cách sử dụng lớp giả :first-child, lớp này áp dụng kiểu cho phần tử đầu tiên
Một lượng lớn tài liệu, chẳng hạn như các bài viết trên trang web, thường được chia thành các trang riêng biệt, mỗi trang 10-15 bài, điều này dẫn đến việc giảm tải trang. Việc chuyển đổi giữa các trang riêng lẻ được thực hiện thông qua việc đánh số của chúng, trong đó mỗi số đóng vai trò là một liên kết đến trang tương ứng. Có thể hiển thị tất cả các trang, một số trang nhất định hoặc chỉ liên kết đến trang tiếp theo và trang trước. Tùy chọn nào để chọn tùy thuộc vào thiết kế trang web và sở thích của bạn. Một trong những phương pháp đánh số có thể được hiển thị trong Hình. 2.
Cơm. 2. Đánh số trang
Để thực hiện việc đánh số này, chúng ta lại sử dụng một danh sách đơn giản, bây giờ với lớp pager, mỗi mục trong danh sách này sẽ là một liên kết đến trang. Để đánh dấu trang hiện tại, hãy thêm lớp đang hoạt động (ví dụ 2).
Ví dụ 2: Đánh số trang
- 1
- 2
- 3
- 4
- 5
- 6
Đường giữa các điểm được tạo thông qua thuộc tính border-bottom cho phần tử
- . Bởi vì
- Và (ví dụ 3). Chúng vừa khít với nhau và tạo hiệu ứng như một dải duy nhất.
Ví dụ 3. Menu ngang
Thực đơn Độ dốc trong ví dụ này được thêm bằng hàm gradient tuyến tính và bóng được thêm bằng thuộc tính box-shadow.
Trình đơn thả xuống
Một loại menu phức tạp hơn được gọi là menu thả xuống. Khi bạn di con trỏ qua các mục, một menu con sẽ xuất hiện, trước đây không nhìn thấy được (Hình 4); Ngay khi con trỏ rời khỏi văn bản, menu sẽ ẩn lại.
Cơm. 4. Chế độ xem menu thả xuống
Loại menu này khá phức tạp trong cách bố trí, vì vậy hãy xem xét nó chi tiết hơn. Đầu tiên, chúng ta tạo một danh sách lồng nhau - các mục của danh sách đầu tiên đóng vai trò là văn bản của menu chính, danh sách thứ hai nằm bên trong phần tử
- sẽ phục vụ như một menu phụ. Nếu không cần menu con thì chỉ để lại một phần tử
- , MỘT
- Chúng tôi không thêm nó vào nó. Cấu trúc của từng mục như sau.
- Nhà bếp kiểu Nga
- Thịt bò Stroganoff
- Ngỗng với táo
- Krupenik Novgorod
- Tôm càng xanh bằng tiếng Nga
- để đặt kiểu cho các mục menu cấp một và cấp hai. Nếu bạn chỉ cần chỉ định bộ chọn li, kiểu này sẽ được áp dụng cho tất cả các mục nói chung. Vì vậy, chúng tôi sử dụng bộ chọn .menu > li, nó chỉ áp dụng kiểu cho các phần tử
- cấp độ đầu tiên. Do đó, phong cách cho menu ngang của chúng tôi thay đổi một chút.
/* Không thụt lề và xóa điểm đánh dấu khỏi danh sách */ .menu, .menu ul ( list-style: none; lề: 0; đệm: 0; ) .menu ( nền: tuyến tính-gradient(xuống dưới, #fff, #f1f2f2 ); /* Độ dốc */ đường viền: 1px Solid #999; /* Tùy chọn đường viền */ đệm: 0 5px; /* Lề */ phông chữ: 14px Arial, sans-serif; /* Tùy chọn phông chữ */ box-shadow: 0 2px 5px rgba(0,0,0,0.2); /* Bóng dưới menu */ ) .menu > li ( display: inline-block; /* Căn chỉnh theo chiều ngang */ border-right: 1px Solid #fff; /* Dòng trắng bên phải */ vị trí: tương đối; /* Định vị tương đối */ ) .menu a ( text-trang trí: none; /* Xóa phần gạch chân */ color: #4c4c4c; /* Màu liên kết */ display: block; /* Chặn liên kết */ ) .menu > li > a ( đệm: 10px 15px; /* Lề */ border-right: 1px Solid #d8d8d8; /* Đường màu xám ở bên phải */ vị trí: tương đối; /* Định vị tương đối */ z-index : 3; /* Hiển thị trên các phần tử khác */ ) .menu ul ( display: none; /* Ẩn menu con */ )
Chúng ta ẩn menu con thông qua thuộc tính display; kết quả là menu sẽ trông giống như trong Hình 2. 3. Việc đặt lại các giá trị cho danh sách cũng đã được thêm vào, điều này sẽ hữu ích cho chúng ta khi thêm các mục con, cộng với việc liên quan đến vị trí tương đối, nếu không có nó thì chỉ mục z sẽ không hoạt động. Và chúng ta cần nó để xếp lớp một cách chính xác một số phần tử lên trên các phần tử khác.
Bạn có thể tạm thời bật hiển thị các menu con và tùy chỉnh giao diện của chúng.
Menu ul ( vị trí: tuyệt đối; /* Định vị tuyệt đối */ hiển thị: không có; /* Ẩn menu con */ chiều rộng: 200px; /* Chiều rộng menu con */ nền: #fff; /* Màu nền */ box-shadow: 0 0 10px #666; /* Tùy chọn bóng */ ) .menu ul a ( đệm: 5px 10px; /* Lề */ ) .menu ul a:hover ( nền: #008df2; /* Màu nền */ màu: #fff ; /* Văn bản màu */ )
Tất cả những gì còn lại là hiển thị menu con khi bạn di chuột qua các mục menu. Để làm điều này, chúng ta sử dụng lớp giả :hover, thêm nó vào li.
Menu li:hover ul ( display: block; )
Bộ chọn này cho biết kiểu này sẽ được áp dụng cho phần tử
- , trong trường hợp này, chỉ hiển thị nó khi con trỏ chuột ở trên phần tử
- bên trong một thùng chứa có một lớp menu.
Sau này, menu của chúng tôi sẽ hoạt động và hiển thị các menu con nơi nó tồn tại. Những nét trang trí cuối cùng vẫn liên quan đến bóng tối và ứng dụng chính xác của chúng. Để hiển thị chính xác bóng dưới các mục menu cấp một, hãy tạo một phần tử giả trống bằng cách sử dụng ::trước, đặt bóng cho nó và đặt nó dưới liên kết (đây là chỉ mục z cho và có ích).
Menu > li:hover::Before ( content: ""; /* Tạo một phần tử giả trống */ top: 0; left: 0; right: 0; Bottom: 0; /* Kích thước khớp với mục menu */ hộp -shadow: 0 5px 10px #666; /* Tham số bóng */ vị trí: tuyệt đối; /* Định vị tuyệt đối */ )
Mã cuối cùng được thể hiện trong Ví dụ 4.
Ví dụ 4: Menu thả xuống
Thực đơn Bài viết trước, “Điều hướng đường dẫn bằng hình tam giác trong CSS,” đã mô tả cách tạo menu bằng CSS thuần túy, không sử dụng đồ họa.
Phương pháp này tốt cho tất cả mọi người, ngoại trừ một điều - việc hỗ trợ menu như vậy trong các trình duyệt cũ hơn là điều đáng nghi ngờ. Nhưng khi dịch bài viết này có đề cập đến một cách tạo điều hướng bằng đồ họa.
Bài viết đã được viết cách đây khá lâu nhưng phương pháp này hoàn toàn hiệu quả. Tác giả của bài viết là Veerle Pieters và bản thân bài đăng này có tên là “Mẩu bánh mì dựa trên CSS có thể mở rộng đơn giản”. Dưới đây tôi thậm chí không cung cấp bản dịch miễn phí của nó mà là bản kể lại miễn phí.
Vài ngày trước, tôi được giao nhiệm vụ tạo menu điều hướng kiểu đường dẫn cho trang web mà tôi đang làm việc. Tôi không nghĩ một menu như vậy là cần thiết cho mọi trang web, nhưng trong một số trường hợp, nó rất hữu ích và thiết thực.
Tuy nhiên, ví dụ này giống như một cơ sở có thể mở rộng và áp dụng vào thực tế. Menu sẽ được tạo bằng danh sách có dấu đầu dòng thông thường
.1 ul Nhưng trước tiên, hãy xem mẫu chúng ta sẽ làm việc với:
Menu khá đơn giản, cũng như đoạn mã mà chúng ta sẽ tạo nó.
Mã HTML - danh sách dấu đầu dòng ul
- Trang chủ
- Phần chính
- Tiểu mục
- Tiểu mục phụ
- Trang bạn đang truy cập hiện tại
Tất cả các mục menu đều có liên kết, ngoại trừ mục cuối cùng - “Trang bạn đang truy cập ngay bây giờ”. Khi làm việc trên menu, tôi tự hỏi - liệu danh sách có phải là cấu trúc phù hợp nhất để tạo menu không? Tôi tin rằng việc sử dụng danh sách trong trường hợp này không phải là một quy tắc nghiêm ngặt, nhưng đối với tôi, có vẻ như đây là lựa chọn đúng ngữ nghĩa và chính xác nhất.
Mã CSS - tạo kiểu cho menu
Chúng tôi đặt kiểu chung cho menu - xóa điểm đánh dấu và đặt lại thụt lề trong trình duyệt Firefox, IE:
Chúng tôi làm cho chúng nổi qua một thuộc tính bằng chiều cao của toàn bộ menu - . Và đặt màu văn bản. Tiếp theo, chúng ta đặt ảnh nền cắt ra từ bố cục cho liên kết. Để làm điều này, bạn chỉ cần cắt bỏ "mũi tên":... mà chúng tôi “đẩy” sang bên phải (100%) và đặt chính xác theo chiều dọc (50%). Chúng tôi cũng thụt lề liên kết bên phải
, sẽ chứa hình nền (mũi tên cắt bỏ): .crumbs li a ( display : block ; phần đệm : 0 15px 0 0 ; nền : url(img/crumbs.gif) 100% 50% không lặp lại ; )1 phần đệm bên trái: 15px Hầu như mọi thứ đã được thực hiện. Tất cả những gì còn lại là đặt kiểu cho văn bản liên kết. Hãy xóa phần gạch chân tiêu chuẩn và thay đổi màu của nó:
.crumbs li a :link , .crumbs li a :visited ( text-trang trí : none ; color : #777 ; )
Và1 :bay lượn
. Khi di con trỏ chuột hoặc nhận tiêu điểm bàn phím, màu của văn bản liên kết sẽ thay đổi: .crumbs li a :hover , .crumbs li a :focus ( color : #dd2c0d ; )1 :tập trung Kết quả công việc của chúng tôi được trình bày ở đây:
Ghi chú của người dịch:
Tác giả bài viết đã đơn giản hóa ví dụ và bản thân mã nhiều nhất có thể, theo như tôi hiểu. Thực tế là ví dụ này hiển thị rõ ràng độ dốc ngang tuyến tính cho từng mục menu. Tuy nhiên, điều này không được phản ánh trong bất kỳ cách nào trong mã. Chà, không vấn đề gì - việc tạo gradient tuyến tính trong CSS3 có thực sự là vấn đề không? Nhiệm vụ đã hoàn thành!
Nhờ sự phát triển của CSS và CSS3 trong những năm qua, chúng tôi đã đạt đến điểm mà nhiều giải pháp phần mềm cũ hơn bao gồm hình nền giờ đây có thể được tạo hoàn toàn bằng CSS. Trong hướng dẫn này, chúng ta sẽ xem xét việc tạo một chuỗi các liên kết điều hướng được gọi là "breadcrumbs" theo kiểu phẳng mà không cần đến kỹ thuật hình nền phổ biến trước đây được gọi là phương pháp "cửa trượt".
Các đường dẫn mà chúng tôi sẽ tạo được cách điệu theo hình chữ V để trực quan hóa ý tưởng về nội dung có cấu trúc. Trước đây chúng ta sử dụng hình nền PNG để tạo hình chữ V này, nhưng bây giờ với kỹ thuật viền thông minh, chúng ta có thể tạo hiệu ứng tương tự chỉ bằng CSS.
Chúng ta sẽ bắt đầu bằng cách tạo các liên kết điều hướng đường dẫn dưới dạng danh sách không có thứ tự. Mỗi breadcrumb sẽ là một phần tử
- với một phần tử neo được cài đặt.
#crumbs ul li a ( hiển thị : khối ; float : trái ; chiều cao : 50px ; nền : #3498db ; căn chỉnh văn bản : giữa ; phần đệm : 30px 40px 0 40px ; vị trí : tương đối ; lề : 0 10px 0 0 ; cỡ chữ : 20px ; trang trí văn bản : không ; màu : #fff ; )
Mã CSS ban đầu cung cấp cho mỗi mục trong danh sách neo một kiểu hình chữ nhật màu xanh lam gọn gàng. Văn bản được căn giữa và phần đệm bằng nhau được thêm vào tất cả các bên. Để định vị các phần tử tuyệt đối theo sau, các phần tử này có thuộc tính vị trí: tương đối; được thêm vào để các phần tử được định vị tuyệt đối đó được hiển thị tương ứng với phần tử cha đó.
#crumbs ul li a:after ( nội dung: "" ; viền-trên : 40px màu đỏ đậm ; viền-dưới : 40px màu đỏ đậm ; viền-trái : 40px màu xanh đậm ; vị trí : tuyệt đối ; phải : -40px ; trên cùng : 0 ; )
Bây giờ chúng ta sẽ tạo hiệu ứng chữ V trong CSS, điều mà trước đây chỉ có thể đạt được bằng cách sử dụng hình nền. Sử dụng bộ chọn:after để tạo một phần tử bổ sung có thể được tạo kiểu riêng. Hình tam giác được tạo bằng nhiều đường viền CSS khác nhau, do đó, như bạn có thể thấy trong hình ảnh trước, một hình tam giác màu xanh có thể được tạo bằng cách áp dụng các đường viền trên và dưới để giao nhau với vùng che phủ. Các đường viền này được tô màu đỏ để rõ ràng, nhưng nếu chúng trong suốt, bạn sẽ có hình tam giác màu xanh lam. Hiệu ứng đường viền này sau đó được di chuyển vào vị trí bằng cách sử dụng định vị tuyệt đối.
Đường viền trên cùng: trong suốt 40px; viền dưới: 40px trong suốt; viền trái : 40px Solid #3498db ;
Hiệu ứng đường viền với các giá trị màu phù hợp sẽ tạo ra hình tam giác mong muốn, mang lại cho các mẩu bánh mì hình chữ V phổ biến.
#crumbs ul li a:trước ( nội dung : "" ; viền-trên : 40px chất rắn trong suốt ; viền-dưới : 40px chất rắn trong suốt ; viền-trái : 40px chất rắn #d4f2ff ; vị trí : tuyệt đối ; trái : 0 ; trên cùng : 0 ; )
Sử dụng các nguyên tắc tương tự, một hình tam giác khác có thể được áp dụng cho phía bên trái của mẩu bánh mì. Lần này, màu đường viền được đặt cùng màu với màu nền để ẩn các phần màu nền xanh của liên kết.
Phần đệm: 30px 40px 0 80px;
Khi bạn thêm liên kết vào HTML, chuỗi các đường dẫn sẽ tăng lên, được phân tách bằng các hình chữ V thú vị nhờ hiệu ứng đường viền CSS hình tam giác và lề phải nhỏ.
#crumbs ul li:first-child a ( border-top-left-radius: 10px ; border-bottom-left-radius: 10px ; ) #crumbs ul li:first-child a:trước ( display : none ; ) #crumbs ul li:last-child a ( đệm-right : 80px ; border-top-right-radius: 10px ; border-bottom-right-radius: 10px ; ) #crumbs ul li:last-child a:after ( display : none ; )
Khối đường dẫn đầy đủ có thể được tạo kiểu thêm bằng cách loại bỏ hiệu ứng tam giác khỏi phần tử đầu tiên và cuối cùng bằng cách sử dụng bộ chọn:first-child và:last-child, sau đó làm tròn nhẹ các góc bằng thuộc tính bán kính đường viền.
#crumbs ul li a:hover ( nền : #fa5ba5 ; ) #crumbs ul li a:hover :after ( border-left-color : #fa5ba5 ; )
Tất cả những gì còn lại là áp dụng hiệu ứng di chuột cho các liên kết. Đảm bảo thay đổi thuộc tính border-left-color cho hiệu ứng tam giác ở trạng thái di chuột để tất cả các đường dẫn thay đổi màu sắc.
Phiên dịch – Phòng trực
- bên trong một thùng chứa có một lớp menu.
Bây giờ chúng ta cần phân biệt phong cách cho các phần tử khác nhau
- - đây là một phần tử khối và chiếm toàn bộ chiều rộng có sẵn cho nó, nó phải được giới hạn bằng cách đặt width hoặc, như trong ví dụ, bằng cách đặt display thành inline-block . Dòng này xuất hiện bên dưới các con số, do đó các mục menu được dịch chuyển xuống một nửa chiều cao của chúng.
Kích thước của tất cả các vòng tròn được đặt chính xác, thông qua chiều rộng và chiều cao, điều này đặt ra hai vấn đề. Đầu tiên là liên kết nhỏ hơn nhiều so với chính vòng tròn và người dùng sẽ bỏ lỡ; thứ hai - liên kết nằm ở đầu vòng tròn, nhưng không ở giữa vòng tròn. Vấn đề đầu tiên có thể được giải quyết một cách đơn giản - bạn cần tạo các liên kết ở cấp độ khối, sau đó chúng sẽ chiếm toàn bộ chiều rộng và chiều cao của hình tròn. Đồng thời, các liên kết vẫn có hình vuông và mở rộng ra ngoài nền màu một chút. Nhưng điều này không hiển thị và chỉ trở nên đáng chú ý khi bạn di con trỏ qua một trong các góc của liên kết. Căn chỉnh văn bản được thực hiện bằng thuộc tính line-height, giá trị của nó khớp với chiều cao của phần tử. Phương pháp này cho phép bạn căn chỉnh văn bản ở giữa chiều cao của phần tử và sẽ hữu ích cho chúng ta sau này.
Tạo thực đơn
Menu trên trang web là một trong những cách để điều hướng nó. Tùy chọn đơn giản nhất là một tập hợp các liên kết ngang trông giống như mẩu bánh mì. Sự khác biệt là không có con trỏ giữa các liên kết (Hình 3).
Cơm. 3. Menu ngang
Để tạo một menu như vậy, chúng tôi áp dụng các nguyên tắc mà chúng tôi đã sử dụng trong các ví dụ trước, nhưng để đa dạng, chúng tôi sẽ thực hiện các thay đổi về mặt trang trí. Menu có độ chuyển màu nhẹ, bóng mờ bên dưới và các mục menu được phân tách bằng một đường thẳng đứng. Bản thân dòng này không chuẩn và bao gồm các sọc màu xám và trắng, vì vậy chúng tôi sẽ thêm dòng riêng của chúng tôi vào các phần tử