我正在设计一个涉及slideDown 的网站。
最初我设置了一个如下图所示的模板
当我将鼠标悬停在每个黑色块上时,会显示一个ul列表...但是当我悬停时会出现问题...块下面的所有内容都会向下移动(如下图所示)
我不能给出绝对的位置,因为上面和下面的所有内容都是浮动的(它们没有固定的高度)。那么,通过将其余内容保留在那里并在文本上显示悬停内容,还可以做些什么来获得 slideDown 呢?
我正在设计一个涉及slideDown 的网站。
最初我设置了一个如下图所示的模板
当我将鼠标悬停在每个黑色块上时,会显示一个ul列表...但是当我悬停时会出现问题...块下面的所有内容都会向下移动(如下图所示)
我不能给出绝对的位置,因为上面和下面的所有内容都是浮动的(它们没有固定的高度)。那么,通过将其余内容保留在那里并在文本上显示悬停内容,还可以做些什么来获得 slideDown 呢?
为了实现你想要的,你应该 slideDown() 一个内部子菜单元素而不是块本身。考虑这个示例标记:
<div class="item" id="mybox">floating box
<ul class="submenu" style="display: none;">
<li>Subitem 1</li>
<li>Subitem 2</li>
<li>Subitem 3</li>
</ul>
</div>
<p>More content... Just to illustrate</p>
<p>More content... Just to illustrate</p>
CSS 将类似于:
.item {
position: relative; /* to hold absolutely positioned submenu inside */
background: #2684b7;
color: #fff;
padding: 10px;
float: left;
}
.item .submenu {
position: absolute; /* the menu would go on top of everything */
background: #2684b7;
width: 100%;
left: 0;
}
p {
clear: both;
}
最后,JavaScript 很简单,只是不要忘记对动画进行防弹:</p>
$('#mybox').hover(
function() { /* mouseover */
$(this).find('.submenu').slideDown();
},
function() { /* mouseout */
$(this).find('.submenu').slideUp();
}
);
这是 jsFiddle 上的示例:http: //jsfiddle.net/zxrvC/
祝你好运。</p>
</p>
使用 position: relative 和 z-index:55 创建一个 div,并在该 div 内添加一个具有 position: absolute 的新 div 并给出宽度。希望这会解决。
问候
iijb