0

リンクがすべて同じページにある場合、PHPでbasename関数を使用してリンクの新しいIDをエコーすることができるかどうか疑問に思っていました(ユーザーの場所に応じてスタイルを設定できます)。具体的には、私のサイトはスクロール ダウン サイトなので、すべてが 1 ページに表示されます。私のサイトに複数のページがある場合、次のことができると思います。

<?php $currentPage = basename($_SERVER['SCRIPT_FILENAME']); ?>
<ul>
    <li><a href="index.php" <?php if ($currentPage == 'index.php') {
                        echo 'id="here"';} ?>>HOME</a></li>

もちろん、CSS を使用して「ここ」でスタイルを設定し、ユーザーの現在のページを反映します。しかし、アンカー タグを使用している場合はどうでしょうか。

<?php $currentPage = basename($_SERVER['SCRIPT_FILENAME']); ?>
    <ul>
        <li><a href="index.php" <?php if ($currentPage == 'index.php#home') {
                            echo 'id="here"';} ?>>HOME</a></li>

これは動作しません。PHPを使用してこれを達成することは可能ですか? そうでない場合、これを行うJavaScriptの方法はありますか? 前もって感謝します!

4

1 に答える 1

0

フラグメントはサーバーに送信されません。サーバーが知っているのは、あなたが にいるということだけですindex.php

ただし、:target疑似クラスを使用して、フラグメントで参照されている要素を識別することができます。

たとえば、私が行った場合http://example.com/index.php#section、そのページには次のものがありました。

<h1 id="section">Some title</h1>

と:

:target {background-color:#ccc;}

次に、<h1>タグが強調表示されます。

于 2012-12-13T21:03:39.507 に答える