动态jQuery CSS具有三状态滚动背景位置根据状态变化
Dynamic jQuery CSS with 3-state rollover backgroundPosition change depending on state
我的页眉区域有一个href,当用户单击此页眉时,我想将页面背景从黑色更改为白色,并将导航按钮的颜色从白色更改为黑色。我所有的按钮都有从三态样式表PNG应用的背景,我使用背景位置CSS通过改变背景位置来显示它们,并具有悬停效果。
我可以使用jquery通过点击功能来完成这项工作,比如:
$('#HomeButton').click(function () {
if (!siteWhite) {
$('body').css('backgroundColor', 'white');
$('a.pageTitleButton').css({ 'backgroundPosition': '543px 0' });
$('a.pageTitleButton:hover').css({ 'backgroundPosition': '-545px 0' });
}
else {
$('body').css('backgroundColor', 'black');
$('a.pageTitleButton').css({ 'backgroundPosition': '0px 0' });
$('a.pageTitleButton:hover').css({ 'backgroundPosition': '-145px 0' });
}
// Reset site style white bool
siteWhite = !siteWhite;
});
然而,我的按钮是一个精灵表,有3个状态,一个黑色文本,白色文本和红色文本。当我在用jquery更改之前以正常样式悬停时,我的文本是白色的,悬停是红色的。我想做的是,当我点击标题并用jquery修改网站白色布尔时,它会将页面背景更改为白色,我希望我的按钮的默认状态在我的spritesheet的文本黑色位置,悬停在红色位置。当我使用上面的代码时,我的悬停在背景位置改变后停止工作,背景变为白色。
有更好的方法来解决这个问题吗?对于我想做的事情,任何解决方案或建议都将不胜感激。我不想在用户从siteBlack更改为siteWhite之后,必须加载一个全新的样式表来更改这些元素。
这是我的CSS/HTML:
<a href="#Home" id="HomeButton" class="pageTitleButton"></a>
a.pageTitleButton {
display: block;
width: 546px;
height: 56px;
text-decoration: none;
background: url('../Images/Rollovers/king_harobed.png');
margin: 0px 1.5px 0px 0px;
float: left;
}
a.pageTitleButton:hover {
background-position: -545px 0;
}
最好处理CSS中的所有样式,并在jquery中只保留状态更改:
$('#HomeButton').click(function () {
if (!siteWhite) {
$('body').addClass ('white');
}
else {
$('body').removeClass ('white');
}
// Reset site style white bool
siteWhite = !siteWhite;
});
你的css得到:
a.pageTitleButton {
display: block;
width: 546px;
height: 56px;
text-decoration: none;
background: url('../Images/Rollovers/king_harobed.png');
margin: 0px 1.5px 0px 0px;
float: left;
background-position: 0px 0;
}
a.pageTitleButton:hover {
background-position: -145px 0;
}
body.white a.pageTitleButton {
background-position: 543px 0;
}
body.white a.pageTitleButton:hover {
background-position: -545px 0;
}
您只需要在新的选择器中指定默认状态的变化,那就是背景位置。您还需要为实体创建一个规则来更改其颜色。
相关文章:
- jquery试图按名称获取按钮位置
- 我可以获得相对于被点击元素的确切点击位置吗
- 谷歌地图固定位置覆盖
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何在浏览器重新加载时保存位置哈希状态
- 如果设置了位置,如何在每个状态下检查路由器ui,如果没有,则转到登录页
- 获取谷歌位置自动完成状态
- UI 路由器 - 在状态之间转换时记住滚动位置
- 如何在每次页面重新加载时更改渐变背景,同时保持光标位置元素处于活动状态
- 使用codehelper.io显示基于IP位置的状态缩写
- 粗花呢位置完成后,将对象淡入到不可见状态
- 获取图像可见区域状态,以在画布中将图像设置在先前拖动的位置
- 画布的奇怪行为 上下文变量定义位置导致选项卡处于非活动状态时画布呈现冻结
- 向上滚动时,基于滚动位置的 javascript 动画不会恢复到其原始状态
- 位置更改后如何调用状态
- RichText编辑器插入点位置的按钮状态
- 在MVC中存储全局状态变量的位置以及如何传递它
- 历史推送状态和滚动位置
- Google地图(v3)将地理位置地址转换为方向-给出状态OK,但没有方向(未找到目标)
- 动态jQuery CSS具有三状态滚动背景位置根据状态变化