2つのオプションがあります。PHPとCSSを使用できます。これはクライアントに依存しないため、これが優れています。2番目のオプションはJavascriptとCSSを使用することです
PHPとCSS
私はこの方法が好きです!現在のページが各メニューリンクと等しいかどうかをすべてのサイトで確認する必要があります。これが私のソリューションのスニペットです。私のサイトでは問題なく動作します。それがあなたのリンク方法で機能しているかどうかはわかりません:index.php/home
。あなたはそれを適応させなければならないと思います。home.phpやblog.phpのような実際のファイルを使用しているため
これはmenu.phpです、私はそれをすべてのサイトに含めます:
<div id="menu">
<div class="innertube">
<ul>
<?
markIfCurrent("Willkommen", "willkommen");
markIfCurrent("Salzgrotte", "salzgrotte-am-fehn");
markIfCurrent("Heilwirkung", "heilwirkung-des-salzes");
markIfCurrent("Farbtherapie", "farblichttherapie");
markIfCurrent("Salzshop", "salzshop");
markIfCurrent("Erfahrungs-<br/>berichte", "erfahrungsberichte");
markIfCurrent("Fragen und Antworten", "fragen-und-antworten");
markIfCurrent("Preise", "preise");
markIfCurrent("Galerie", "galerie");
markIfCurrent("Presse", "presse");
markIfCurrent("Praxis", "praxis");
markIfCurrent("Anfahrt", "anfahrt");
?>
</ul>
</div>
</div>
これでphp関数は次のようになります。
/* filter selected menu items */
function markIfCurrent ($name, $link) {
$should_mark = isCurrent($link);
if ($should_mark) {
$first = strtoupper(substr($name, 0, 1));
$rest = substr($name, 1);
echo "<li><span class='current'>".$name."</span></li>\n";
} else {
echo "<li><a class='lower' href='".$link."'>".$name."</a></li>\n";
}
}
/* check if $pageis current page */
function isCurrent ($page) {
/* reverse mapping */
if ($page == "willkommen") {
$page = "index";
}
$isCurrent = $page.".php" == getCurrentPage();
return $isCurrent;
}
function getCurrentPage() {
$path = $_SERVER['PHP_SELF'];
$a = explode("/", $path);
$site_name = $a[sizeof($a)-1];
return $site_name;
}
少なくともCSS:
li span.current a {
background-color: black; /* or #000000 */
}
li span a {
background-color: gray; /* or #cccccc*/
}
JavaScriptとCSS
これはより疑似的なコードですが、PHPバージョンと同じロジックです
この場合window.location.pathname
、URL/パス名を取得して現在のURLも確認する必要があります。スラッシュで分割し、ファイルを抽出します。次に、jQueryのようにナビゲーションの要素を反復処理してから、要素の$("#navigation").find("a")
cssスタイルを設定できます。a.css("background-color", "black")