Javascript/React:溢出 X 可见,溢出 Y 自动

Posted

技术标签:

【中文标题】Javascript/React:溢出 X 可见,溢出 Y 自动【英文标题】:Javascript/React: Overflow X Visible, Overflow Y Auto 【发布时间】:2021-11-15 01:50:30 【问题描述】:

是否有基于 React/javascript 的解决方案来修复 overflow-x-visible 和 overflow-y-auto 问题?

我在 React 中有一个粘性侧边栏,单击它会显示一个选项菜单(请参见下面的屏幕截图)。研究overflow-x-visibleoverflow-y-auto 是一个持续存在的问题。我已经实现了一些建议的解决方案,包括:style="padding-bottom: 250px; margin-bottom: -250px; 和创建更宽的 div 容器 here 和 here。我也一直在学习this 教程。但是,我无法让它适用于我的用例。

使用 Tailwind CSS 的缩短代码:

<Sidebar className="h-96 overflow-y-auto overflow-x-visible">
    <SidebarItemNew className="relative">      
         <DropdownOptions className="absolute"/>
    </SidebarItemNew>     
</Sidebar>

有什么方法可以让它在 React 中工作?感谢您的帮助!

【问题讨论】:

会不会是 z-index 的问题?如果右侧的容器是不同的组件,则可能是堆叠The stacking context 的问题(我在推测) @RDU 你的评论让我思考,我将在响应中探索门户:reactjs.org/docs/portals.html。来自文档:“门户的典型用例是父组件具有溢出:隐藏或 z-index 样式,但您需要子组件在视觉上“突破”其容器。例如,对话框、悬停卡和工具提示。”听起来很有希望! 我们在这里的问题中没有那么“解决”。如果您发现了自己的答案,您可以发布并接受它。否则你可以删除你的问题 @j08691 注意,谢谢! 【参考方案1】:

为了解决这个问题,我使用 React Portal 将子元素拆分为它自己的 DOM 节点。然后我按照this 教程使用了 React Popper。现在效果很好!

【讨论】:

以上是关于Javascript/React:溢出 X 可见,溢出 Y 自动的主要内容,如果未能解决你的问题,请参考以下文章

为啥一个元素在“溢出:可见”时消失,但在“溢出:隐藏”时可见? [复制]

无法在可见溢出内容上使用悬停

文本输入上可见溢出,有可能吗?

为啥要使用 resize css 属性调整任何 div 都需要溢出!= 可见?

CSS溢出隐藏与父元素位置可见的奇怪效果[重复]

Internet Explorer CSS 属性“过滤器”忽略溢出:可见