59

a:visited CSS を、通常の a に設定されている色に設定する必要があります

ブラウザに伝えたいのは、訪問済みのリンクには、未訪問のリンクと同じ色を使用することです

特定の色を指定せずにこれを行う必要があります。

同様に、通常の未訪問リンクの色として「緑」を使用する奇妙なブラウザーが登場した場合、この CSS は、訪問済みリンクに同じ緑を使用するようにブラウザーに指示する必要があります。ブラウザで使用されている正確な色は、コードに対して透過的である必要があります..したがって、「どんな色でも」というフレーズがあります。

PS a:visited と a を特定の色に設定する方法を知っています。それは私が求めていることではありません。

PPS 必要に応じて JavaScript を使用します。しかし、私はブラウザにこれをさせることに本当に熱心です。

なぜ私はあなたが尋ねるようなことをしたいのですか?

IE8 がリンクに使用する青色は、ちょっとクールです。#0000FF ではありません。綺麗なブルーの色合いです。したがって、訪問済みリンクと未訪問リンクの両方に設定したいと思います。ただし、スクリーンショットを撮ったり、アドオンを使用して毎回正確な 16 進数値を選択したりするべきではありません。後で IE が色を他の素晴らしい色合いに変更した場合、このコードは機能するはずです。16 進数をもう一度見つけて、コード全体で変更したくありません。

これは 1 つの理由にすぎません。その青のヘクスを教えてはいけません。それを見つけるのは簡単ですが、それは答えではありません!

4

10 に答える 10

10
a:link{color:inherit}
a:active{color:inherit}
a:visited{color:inherit}
a:hover{color:inherit}

もちろん。

一部のテキスト リンク (画像リンクとは対照的に) がプロジェクトのメイン メニューの主要部分であったため、これが必要でした。ブラウザの色ではなく、MY 色が必要です。

各リンクは、CSS で設定された特定の色 (MY color) を持つクラスの ap タグ グループで囲まれていました。

于 2011-05-04T22:52:07.973 に答える
4

Danny Robers スクリプトは、Firefox と Chrome で動作します (IE についてはわかりません)。

FWIW、特別な値HyperlinkTextは、あなたが望むことを行うための「標準的な」方法でしたが、2003 年春に CSS3 から削除されました。

以下がFirefoxで機能するため、Firefoxが実装を開始した唯一のブラウザーのようです。

a:visited { color: -moz-hyperlinktext; }

于 2010-07-18T10:10:42.180 に答える
3

CSS を使用してこれを行う方法はありません。ブラウザは、ブラウザだけが知っているデータベース エントリに基づいてリンクが訪問されたことを示し、特定のブラウザ構成で指定されたデフォルトの色を使用します。

CSS は物理的に、ページ上の何かの色を取得できません。それがまさにその通りです。唯一の方法は、Danny Roberts の回答のように JavaScript を使用することです。


彼の答えが正しく機能していないと思う理由は$('a:visited')、その時点で訪問したすべてのリンクを選択するだけで、それらの色が変更されるためです。

必要なことは、クリック イベントを監視し、毎回コードを再実行することです。

var normalColor = $('a:link').css('color');
$('a').click(function() {
    $('a:visited').css('color', normalColor);
});
于 2010-11-17T13:06:50.433 に答える
3

純粋な CSS ソリューションはないと思います。通常、色を選択し、a:link と a:visited の両方を同じ色に設定します。

{color: inherit} を試してみましたがだめでした。

ただし、この jQuery ソリューションはうまく機能します。

<!DOCTYPE html>
<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"
            type="text/javascript"></script>
        <script type="text/javascript">
            $(function(){
                var normalColor = $('a:link').css('color');
                $('a:visited').css('color', normalColor);
            });
        </script>
    </head>
    <body>
        <a href="http://www.google.com">Google</a>
        <a href="nowhereyouvebeen">No where you've been</a>
    </body>
</html>
于 2010-01-07T04:43:26.303 に答える
1

これを達成するための純粋なCSSの方法はないと思います。JavaScriptを使用してaの色を取得し、a:visitedをその色に設定する必要があると思います。これは、{color:#dea}が指定されていない限り、すべてのブラウザーで機能するとは限りません。

于 2009-12-18T17:43:17.990 に答える
0

プレスト:

$(function(){
  var sheet = document.styleSheets[document.styleSheets.length-1];
  sheet.insertRule(
    'a:visited { color:'+$('a:link').css('color')+'; }',
    sheet.length
   );
});

テストしたところ、これが Chrome で動作することを確認できました。ただし、sheetルールを追加する対象に注意してください。そのメディア属性が、関心のあるメディアに適用されることを確認してください。さらに、色付けをオーバーライドするルールがある場合a、これは適切に機能しない可能性が高いため、スタイルシートでそれを明確にしてください。

とにかく、これが非常に賢明な慣行であるかどうかはわかりません。個人的には、すべてのサイトのリンクの色を明示的に定義しています。

PS:

どうやら IE (バージョンがわからない) は独自の構文を主張しているようです:

sheet.addRule('a:visited', $('a:link').css('color'), -1);
于 2013-10-05T16:53:54.197 に答える
0

この質問のタイトルが「訪問済みリンクの色を未訪問リンクの色に設定する」ことを示唆しているため、解決策が必要でした。私にとっては、回帰テスト (pdiff - 知覚差分) に使用するブラウザー ページ コンテンツの画面グラブの画像比較を実行する方法が必要でした。これが私のために働いたコードです。

(function(){
  var links = document.querySelectorAll('a');
  for (var i=0; i<links.length; i++) {
    var link = links[i];
    if (link.href) { //must be visitable
      var rules = window.getMatchedCSSRules(link) || [];
      var color = '#0000EE' //most browsers default a:link color;
      for (var j=0; j<rules.length; j++) {
        var rule = rules[j];
        var selector = rule.selectorText;
        color = rule.style['color'] || color;
      }
      link.setAttribute('style','color:' + color + ' !important');
      //this was enough for me but you could add a 'a:visited' style rule to the rule set
    }
  }
})();
于 2017-01-03T11:20:49.590 に答える