2012-04-16 3 views
1

私は画像ハイパーリンクを持っています。そして、私はリンクがステータスを訪問したときにイメージを変更したい。あなたは私にそれをする方法を教えてくれますか? JavaScriptを使用しないでください。CSS。 Сhangingimage visited link

私は、次の操作を実行しようとしている:私は、単一の共通イメージの両方で私の画像に入社し、ここに私のコードです:

<a href="#" class="mylink"> 
    <img src="common_image.jpg" width="240px" height="240px"/> 
</a> 

そして、私のスタイル:

.mylink { 
     width: 120px; 
     height: 240px; 
     display: block; 
     overflow: hidden; 
    } 

    .mylink:visited img { 
     margin-left: -120px; 
    } 
+0

「イメージを変更しますか?」イメージソースを変更しますか? –

+0

私はbackground-imageとcssスプライトを使用して調べます。これは、少なくとも正しい方向にあなたを指す必要があります。 1つの画像を使用して、訪問先の背景位置を切り替えることができます。 –

+0

はい、別の画像を見たい – Michael

答えて

2

src - CSSを通した画像の属性。なんらかの理由でimg-elementでなければならない場合は、変更のためにJavaScriptが必要です。

もう1つの方法は、img要素を取り除き、代わりに背景のアンカーのみを使用する方法です。 backgroundのプロパティはCSSで制御できます。ここで

:hoverのためにそれを行う方法のsimple exampleですが、あなたの場合には:hoverは、同じように簡単に代わり:visitedに変更することができます。

あなたはsprite.pngというファイルに-imageデフォルトの画像の下に「訪問」を配置した場合、コードは次のようになります。

a.mylink { 
    width: 120px; 
    height: 240px; 
    display: block; 
    overflow: hidden; 
    background: url(sprite.png) no-repeat; 
} 

a:visited.mylink { 
    background-position: 0 -240px; 
} 

は、それがここに住んでください:http://jsfiddle.net/5ZzkY/(代わりの背景色を使用します単純化のための画像)

+0

残念ながら、あなたのコードは機能しませんでした。このソリューションは、ステータスホバーには適していますが、訪問することはできません。私の変種のホバリングに置き換えてもそれがうまくいくので – Michael

+0

@Andrei私の更新されたCSSと例を見てください。セレクタを書く正しい方法は 'a:visited.myLink'です。 –

+0

結果は似ています... – Michael

0

あなたは削除することもできますイメージを作成し、CSSを使用して背景を制御する

.mylink { 
    background:url('myimagepath-01.jpg') top left no-repeat; 
    width: 120px; 
    height: 240px; 
    display: block; 
    overflow: hidden; 
} 

.mylink:visited { 
    background:url('myimagepath-02.jpg') top left no-repeat; 
} 
+0

それはもう1つの画像ファイルではありません。それがOPの後のことです。 –

+0

これは、リンクごとに2つのイメージを作成し、各ページにidを割り当てることを意味し、ページにこのエフェクトを使用する複数のリンクがある場合、CSSが巨大になるという点で実用的ではありません。 –

+1

この方法は、「訪問済み」のステータスでは機能しません。 – Michael

0

あなたはこれを試みることができる:

HTML:

<a href="http://google.com" class="image">Link</a>​ 

CSS:あなたはスプライトを使用する場合は、あなたが

.image { 
    background: transparent url('http://javascript.info/files/tutorial/browser/events/rollover-sprite/button.png') no-repeat top left; 
    width: 186px; 
    height: 52px; 
    display: block; 
    text-indent: -9999px; 
} 
.image:hover { 
    background-position: 0 -52px; 
} 
.image:visited { 
    background-position: 0 -104px; 
} 

CSSの背景として画像を設定し、background-positionプロパティを使用して、その位置を移動する必要があります。例はthis fiddleにあります。

1

遊び方:訪問した背景画像の疑似セレクタが動作しません。主要なブラウザには、スニッフィングの悪用を防ぐセキュリティ上の制限があります。 this StackOverflow question