老实说,这种方法对我来说似乎有点沉重。
您已经有五个图像,那么为什么不创建一个包含每个按钮的按下状态和未按下状态的精灵,然后使用 CSS“背景位置”属性进行滑动呢?
你的 CSS 看起来像:
div.buttons {
background-image: url(images/myimage.png);
background-position: 0 0;
position:relative;
width:64px;
}
div.buttons.dog{
background-position: 0 32px;
}
div.buttons.cat{
background-position: 0 64px;
}
div.buttons div.dog{
position:absolute;
left: 0;
top: 0;
width: 32px;
height: 32px;
border: transparent 1px solid;
}
div.buttons div.cat{
position:absolute;
left: 32px;
top: 0;
width: 32px;
height: 32px;
border: transparent 1px solid;
}
使用您的 HTML 为:
<div class="buttons">
<div class="dog"></div>
<div class="cat"></div>
</div>
然后是 jQuery 的一些简单的东西,例如:
$('div.buttons').children().each(function(){
$(this).click(function() { $(this).parent().addClass($(this).attr('class')).removeClass($(this).siblings().attr('class'));
});
更新
根据提问者的要求,以下是在按钮层上实现 div 覆盖的方法。首先,从div.buttons
顶部的 CSS 块开始,仅使用您的图像作为默认“关闭”位置的按钮而不是精灵。
然后,创建四个这样的容器(我在div
这里使用了 s,但您可以想象使用任何为容器提供适当语义上下文的元素)。
CSS
div.buttons{
background-image: url(images/myimage.png);
background-position: 0 0;
position:relative;
width:136px; /* whatever your width for the image is */
}
div.fish, div.rabbit, div.dog, div.cat {
position: absolute;
top: 0;
background-size: cover;
height: 24px; /* Whatever the height of your buttonbar is */
}
div.cat{
width: 32px; /* Width of your button */
left: 0;
background-image: none;
}
div.on.cat {
background-image: url(path/to/catImage.png);
}
div.dog {
left: 32px; /* The width of the preceding button(s), if they exist */
width: 40px; /* Width of your button */
background-image: none;
}
div.on.dog {
background-image: url(path/to/dogImage.png);
}
div.rabbit {
left: 72px; /* The width of the preceding button(s), if they exist */
width: 32px; /* Width of your button */
background-image: none;
}
div.on.rabbit {
background-image: url(path/to/rabbitImage.png);
}
div.fish {
left: 104px; /* The width of the preceding button(s), if they exist */
width: 40px; /* Width of your button */
background-image: none;
}
div.on.fish {
background-image: url(path/to/fishImage.png);
}
HTML
<div class="buttons">
<div class="cat"></div>
<div class="dog"></div>
<div class="rabbit"></div>
<div class="fish"></div>
</div>
这假设您的 div “包装”按钮切片具有与其动物匹配的类,但这显然可以是您想要的任何内容。然后,在单击事件中,您只需将所需的类应用于按下的按钮。您将使用的 jQuery 如下所示:
jQuery
$('.buttons > div').on('click',function(){
var t = $(this);
t.siblings.removeClass('on');
t.addClass('on');
//Whatever your button is supposed to do normally here
});