我正在尝试创建一个按钮,当用户将鼠标悬停在该按钮上时,该按钮下方会出现一个弹出窗口。
所需经费如下:
- 按钮的大小与弹出窗口的大小无关
- 弹出窗口始终与按钮底部保持固定距离
- 弹出窗口不会干扰任何元素的位置(因此是绝对位置)
- 弹出窗口相对于按钮居中
这里有一个图像来代表这一点。我现在的尝试如下。
第一个
当前,我的代码执行以下操作:
这是此设置所需的效果。问题是,弹出窗口是相对于其自身高度定位的。
.button-container .popup {
...
-webkit-transform: translate(-50%, 110%);
...
}
这意味着,在较小的屏幕上,我将得到以下不希望的行为:
如果<button>
在其上方,我希望弹出窗口相对于高度定位。
我会很感激任何帮助如何做到这一点。
非常感谢- Oli
2条答案
按热度按时间3phpmpom1#
绝对定位可以使用
top
,left
,right
和bottom
来相对于父容器定位元素。这是您的代码片段所缺少的。此外,在悬停时使用
transition
而不是animation
。当从状态A切换到状态B时,它们往往更容易使用,反之亦然。在下面的代码片段中,我把
popup-positioner
放在button-container
的底部,并赋予它一个padding-top
。这个填充将是弹出窗口和按钮之间的间距,应该根据您的喜好进行调整。这意味着按钮和弹出窗口之间的间距将始终是相同的。这样做的原因是为了确保当鼠标悬停在按钮上时,无论何时将鼠标从按钮移动到弹出窗口,弹出窗口都不会消失。
使用
white-space: nowrap;
可防止句子换行。如果您确实需要在句子中换行,请使用<br>
标记来指示句子的换行位置。第一个
2g32fytz2#
这是一个非常简单快捷的解决方案。将始终保持弹出在按钮下并居中。即使你不知道弹出的宽度。
我创建了新的ID,但你可以自由更改它。
您也可以使用
display: none;
&然后当悬停display: block;
作为不透明度的替代。第一个