我有这段代码,
HTML
<div id="header-line"></div>
<div id="main-menu"></div>
<div id="content"></div>
CSS
#header-line {
height: 20px;
background-color: black;
top:0;
left:0;
}
#main-menu {
height: 30px;
background-color: green;
}
#content {
background-color: blue;
height: 200px;
}
的Javascript
$("#main-menu").hover(function () {
$(this).stop(true, false).animate({
height: "100px"
});
}, function () {
$(this).stop(true, false).animate({
height: "30px"
});
});
我使用jQuery animate
函数使中间DIV扩展其高度。但问题是它推下了底部的DIV。
如何让它在底部DIV上展开而不会将其向下推?
答案 0 :(得分:5)
将html更改为
<div id="header-line"></div>
<div id="content">
<div id="main-menu">Expands on hover</div>
</div>
将jquery更改为
$("#main-menu").hover(function () {
$(this).stop(true, false).animate({
height: "100px"
});
}, function () {
$(this).stop(true, false).animate({
height: "30px"
});
});
将样式更改为
#header-line {
height: 20px;
background-color: black;
top:0;
left:0;
}
#main-menu {
height: 30px;
background-color: green;
position:relative;
z-index:3;
}
#content {
background-color: blue;
height: 200px;
}
主要目的是将div放在另一个div中,然后它不会将底部div放下。
答案 1 :(得分:1)
这是一个CSS问题,你必须添加位置:绝对;到绿色DIV,但你必须修复宽度:Test
#main-menu {
height: 30px;
background-color: green;
position: absolute;
}
答案 2 :(得分:1)
使用position:relative
通过这种方式,您可以绝对定位子元素,内容区域和内容。父母中的扩展栏(新div)
通过将它们设置为绝对值,它们将保持在原位,并且展开的div将基本上与下面的内容重叠:
答案 3 :(得分:1)
在这里,你只需要为内容div设置新的高度。 (#content
)
答案 4 :(得分:1)
像这样:
#header-line {
height: 20px;
background-color: black;
top:0;
left:0;
}
#parent{
position:relative;
}
#main-menu {
height: 30px;
background-color: green;
width:100%;
position:absolute;
top:0;
z-index:100;
}
#content {
background-color: blue;
height: 200px;
width:100%;
position:absolute;
/* take into account : borders, margin, previous sibling height */
top:30px;
}
http://jsfiddle.net/techunter/7ytgy/
这是许多其他人的解决方案之一。你需要添加一个具有相对位置的父#parent
,它将作为其子女的参考。
答案 5 :(得分:1)
在 css ,
中尝试此操作#header-line {
height: 20px;
background-color: black;
top:0;
left:0;
}
#main-menu {
height: 30px;
background-color: green;
z-index:1;
position:relative;
}
#content {
background-color: blue;
height: 200px;
z-index:0;
top:50px;
position:absolute;
width:100%;
}