Tôi bị kẹt một chút. Tôi đã tạo ra hầu như tất cả mọi thứ trong hình dưới đây. Những gì tôi đang mắc kẹt là tôi đang cố gắng tìm hiểu làm thế nào tôi sẽ thiết lập nó để khi một người dùng nhấp vào một trong các liên kết nó làm cho dòng dưới đây trở thành màu đỏ (sau khi tải trang tiếp theo). Rõ ràng tôi sẽ cần sử dụng Jquery để phát hiện trang sau đó thêm css nội tuyến, nhưng những gì tôi đang đấu tranh là tôi muốn điều này dễ dàng nhất có thể để tôi có thể cung cấp mẫu này cho người khác và sau đó họ có thể thêm hoặc xóa các mục như cần thiết. Tôi đã cố gắng tìm ra nếu tôi bằng cách nào đó có thể sử dụng một yếu tố li
để làm điều này nhưng tôi đã không tìm thấy một cách nào được nêu ra. Có ai có ý tưởng nào để giúp tôi không?Điều hướng này có thể được thực hiện hoàn toàn trong CSS
Trả lời
Xây dựng thực đơn của bạn như thế này, trong HTML:
<body id='Search' >
<div id='menu'>
<div class='bars'></div>
<a href='/home/' title='Home'>Home</a>
<a href='/community/' title='Community'>Community</a>
<a href='/search/' title='Search'>Search</a>
<a href='/contact/' title='Contact'>Contact</a>
<div class='bars shift'></div>
</div>
</body>
Lưu ý rằng tag cơ thể có một trang cụ thể id (như Cody gợi ý). Cũng lưu ý rằng id này phải giống với giá trị của thuộc tính title cho liên kết menu.
Sau đó sử dụng CSS này:
.bars {border-top:1px solid #CCC;border-bottom:1px solid #CCC;height:5px;}
.shift {margin-top:-6px;}
#menu {font-family:arial;font-size:12pt;text-align:center;}
#menu a {display:inline-block;padding:7px;text-decoration:none;color:#000;}
.active {border-bottom:5px solid red;}
Cuối cùng, thêm jQuery này vào mỗi trang:
$(document).ready(function(){
var id = $('body').attr('id');
$('#menu a').each(function() {
var title = $(this).attr('title');
$(this).removeClass('active');
if (title == id) $(this).addClass('active');
});
});
Bạn có thể thấy một fiddle demo sống here. (Để kiểm tra, chỉ cần thay đổi id của phần tử body và nhấn run.)
EDIT: Lợi ích của phương pháp này so với phương pháp của Cody Grays là bạn không cần sửa đổi css mỗi khi bạn thay đổi HTML khi bạn thêm, xóa hoặc chỉnh sửa mục menu. Mặt khác, nó sử dụng jQuery. Tuy nhiên, nếu bạn muốn một giải pháp css thuần túy, chỉ cần loại bỏ jQuery, và id của phần tử body, và thay vào đó áp dụng trực tiếp lớp .active cho liên kết cụ thể, tùy thuộc vào trang cụ thể (tương tự như gợi ý của jackJoe).
Điều này có thể dễ dàng được sửa đổi nếu bạn phải sử dụng các yếu tố <li>
.
Khá đơn giản. Tạo một lớp học cho các "hoạt động" nhà nước và tạo kiểu cho nó:
<li class="active">Home</li>
và tạo kiểu cho nó (phụ thuộc vào cấu trúc HTML, nhưng bạn sẽ có được ý tưởng)
CSS:
.active {
border-bottom: 3px red solid;
}
Tất cả những gì bạn cần làm là đặt lớp khi trang tải (ví dụ: phía máy chủ)
Bạn có thể làm điều đó the way jackJoe suggests và đặt máy chủ lớp active
trên trang hiện được chọn, nhưng bạn cũng có thể thực hiện việc này bằng CSS thuần túy và lập kế hoạch trước một chút.
Điều này liên quan đến việc đầu tiên đặt thuộc tính id
cho thẻ <body>
của trang của bạn, một phương pháp hay để tham gia. Sau đó, tệp CSS của bạn sẽ tận dụng cơ thể đó id
để xác định xem <li>
nào sẽ xuất hiện dưới dạng "hoạt động".
mẫu mã trang:
<body id="main"> <!-- change this id for each page -->
<ul>
<li class="main-nav"><a href="#">Main</a></li>
<li class="community-nav"><a href="/community">Community</a></li>
<li class="search-nav"><a href="/search">Search</a></li>
</ul>
</body>
mẫu CSS:
li.main-nav,
li.community-nav,
li.search-nav
{
background: #FFF;
/* your other awesome styles */
}
#main li.main-nav,
#community li.community-nav,
#search li.search-nav
{
/* style the active tab differently */
background: #F00;
}
Bằng cách này, các mã HTML cho phần điều hướng có thể ở lại hoàn toàn tĩnh trên mỗi trang. Nó không phải được trả về phía máy chủ hoặc được sửa đổi động ở phía máy khách.
Có một đẹp write-up về kỹ thuật này có sẵn trên trên CSS Tricks: ID Your Body For Greater CSS Control and Specificity
Đến đây để viết lên kỹ thuật này. Upvotes cho bạn, sir tốt của tôi. –
Hãy xem, tôi không hiểu tại sao mọi người bận tâm với rác như "không sử dụng bộ chọn ID trong CSS!" Các kỹ thuật như thế này là những ID tốt nhất. – BoltClock
Vấn đề với đề xuất của bạn là khi bạn thêm một mục mới vào menu, bạn cũng cần thêm lớp mới. Ngoài ra, sử dụng một lớp "hoạt động" trên mục menu sẽ giúp bạn tách mục trong trường hợp bạn có các mục con. – jackJoe
- 1. Điều này có thể được thực hiện đuôi đệ quy trong Prolog?
- 2. Có phải OOP & hoàn toàn tránh thừa kế thực hiện có thể không?
- 3. Điều này không rõ ràng hay nó hoàn toàn ổn?
- 4. DLLImport Int ** - Làm thế nào để làm điều này nếu nó có thể được thực hiện
- 5. Có thể thực hiện toán học bên trong CSS không?
- 6. iPhone UITableView PlainStyle với hình nền tùy chỉnh - được thực hiện "hoàn toàn" trong mã
- 7. Có cách nào để thực hiện CSS có điều kiện cụ thể của trình duyệt bên trong tệp * .css không?
- 8. Thực hiện Haskell-MaybeMonad trong F # - làm thế nào chúng ta có thể có được điều này lười biếng?
- 9. Tôi có thể thực hiện điều này trong một truy vấn Mysql không?
- 10. Có cách nào để thực hiện điều này không?
- 11. là điều này có thể thực hiện hai khóa chính trong một bảng
- 12. PL/SQL: có hướng dẫn để dừng hoàn toàn việc thực thi tập lệnh không?
- 13. Có điều gì đó hoàn toàn sai với Lược đồ XML này không?
- 14. Tệp Java.copy thay thế tệp xóa hiện có hoàn toàn
- 15. CSS Span Not Wrapping Hoàn toàn
- 16. thời gian thực hiện truy vấn mysql - tôi có thể nhận được điều này trong mili giây không?
- 17. Thực hiện đồ thị được hướng dẫn
- 18. Làm thế nào để bạn thực hiện điều này từ điển Python an toàn?
- 19. Chuyển hướng PHP này có an toàn không?
- 20. trường hợp sử dụng này có thể được thực hiện trong ehcache?
- 21. Anh chị em có điều kiện CSS khó khăn> bộ chọn con> Có thể thực hiện điều này không?
- 22. Có thể tạo tuyến chuyển hướng này trong Rails không?
- 23. Có thể thực hiện yêu cầu JSONP an toàn không?
- 24. Làm thế nào tôi có thể thực hiện điều này một cách hiệu quả hơn
- 25. Là một đặc tính C++ is_lambda, hoàn toàn được thực hiện như một thư viện, không thể?
- 26. Cần có tên loại hoàn toàn đủ điều kiện
- 27. Bố cục nào có thể thực hiện việc này?
- 28. .css jQuery() thực hiện
- 29. MySQL - Cách thực hiện điều này tốt hơn?
- 30. Tại sao jQuery thực hiện điều này trong việc thực hiện hàm xây dựng của nó?
Cũng giống như bạn có thể giới thiệu một id nội dung tĩnh trước hoặc động với lập trình phía máy chủ, bạn cũng có thể áp dụng lớp đang hoạt động trước hoặc phía máy chủ. – Stefan