使精灵图像播放/暂停图标突出显示

时间:2011-04-25 22:48:03

标签: jquery css

我正在制作幻灯片查看器。

我让所有的CSS工作得很完美,精灵工作得很完美。 问题是,我有一个播放和暂停图标。

它们处于灰色正常状态,悬停时为粉红色。但是当他们被点击时,我希望他们是粉红色的。 我的问题是:

当页面加载时,图像滑块自动播放,所以我希望PLAY按钮自动PINK。 然后,如果用户单击PAUSE按钮,我希望PAUSE按钮变为PINK,并且PLAY按钮变为灰色!

反之亦然,当用户点击PLAY时,此按钮会变为PINK并暂停按钮GRAYED

我不确定如何做这个普通的css我肯定不能自己做到这一点。

的CSS:

div.play { width: 12px; height: 17px; background: url(../images/icons/slider-controls.png) no-repeat 0 -181px; }
div.pause { width: 18px; height: 16px; background: url(../images/icons/slider-controls.png) no-repeat 0 -121px; }
div.play:hover { width: 12px; height: 17px; background: url(../images/icons/slider-controls.png) no-repeat 0 -204px; }
div.pause:hover { width: 18px; height: 16px; background: url(../images/icons/slider-controls.png) no-repeat 0 -143px; }

HTML:

<a href="javascript:;"><div class="pause left" id="my-start-stop"></div></a>
                <a href="javascript:;"><div class="play left" id="my-stop-start"></div></a>

js :(对于控件)

$('#my-start-stop').click(function() {
            slider.stopShow();
            return false;
        });
        $('#my-stop-start').click(function() {
            slider.startShow();
            return false;
        });

Image Sprite是: enter image description here

2 个答案:

答案 0 :(得分:2)

哎呀,我把div ID名称看作同样的... darn dyslexia LOL ......无论如何,我更改了名字并制作了demo,代码如下:

HTML

<a href="javascript:;"><div class="pause left" id="my-pause"></div></a>
<a href="javascript:;"><div class="play playing left" id="my-play"></div></a>

CSS

div.play, div.pause {
    float: left;
    background: url(http://i.stack.imgur.com/lqK28.png) no-repeat;
}
div.play {
    width: 12px;
    height: 17px;
    background-position: 0 -181px;
}
div.pause {
    width: 18px;
    height: 16px;
    background-position: 0 -121px;
}
div.play.playing, div.play:hover {
    width: 12px;
    height: 17px;
    background-position: 0 -204px;
}
div.pause.paused, div.pause:hover {
    width: 18px;
    height: 16px;
    background-position: 0 -143px;
}

脚本

$('#my-pause').click(function() {
    $(this).toggleClass('paused');
    $('.play').removeClass('playing');
    slider.stopShow();
    return false;
});
$('#my-play').click(function() {
    $(this).toggleClass('playing');
    $('.pause').removeClass('paused');
    slider.startShow();
    return false;
});

答案 1 :(得分:1)

不要使用:hover,而只需定义一个移动背景位置的CSS类。

像:

.play {
    background: url(../images/icons/slider-controls.png) no-repeat 0 -200px;
}
.active {
    background-position: 0 -100px;
}

然后使用JavaScript添加/删除active

此外,由于你有一个所有按钮的精灵,你可以这样编写你的CSS:

.sprite {
     background: url(../images/icons/slider-controls.png);
}
.play {
     width: Apx; height: Bpx; background-position: 0 -Cpx;
}
.play_active {
     background-position: 0 -Dpx;
}
.pause {
     width: Epx; height: Fpx; background-position: 0 -Gpx;
}
.pause_active {
     background-position: 0 -Hpx;
}

etc..

然后你分配类:

<div class="sprite play"></div>

<div class="sprite pause pause_active"></div><!-- pause AND pause_active -->