我在项目里用了一个第三方的 EmojiPicker 组件,但弹出的表情面板位置总是偏移,明明父容器是 relative 定位,它却跑到了页面左上角。试过改 z-index 和 position 都没用,是不是哪里样式冲突了?
这是我的相关 CSS:
.emoji-picker-container {
position: relative;
}
.emoji-picker-popover {
position: absolute;
top: 100%;
left: 0;
z-index: 1000;
}
可以试试这样:在 EmojiPicker 的配置里或者通过 JavaScript 手动设置它的位置。假设你的触发按钮有 ref 或 id,你可以这样写:
另外检查下有没有其他样式影响了定位,比如 margin、padding 之类的。有时候第三方组件自带的样式会覆盖掉我们写的样式,这时候可以用浏览器调试工具看看实际生效的样式。
要是还不行的话,试着给 emoji-picker-popover 加个 transform: translate(0, 0); 强制重新计算位置。这招在处理一些奇怪的定位问题时还挺管用的。
document.body,导致你父容器的relative定位管不到它。去组件文档里找找container或者portal属性,把它指定回你的父元素试试。