::before 疑似要素が :visited 疑似クラスで動作しないのはなぜですか? 質問する

::before 疑似要素が :visited 疑似クラスで動作しないのはなぜですか? 質問する

疑似クラスと疑似要素を使用して要素のスタイルを設定しようとしています。 はhover::before完璧に機能しているのに、:visited::beforeは機能しません。

ここに画像の説明を入力してください

:visited::beforeリンクにアクセスしたが機能していない場合は、「閲覧済み」と表示したい。

*, *:before, *:after {
        box-sizing: border-box;
    }
    body {
        background-color: #eee;
        font-size: 23px;
        padding: 50px;
        font-family: 'Ubuntu Condensed', sans-serif;
    }
    .style-3 {
        margin: 20px;
        float: left;
        padding: 20px 80px 20px 20px;
        border: 1px solid #ccc;
        background-color: #fff;
        position: relative;
        text-decoration: none;
    }
    .style-3 {
        color: green;
    }
    .style-3:visited {
        color: red;
    }
    .style-3:hover::before {
        content: "Hover";
        position: absolute;
        right: 20px;
        color: yellow;
    }
    .style-3:visited::before {
        content: "Seen";
        position: absolute;
        right: 20px;
        color: blue;
    }
<a href="#1" class="style-3">Seen Effects</a>
<a href="#2" class="style-3">Seen Effects</a>
<a href="#3" class="style-3">Seen Effects</a>

ベストアンサー1

それは可能かもしれないが、当然のことと考えてはいけない。スペック

注意: スタイルシートの作成者は、:link および :visited 疑似クラスを悪用して、ユーザーの同意なしにユーザーがどのサイトにアクセスしたかを判断する可能性があります。

したがって、UA はすべてのリンクを未訪問リンクとして扱うか、訪問済みリンクと未訪問リンクを別々にレンダリングしながらユーザーのプライバシーを保護するための他の手段を実装することができます。

コンテンツを挿入すると要素のサイズが変わることがあるため、これを検出してユーザーが何らかのサイトにアクセスしたかどうかを知るのは簡単です。そのため、ほとんどのブラウザではこれを許可しません。

おすすめ記事