純粋な HTML/CSS
label.tog > input {
display: none; /* Hide the checkbox */
}
label.tog > input + span {
text-indent: -9000px; /* Make text Accessible but not visible */
display: inline-block;
width: 24px;
height: 24px;
background: center / contain no-repeat url("//i.stack.imgur.com/gmP6V.png"); /*Play*/
}
label.tog > input:checked + span {
background-image: url("//i.stack.imgur.com/ciXLl.png"); /*Pause*/
}
<label class="tog">
<input type="checkbox" checked>
<span>Button Play Pause</span>
</label>
jQueryを使用して内部スパンの画像を切り替えます
画像をロードするためのサーバーへの新しいリクエストがないという有用な原因:
<span class="tog">
<img src="play.png">
<img src="pause.png" style="display:none;">
</span>
$(".tog").click(function(){
$('img',this).toggle();
});
または、次の HTML と.tog
画像セレクターがあるとします。
<img class="tog" src="play.png"/>
Array.prototype.reverse() の使用
var togSrc = [ "play.png", "pause.png" ];
$(".tog").click(function() {
this.src = togSrc.reverse()[0];
});
現在のsrc
値を使用し、String.prototype.match()
初期状態がわからない場合に便利 (再生? 一時停止?)
var togSrc = [ "play.png", "pause.png" ];
$(".tog").click(function() {
this.src = togSrc[ this.src.match('play') ? 1 : 0 ];
});
注:最後の 2 つの例では、画像を事前に読み込む必要があります。これは、ブラウザーがサーバーから新しい画像を要求して読み込むために発生するタイム ギャップを防ぐためです。