我有一堆li
' s。我试图让div
的背景颜色在鼠标开启时改变,并在鼠标关闭时改回来。我能够弄清楚如何做到这一点,但它有问题。 li
之间的差距导致了当我从一个li
悬停到另一个{j}时未正确触发jquery的问题。
这是我的代码:http://jsfiddle.net/blutuu/k93o28rf/8/
这很hacky,所以我希望有更好的实施。谢谢你的帮助。
答案 0 :(得分:2)
我正在堆叠上面的两个答案。我做了一些代码重新排列,我想我终于得到了你想要的东西。我将Whatisyourname?
标签隐藏在<li>
标签内,此时即使添加边框,整个元素也变得易于理解。
<a>
$(document).ready(function() {
$('li').mouseenter(function() {
var color = $(this).data('color');
$('#mbg').css('background-color', color);
});
$('li').mouseout(function() {
$('#mbg').css('background-color', 'blue');
});
});
.resources {
width: 17%;
height: 100vh;
overflow: hidden;
position: absolute;
z-index: 1;
border-right: solid 1px #C5C5C5;
box-shadow: 2px 0px 2px -1px #DCDCDC;
}
.resources ul {
text-align: right;
padding: 0;
margin: auto 0;
}
.resources ul > li a {
list-style-type: none;
height: 65px;
background: #00ADEF;
border-bottom: solid #0088BC 1px;
vertical-align: middle;
overflow: hidden;
padding: 0;
box-shadow: 0px -1px 5px -2px #222 inset;
box-sizing: border-box;
transition: .5s;
}
.resources ul li a:hover {
border-right: 25px solid #8CC63E;
vertical-align: middle;
overflow: hidden;
/*transition: .5s;*/
}
.resources li a {
line-height: 1em;
text-decoration: none;
color: white;
font-size: 20px;
font-weight: bold;
display: block;
padding: 1.13em;
}
#mbg {
position: absolute;
background-color: blue;
width: 100%;
height: 100vh;
margin-left: 17%;
}
#layoutsTable {
border: solid 1px #f08721;
height: 100vh;
}
答案 1 :(得分:1)
演示:http://jsfiddle.net/k93o28rf/6/
使用bind将params直接传递给changeColor函数。 定义changeColor函数,这样您就不必每次都定义昂贵的变量。 只需在div id上调用.css函数即可设置背景颜色。
$(document).ready(function() {
var content = $('#mbg');
var changeColor = function(color) {
content.css('background-color', color);
}
$('li').eq(0).hover(
changeColor.bind(null, '#380606')
);
$('li').eq(1).hover(
changeColor.bind(null, '#191919')
);
$('li').eq(2).hover(
changeColor.bind(null, '#191919')
);
$('li').eq(3).hover(
changeColor.bind(null, '#f08721')
);
$('li').mouseout(
changeColor.bind(null, 'blue')
);
});
答案 2 :(得分:0)
演示:http://jsfiddle.net/k93o28rf/3/
在每个data
元素上使用li
标记属性,您只需拥有一个mouseenter
函数和一个mouseout
函数来处理背景颜色变化,如图所示下方。
<div id="mbody">
<div class="resources">
<ul>
<li data-color="#380606"><a href="https://sussex.sharepoint.com/SitePages/Policies.aspx">Policies</a></li>
<li data-color="#191919"><a href="https://sussex.sharepoint.com/SitePages/LMS.aspx">LMS</a></li>
<li data-color="#cbcbcb"><a href="https://sussex.sharepoint.com/SitePages/Tips%20and%20Tricks.aspx">Tips & Tricks</a></li>
<li data-color="#f08721"><a href="https://sussex.sharepoint.com/SitePages/Forms.aspx">Forms</a></li>
</ul>
</div>
<div id="mbg"></div>
</div>
$(document).ready(function() {
$('li').mouseenter(function() {
var color = $(this).data('color');
$('#mbg').css('background-color', color);
});
$('li').mouseout(function() {
$('#mbg').css('background-color', 'blue');
});
});
答案 3 :(得分:0)
更新: 尝试在元素上使用线性渐变而不是border-right:
问题是您已应用于底部的边框。将它添加到CSS中的元素:
box-sizing:conteny-box;
这应该解决它。另外,为了提高效率,请使用JQuery的.each函数。像这样:
$('li').each( ///your code );