10

次の例を考えます。http://jsfiddle.net/A8v9x/4/-最初のリンクをクリックしてからページに戻ると、最初のリンクが緑色に変わります。ただし、訪問したリンクに。があると宣言されていても、アンダースコアはありませんtext-decoration:underline;!importantそのルールに追加しても何も変わりません。

CSS仕様でそのような動作に関する情報が見つかりませんでした。これは一般的なブラウザのバグですか?どのようにそれを回避しますか?

4

2 に答える 2

16

でtext-decorationを変更することはできません:visited。これは、https://developer.mozilla.org/en/CSS/Privacy_and_the_:visited_selectorで説明されているプラ​​イバシーの懸念から外れています。基本的に計算されたプロパティを変更すると、Webサイトはユーザーがアクセスしたサイトを判別できます。

訪問済みリンクのスタイル設定に使用できるCSSプロパティは、color、background-color、border-*-color、outline-color、column-rule-colorであり、未訪問スタイルと訪問済みスタイルの両方が色である場合(ペイントサーバーやnone)、塗りつぶしとストロークのプロパティ。許可されていないプロパティの場合(および許可されているプロパティのアルファコンポーネントの場合、rgba()またはhsla()の色または透明が使用されている場合)、代わりに未訪問のリンクのスタイルが使用されます。

于 2012-05-06T16:05:41.380 に答える
1

昨日も同じ問題が発生し、回避策を見つけました。昔は、訪問者が同じリンクを2回クリックしないようにするために、下線付きのリンクと下線なしの訪問済みリンクを配置していました。

昨日、同じことをしようとしてうまくいかなかったとき、私は驚きました。インターネットで2007年以降、セキュリティ上の理由からすべてのブラウザで「アクセス」できるプロパティが制限されていることがわかるまで、30分を失いました。これらは、「訪問済み」に設定できる6〜7個のプロパティのようなものです。そしてそのうちの1つはボーダーカラーです。次に、下線をnoneに設定し、下線に「border-bottom-color」を使用することを考えました。「border-bottom-color:transparent;」は設定できません。訪問した場合ですが、border-colorを親要素のbackground-colorと同じ色に設定できます。これにより、リンクにアクセスすると下線が非表示になります。

<style type="text/css">
body{color:black;background-color:white;}
a:link{color:blue;text-decoration:none;border-bottom: 1px solid;border-bottom-color:blue;}
a:visited{color:red;border-bottom-color:white;}
</style>

または、リンクの境界線の色を背景と同じに設定し、訪問者の色を変えることで、逆のこと(求めていること)を行うことができます。

逆のデモ:https ://jsfiddle.net/stfr9f9a

于 2015-07-23T10:42:21.810 に答える