いくつかのリンクを持つナビゲーション バーを備えた基本的な Web サイトがあるとします。ページ(たとえば、利用規約)にいるとき、ナビゲーションバーの「利用規約」リンクを強調表示したい。別のページに切り替えると、そのページのリンクが強調表示されるようにします (つまり、プライバシー ページに切り替えると、ナビゲーション バーで [プライバシー] が強調表示されます)。
HTML/CSS/JSでこれを行う簡単な方法を知っている人はいますか?
いくつかのリンクを持つナビゲーション バーを備えた基本的な Web サイトがあるとします。ページ(たとえば、利用規約)にいるとき、ナビゲーションバーの「利用規約」リンクを強調表示したい。別のページに切り替えると、そのページのリンクが強調表示されるようにします (つまり、プライバシー ページに切り替えると、ナビゲーション バーで [プライバシー] が強調表示されます)。
HTML/CSS/JSでこれを行う簡単な方法を知っている人はいますか?
JavaScript や php などを使用せずにこれを行う簡単な方法は、各ページの body タグに異なるクラスを追加することです。
<body class="nav-1-on">
次に、css ファイルで次のようにします。
body.nav-1-on a.nav-1, body.nav-2-on a.nav-2 { color:red )
だから、あなたが持っているナビゲーションアイテムの数に関係なくXXXクラスが必要であり、図のように各ナビゲーションアイテムにもクラスを配置します。
わかる?
更新(ブレインフェード、間違ったセレクターがありました)。CSS3ブラウザーの場合、ページ名自体を簡単にターゲティングできます。
a[href*=pageNameImOn.htm] {color: red;}
ここでは、それらに*=
含まれるすべてのhrefパスに一致します。これは、次のように一致します。pageNameImOn.htm
<a href="/my/path/to/file/pageNameImOn.htm">
<a href="/pageNameImOn.htm">
<a href="/pageNameImOn.htm#interalJumpLink">
このソリューションはjQueryを使用します。jQueryは実際にはjavascript用にコンパイルされたコードライブラリであり、使いやすいスニペットと機能を提供します。
これは、「クライアント側」であるため、サーバーによって追加されてからユーザーに送信されるのではなく、ユーザーマシンによってクラスが追加されるため、目的を達成するための最も簡単な方法です。ただし、小規模なサイトの場合はそれで十分です。
li
何が起こっているのか:このコードはあなたのナビゲーションを見つけます、ここではのを探しています、それで(' ')をあなたのメニュークラスが呼ばれるものに.nav
置き換えてください、それでおそらく: 。次に、メニューリンクが現在のページと一致するかどうかを確認し、一致する場合は、liにクラスを追加します。したがって、次のようなクラスも作成する必要があります。.nav li
('.mymenu li')
.active
.active{background-color:blue;}
お役に立てれば!
<script type="text/javascript" charset="utf-8">
$(document).ready(function() {
jQuery('.nav li').each(function() {
var href = jQuery(this).find('a').attr('href');
if (href === window.location.pathname) {
jQuery(this).addClass('active');
}
});
});
</script>
それの楽しみのためだけに。バックエンドコードやJavascriptを使用しないSingle page
、唯一のソリューションについてはどうでしょうか。CSS3
<ul>
<li><a id="home" href="#home">Home</a></li>
<li><a id="terms" href="#terms">Terms of use</a></li>
</ul>
CSS
li a { color: black; }
#home:target { color: red; }
#terms:target { color: red; }
CSSの:target
セレクターは、現在のハッシュタグと一致するIDセレクターと一致します。詳細については、http: //reference.sitepoint.com/css/pseudoclass-targetをご覧ください。
Firefox、Safari、Opera、Chromeでかなり良いサポート。
IE9およびIE10での不完全なサポート:
IEは[戻る]ボタンと[進む]ボタンに反応しません。要素は疑似クラスを適用または削除しません。http://www.quirksmode.org/css/contents.html
ページを識別するために、body に別の ID を設定します。
<body id="terms-of-use">
ナビゲーションの例:
<nav>
<a class="home" href="#">Home</a>
<a class="terms-of-use" href="#">Terms</a>
</nav>
次に、CSSで:
nav a {
// default style
background: blue;
}
#terms-of-use a.terms-of-use {
// if the id of body is terms-of-use then the link with the class .terms-of-use...
background: red;
}
別の色にしたいリンクについては、スタイルを手動で設定できます
<a style="color:red">My link is red</a>
おそらくより良い方法は、色が赤のクラスを定義することです
<style> .visited { color:red } </style>
そして実際のリンク
<a class="visited">My red link</a>