我有一个垂直的div列表,我在悬停时动画。我希望其余的人保持在相同的位置,而选定的一个“成长”(我讨厌说,但想想MacOS Launcher)。我知道如果我使用JavaScript循环绝对定位每一个,我就能做到,但我希望它尽可能地动态。
想法?
HTML:
<div id="leftMenu">
<div id="lmHome" class="lmSelected"><i class="icon-home icon-2x"></i></div>
<div id="lmSearch"><i class="icon-search icon-2x"></i></div>
<div id="lmFeed"><i class="icon-rss icon-2x"></i></div>
<div id="lmPeople"><i class="icon-group icon-2x"></i></div>
<div id="lmNew"><i class="icon-plus icon-2x"></i></div>
<div id="Div2"><i class="icon-calendar icon-2x"></i></div>
<div id="lmSettings"><i class="icon-cogs icon-2x"></i></div>
<div id="Div1"><i class="icon-question icon-2x"></i></div>
</div>
CSS:
#leftMenu { /* The container for the buttons on the left menu*/
position: absolute;
left: 10px;
padding-top: 10px;
height: auto;
}
#leftMenu div { /* The buttons on the left menu*/
position: relative;
top: 0px;
height: 50px;
width: 50px;
border: 1px solid gray;
text-align: center;
overflow: visible;
}
#leftMenu div i {
position: relative;
top: 12px;
}
#leftMenu div:hover {
}
#leftMenu div:last-child {
border-bottom: 1px solid gray;
}
JavaScript的:
$('#leftMenu div').on('mouseenter', function () {
var self = $(this);
self.stop()
.animate({ 'height': '+=10px' }, { duration: 100, queue: false })
.animate({ 'width': '+=10px' }, { duration: 100, queue: false })
.animate({ 'top': '-=5px' }, { duration: 100, queue: false })
});
$('#leftMenu div').on('mouseleave', function () {
var self = $(this);
self.stop()
.animate({ 'height': '-=10px' }, { duration: 400, queue: false })
.animate({ 'width': '-=10px' }, { duration: 400, queue: false })
.animate({ 'top': '+=5px' }, { duration: 400, queue: false })
});
答案 0 :(得分:4)
使用正确的工具完成工作。 JavaScript虽然提供了2年或3年前令人兴奋的旧浏览器动画功能,但并不适用于动画,所以在这里我举一个例子,说明如何通过3行额外的CSS来实现动画。
#leftMenu { /* The container for the buttons on the left menu*/
position: absolute;
left: 10px;
padding-top: 10px;
height: auto;
}
#leftMenu div { /* The buttons on the left menu*/
position: relative;
top: 0px;
height: 50px;
width: 50px;
border: 1px solid gray;
text-align: center;
overflow: visible;
background: #fff;
-webkit-transition: all 0.2s ease-in-out;
transition: all 0.2s ease-in-out;
}
#leftMenu div i {
position: relative;
top: 12px;
}
#leftMenu div:hover {
-webkit-transform: scale(2);
transform: scale(2);
z-index: 100;
}
#leftMenu div:last-child {
border-bottom: 1px solid gray;
}
答案 1 :(得分:1)
这是使用CSS变换的完美案例,在这种情况下为scale()
。
以下是一个简单示例:http://jsfiddle.net/LeBen/vYjNT/1/
有more options available,您还可以使用transitions添加一些缓动。