私はこれを以前に行ったことがないので、これを行う方法について少し混乱していますが、私は3つの画像を持っています:
デフォルト状態としての1つの画像:1.png、ホバー状態としての2番目の画像:2.png、およびリンク/画像がクリックされたときの3番目の画像:3.png
これらの3つの画像をどのように設定しますか?
これは、cssクラスを介して行うことができます。例えば:
<div class="image"></div>
<style type="text/css">
.image {
background: url(1.png) no-repeat top left;
}
.image:hover {
background: url(2.png) no-repeat top left;
}
.image:active {
background: url(3.png) no-repeat top left;
}
</style>
以下に説明するように、それらを3つの異なるイメージとして設定し、cssを介してそれらを制御できます。
#my-image {
background: url("/1.png");
}
#my-image:hover {
background: url("/2.png");
}
#my-image:active {
background: url("/3.png");
}
しかし、一般的に使用される手法はcss-spritesです。これらの3つの画像を1つの画像に結合します。各画像画像が100x100pxであるとすると、100x300pxの画像を作成します。そして、あなたはを制御しbackground-position
ます。これにより、ユーザーの応答性の欠如の問題が解消され、サーバーでの作業が容易になります。
上記の2つのソリューションは、a:activeの場合、イメージが永続的に変更されないため、正しく機能しません。これにはjqueryを使用する必要があり、全員がこれも実行します。
<html>
<head>
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#my_link").hover(function(){
$(this).removeClass("class_1").addClass("class_2");
},function(){
$(this).removeClass("class_2").addClass("class_1");
});
$("#my_link").click(function(){
$(this).removeClass("class_1").addClass("class_3");
});
});
</script>
<style type="text/css">
.class_1{background: url("/1.png") no-repeat top left;}
.class_2{background: url("/2.png") no-repeat top left;}
.class_3{background: url("/3.png") no-repeat top left;}
</style>
</head>
<body>
<a id="my_link" class="class_1" href="#" >Click here</a>
</body>
</html>
これは私にとってはうまくいきます。うまくいくことを願っています!