アップデート
提案されたすべてのソリューションの実例
AMC と協力して、要件を考えると JavaScript ソリューションがより適切に機能すると判断されました。すべてのコンテンツが 1 つのページに表示されるため、CSS ソリューションは私の調査結果に基づいて機能しません。リンクがクリックされたときに箇条書きを表示する単純な jQuery コードを提案しました。
jQuery
$(window).load(function(event) {
$('a').click(function() {
$('#Nav li').removeClass();
$(this).parent().addClass("current");
});
});
CSS
#navcontainer3 ul {
width: 200px;
list-style-type:disc;
}
#navcontainer3 ul li {
color: #ccc;
float:right;
clear:right;
}
#navcontainer3 ul li.current {
color: #000;
}
このページにはすべてのソリューションの例が含まれていますが、次のリンクで jQuery ソリューションのみを見つけることができます: http://jsfiddle.net/jtRws/10/。
興味深い問題です。明らかに、JavaScript ソリューションはありますが、純粋な CSS ソリューションが必要なようです。
ソリューション 0
リスト スタイルの色を背景色に設定して、他のリスト アイテムの箇条書きを非表示にします。
すべてのページに同じナビゲーション HTML がありますが、各ページに<body>
はid
そのページに固有のものがあります。例: <body id="home">
、<body id="products">
など。その後、巧妙な CSS を使用して、現在のページは特定のスタイル定義 (以下の最後の定義) を取得します。
#navcontainer0 ul {
width: 200px;
list-style-type:disc;
}
#navcontainer0 ul li {
color: #fff;
float:right;
clear:right;
}
body#home #homenav0,
body#products #prodnav0 {
color: #000;
}
解決策 1
background
箇条書きイメージの表示と非表示を切り替えるために使用します。この記事に基づいて、次のコードを使用しました。この記事では、この手法について詳しく説明しています。以下に、実際の例と同じコードを示します。
CSS
#navcontainer ul {
width: 200px;
padding:0;
margin:0;
text-align:right;
}
#navcontainer ul li a:hover {
color: #930;
background: #f5d7b4;
}
body#home a#homenav,
body#products a#prodnav,
body#faq a#faqnav,
body#contact a#connav {
background:url(bullet.gif) 0 50% no-repeat no-repeat;
padding-left:15px;
}
製品ページ
<body id="products">
<div id="navcontainer">
<ul id="navlist">
<li><a id="homenav" href="index.html">Home</a></li>
<li><a id="prodnav" href="products.html" >Products</a></li>
</ul>
</div>
</body>