活动时更改菜单项背景的问题
Issue to change the background of a menu item when active
我正在尝试调整一段代码以满足我的需求,不幸的是我无法完全实现我想要的。
我希望第一个菜单项(soins 1)默认以"aqua"背景和白色字体显示,其他菜单项(非活动菜单项)以红色背景显示。
然后,当我单击其他菜单项时,我将"aqua"背景应用于活动背景(非活动菜单项将为红色)。
我正在努力在我的 CSS 代码或 JS 代码中找到需要修改的内容。如果你点击JSFiddle链接,你会更好地理解我试图解释的内容。非常感谢您的帮助。
http://jsfiddle.net/rk8rmwca/
.HTML:
<div id="carte-des-soins">
<ul>
<li><span class="menu-items"><a href="#" data-region="soins-1"> Soins 1</a></span>
</li>
<li><span class="menu-items"><a href="#" data-region="soins-2"> Soins 2</a></span>
</li>
<li><span class="menu-items"><a href="#" data-region="soins-3"> Soins 3</a></span>
</li>
<li><span class="menu-items"><a href="#" data-region="soins-4"> Soins 4</a></span>
</li>
</ul>
</div>
<div id="description-des-soins">
<div id="soins-1" class="textzone">
<p>Soins 1 blablabla</p>
</div>
<div id="soins-2" class="textzone">
<p>Soins 2 blablabla</p>
</div>
<div id="soins-3" class="textzone">
<p>Soins 3 blablabla</p>
</div>
<div id="soins-4" class="textzone">
<p>Soins 4 blablabla</p>
</div>
</div>
<p></p>
<br>
<p></p>
<br>
<p></p>
<br>
.CSS:
#carte-des-soins {
text-align: center;
}
#carte-des-soins ul {
list-style: none;
padding:0;
}
#carte-des-soins li {
display: inline-block;
margin: 0 10px;
background: red;
}
#carte-des-soins li a {
text-decoration:none;
text-align:center;
}
#description-des-soins {
margin-right: auto;
margin-left: auto;
width: 100%;
}
#soins-1, #soins-2, #soins-3, #soins-4 {
position: relative;
float: left;
margin-top: 30px;
margin-bottom: 30px;
padding: 5px 20px 20px 20px;
color: #333;
font: 12px'Open Sans', "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-weight: 400;
line-height: 1px;
}
#soins-2, #soins-3, #soins-4 {
display: none;
}
#soins-2 p {
margin-bottom: 5px;
}
#soins-1 p {
margin-bottom: 5px;
padding-right: 10px;
}
#soins-1 a {
color: #3A7CDB;
text-decoration: none;
}
#soins-1 a:hover {
text-decoration: underline;
}
.JS:
$(document).ready(function () {
$('.menu-items a:first').css({
'color': '#fff',
'background': 'aqua',
'padding': '20px'
});
$('.menu-items a').click(function () {
var region = $(this).attr('data-region');
$('.menu-items a').css({
'color': '#fff',
'background': 'red',
'padding': '20px'
});
$(this).css({
'color': '#fff',
'background': 'aqua',
'padding': '20px'
});
$('.textzone:visible').stop().fadeOut(500, function () {
$('#' + region).fadeIn(500);
});
return false;
});
})
我相信
这符合您的预期。
我已经从JS中删除了颜色和填充声明,并使用CSS应用了它们。一般来说,如果可以的话,你应该尽量避免用JavaScript设置任何CSS,而是使用JavaScript来切换元素上的类,这将带来同样的效果。
#carte-des-soins li a {
color: #fff;
text-decoration:none;
text-align:center;
padding: 20px;
background-color: red;
}
相关文章:
- 使用Javascript对象为具有两个背景图像的DIV设置样式时出现问题
- 背景定位下拉菜单问题
- 苹果/野生动物园在移动设备上播放背景视频时出现问题
- SVG模式动画和背景淡入问题
- 背景重叠问题
- iOS 8中滚动时的背景图像闪烁问题
- 尝试在页面刷新时更改背景图像,遇到问题
- 覆盖在“背景大小:包含”上的响应式 DIV - 解决警报触发的问题
- 背景图像不透明度问题
- 将鼠标悬停在 li 元素上时更改背景的问题
- 使用 .css() jQuery 方法更改背景图像时出现问题
- 显示背景图像时出现问题
- 活动时更改菜单项背景的问题
- 浏览器和移动设备的视差背景问题(javascript/jquery)
- 预加载css背景图像,nivo滑块问题
- 拉伸背景以适应iPhone屏幕的问题
- jQuery fadeIn淡出背景问题
- 引导多模态模态背景问题
- 修复jQuery动画的背景问题
- 谷歌浏览器 - Javascript DIV 背景问题