如何在react-select drowpdown中更改zIndex

Khu*_*boo 1 reactjs react-select

我正在使用react-select库创建自动完成下拉列表。如果2nd有一些数据,我使用了2个下拉并行,并且我先打开了一个,然后出现zIndex问题。看图片在此处输入图片说明

hem*_*rao 34

在你的 allSelect标签中添加这些行:

<Select 
    // other props
    menuPortalTarget={document.body} 
    styles={{ menuPortal: base => ({ ...base, zIndex: 9999 }) }}
/>
Run Code Online (Sandbox Code Playgroud)

  • 这不起作用,维森特的答案有效 (4认同)
  • 拯救我的一天!它应该是最强大的解决方案。如果父容器有“overflow:hidden”,仅仅将“menu”z-index设置为9999并不能防止弹出窗口被父容器裁剪。 (3认同)

MBa*_*Bak 17

看了半打相关问题,还没找到解决办法,终于找到了。

<Select
    menuPortalTarget={document.body}
    menuPosition={'fixed'} 
/>
Run Code Online (Sandbox Code Playgroud)

将这两个选项添加到您的 Select 组件中。

它似乎让我们了解了新的React Portal功能。

编辑:如果您执行上述操作,则由于position: fixed. 删除它可能会有所帮助。https://github.com/JedWatson/react-select/issues/4088

  • 这解决了我的问题。 (2认同)

myu*_*uce 12

对我来说,解决方案是所有答案的总和(谢谢!);

 const customStyles = {
    ///.....
    menuPortal: provided => ({ ...provided, zIndex: 9999 }),
    menu: provided => ({ ...provided, zIndex: 9999 })
    ///.....
  }


 <Select
  //.....
  menuPortalTarget={document.body}
  menuPosition={'fixed'} 
  styles={customStyles}
  //.....
  />  
Run Code Online (Sandbox Code Playgroud)


Vic*_*nte 7

尝试使用这种设置zIndex的方法,让我知道它是否有效:)

<Select
  styles={{
    // Fixes the overlapping problem of the component
    menu: provided => ({ ...provided, zIndex: 9999 })
  }}
  value={selectedOption}
  onChange={evt => onSelectChange(evt, index)}
  options={options}
/>
Run Code Online (Sandbox Code Playgroud)

  • @Vicente 感谢您的回答。如果其他人来到这里并对这种方法遇到困难。您可能正在使用react-select的门户,在这种情况下您需要使用: ```menuPortal:provided =&gt; ({ ...provided, zIndex: 9999 })``` (4认同)
  • 取决于@user11124592 的降价和 CSS,您的解决方案是完全有效的,不需要“hacky” :) (2认同)

小智 5

只需添加以下两行代码即可。

 const customStyles = {
    ///.....
    menuPortal: provided => ({ ...provided, zIndex: 5 }),
   
    ///.....
  }

 <Select
  //.....
  menuPosition={'fixed'} 
  styles={customStyles}
  //.....
  /> 
Run Code Online (Sandbox Code Playgroud)