【问题标题】:How to Switch an li id='' sprite background using jquery如何使用 jquery 切换 li id='' sprite 背景
【发布时间】:2013-01-26 19:46:34
【问题描述】:

如何在单击事件发生后使用 jquery 切换 li id='' 精灵背景,并在单击另一个导航元素时将其切换回其原始状态,该元素也将切换到另一个精灵图像...... 我只使用当我将鼠标悬停在元素上时改变背景的 CSS .. 它工作正常但我真正想要的是点击后出现的第二个精灵图像在我点击另一个导航元素之前不会改变..

这里是html代码

<ul  id="navlist">
<li id="ico1"><a href="#"></a></li>
<li id="ico2"><a href="#"></a></li>
<li id="ico3"><a href="#"></a></li>
<li id="ico4"><a href="#"></a></li>
<li id="ico5"><a href="#"></a></li>
<li id="ico6"><a href="#"></a></li>
<li id="ico7"><a href="#"></a></li>
<li id="ico8"><a href="#"></a></li>

CSS 代码:

#navlist{position:relative;}
#navlist li{margin:0;padding:0;list-style:none;position:relative;top:0;}
#navlist li, #navlist a{height:40px;display:block;}

#ico1{width:73px;height:40px;background:url(../img/sprite.png) no-repeat -96px 0px;transition: 500ms ease-in-out;}

#ico1:hover{width:96px;height:40px;background:url(../img/sprite.png) no-repeat 0px 0px;transition: 500ms ease-in-out;}

....等

示例如下:http://jsfiddle.net/facemoi/nvQRf/

【问题讨论】:

  • CSS 不处理点击状态。最好的办法是使用 JavaScript 将 active 类添加/删除到单击的导航,并使用该类设置背景属性。

标签: jquery css image switch-statement sprite


【解决方案1】:

假设您有一个所有列表项都继承的公共类:

.ico{
   background: url(images/sprite.jpg);
}

现在为每个项目和悬停/活动状态创建类:

.ico1{
   background-position: 0 12px;
}

.ico1:hover{
   background-position: 0 24px;
}

.ico1.active{
   background-position: 0 32px;
}

...

而使用 jQuery,您只需在点击时切换 active

$('li').click(function(){

  // remove active class for all other list items
  $(this).parents('ul').find('li').not(this).removeClass('active');

  // add active class on this item
  $(this).addClass('active');
});

(a demo)

这实际上可能没有javascript,但你需要在你的标记中添加隐藏的单选按钮并制作图标标签

【讨论】:

  • 可以简化为$('li.active').removeClass('active');
  • 谢谢你们,这正是我所需要的!非常感谢您的帮助
猜你喜欢
  • 2012-05-30
  • 1970-01-01
  • 2011-10-04
  • 2010-10-19
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 2019-03-31
  • 2012-03-10
相关资源
最近更新 更多