首先我们需要理解一些东西。
当我们使用position时,通常需要将父元素设置为position:relative,将子元素设置为position:absolute。
如果我们在没有在父级中使用position:relative的情况下给子元素position:absolute,则子元素将以窗口作为参考来定位,因此它们将定位在窗口的左上角,从而导致崩溃。
其次,在使用position:absolute时,我们还需要告诉子元素要在哪里使用top, bottom, left, right这些属性来确定位置。
如果不使用它们,它们将被定位在同一位置,导致崩溃。
因此,一旦解释清楚了,这是我的解决方案,我认为这不是做下拉菜单的最佳方式。
<div>
<span>Coffee</span>
<span class="sub">Tea</span>
<span class="sub">Milk</span>
<span class="sub">Water</span>
</div>
我的HTML与你想要的一样。
div{
position: relative;
}
span {
display: block;
}
span.sub {
color: blue;
position: absolute;
}
span.sub:nth-child(2){
left: 0;
top: 20px;
display: none;
}
span.sub:nth-child(3){
left: 0;
top: 40px;
display: none;
}
span.sub:nth-child(4){
left: 0;
top: 60px;
display: none;
}
span:first-child:hover ~ span{
display: block;
}
请注意,我像之前说的那样使用了left和top
。
首先,我们需要父元素,也就是这个div,设置为position: relative
,因为这是我们的参考点。
包含“Coffee”单词的span已经被正确定位。
然后很简单,我们需要针对每个进行定位,因为它们需要不同的位置值以避免折叠,我使用了伪类来针对它们,您也可以使用另一个类。
要在悬停时制作下拉菜单,我使用了这一行代码:span:first-child:hover ~ span{display: block;}
当悬停在咖啡上时,所有的显示将更改为块以便能够看到它们。
div
下面的元素上流动,就像导航下拉菜单一样。 - user4351667