Cá nhân tôi chỉ sử dụng mã JavaScript để chuyển đổi giữa 2 lớp.
Có CSS phác thảo mọi thứ bạn cần trên div MINUS của bạn theo quy tắc nền, sau đó thêm hai lớp (ví dụ: mở rộng & thu gọn) làm quy tắc mỗi lớp với hình nền chính xác (hoặc vị trí nền nếu sử dụng sprite).
CSS với các hình ảnh khác nhau
.div {
/* button size etc properties */
}
.expanded {background: url(img/x.gif) no-repeat left top;}
.collapsed {background: url(img/y.gif) no-repeat left top;}
Hoặc CSS với hình ảnh sprite
.div {
background: url(img/sprite.gif) no-repeat left top;
/* Other styles */
}
.expanded {background-position: left bottom;}
Sau đó...
Mã JavaScript có hình ảnh
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).addClass('collapsed').removeClass('expanded');
}
else
{
$(this).addClass('expanded').removeClass('collapsed');
}
});
}
JavaScript với sprite
Lưu ý: toggleClass thanh lịch không hoạt động trong Internet Explorer 6, nhưng phương thức addClass
/ bên dưới removeClass
cũng sẽ hoạt động tốt trong tình huống này
Giải pháp thanh lịch nhất (tiếc là không thân thiện với Internet Explorer 6)
$(function){
$('#button').click(function(){
$(this).toggleClass('expanded');
});
}
$(function){
$('#button').click(function(){
if($(this).hasClass('expanded'))
{
$(this).removeClass('expanded');
}
else
{
$(this).addClass('expanded');
}
});
}
Theo như tôi biết thì phương pháp này sẽ hoạt động trên các trình duyệt và tôi sẽ cảm thấy thoải mái hơn khi chơi với CSS và các lớp so với thay đổi URL trong tập lệnh.