Подсказка Material-UI zIndex поверх MenuItem в компоненте Select

Моя проблема проста, у меня есть компонент <Tooltip>, окружающий компонент <Select>, и когда я нажимаю Select, всплывающая подсказка отображается над MenuItems следующим образом:

Нормальное поведение:

Подсказка Material-UI zIndex поверх MenuItem в компоненте Select

Не совсем нормальное поведение:

Подсказка Material-UI zIndex поверх MenuItem в компоненте Select

Поэтому я оставил все значения по умолчанию для Material-UI и Tooltip: zIndex: 1500, но для MenuItem их нет из того, что я видел. Я попытался установить zIndex для MenuItem равным 1501, но он по-прежнему ведет себя так же.

Мне было интересно, какой чистый способ оставить всплывающую подсказку за MenuItem, и если это невозможно, просто скрыть всплывающую подсказку при открытии Select MenuItems ...

Вот как выглядит мой код:

<Tooltip title = {'Filter by status'}>
    <Select value = {this.state.status} onChange = {this.handleChangeEvent.bind(this, Filter.Status)}>
        {statuses.sort(this.filterItemSortFn).map(item => {
            return (<MenuItem style = {{zIndex: 1501}} value = {item}>{item}</MenuItem>);
        })}
    </Select>
</Tooltip>

Если я устанавливаю zIndex всплывающей подсказки на меньшее значение, и он прячется за menuItems, но я действительно не хочу играть со значениями по умолчанию, поскольку они также мешают другим значениям zIndex.

Я сделал CodeSandbox: https://codesandbox.io/s/rn68z4xlo

Почему бы не установить z-index для своего меню на что-то более высокое, например z-index: 1501 в CSS?

Chase DeAnda 09.03.2018 18:26

@ChaseDeAnda Потому что, даже если я это сделаю (я отредактировал вопрос, чтобы включить его, спасибо), он будет вести себя так же.

Antoine 09.03.2018 18:29

Есть ли на MenuItem комплект position? Попробуйте <MenuItem style = {{zIndex: 1501, position: relative}} />.

Chase DeAnda 09.03.2018 18:37

Ага, даже с style = {{zIndex: 1501, position: 'relative'}}

Antoine 09.03.2018 19:19
style = {{zIndex: 1501+' !important', position: 'relative'}}
Shrroy 09.03.2018 19:21

@Liam zIndex должен быть числом Type 'string' is not assignable to type 'number | "initial" | "inherit" | "unset" | "auto"'.. Даже если я заставлю z-index равным 1501 в моем браузере во время проверки элемента, всплывающая подсказка останется над MenuItems.

Antoine 09.03.2018 19:41

Не могли бы вы показать нам свой код в реальном времени в CodeSandBox?

Shrroy 09.03.2018 19:51
codeandbox.io/s/rn68z4xlo
Antoine 09.03.2018 20:00

Это потому, что у родительского меню z-index установлен на 1300. У дочернего элемента z-index не может быть больше, чем у его родителя. Вам нужно изменить .MuiModal-root-57, чтобы z-index был равен 1501.

Chase DeAnda 09.03.2018 20:09

Как я могу редактировать z-индекс MultiModal-root-X, если он всегда меняет имя и используется по умолчанию в Material-UI?

Antoine 09.03.2018 20:18

Это решит ваш вопрос (если он еще актуален): stackoverflow.com/questions/64317706/…

Michael 13.10.2020 12:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
11
5 517
1

Ответы 1

Это ошибка в Material-Ui Tooltip, и я думаю, она уже исправлена ​​в новой версии.

Вы можете решить проблему, добавив zIndex во всплывающую подсказку.

  <Tooltip title = {"Message"} style = {{ zIndex: '1' }}>
        <Select 
          value = {this.state.name}
          onChange = {this.handleChangeEvent}
          input = {<Input id = "select-multiple" />}
          MenuProps = {MenuProps}
        >
          {names.map(name => (
            <MenuItem key = {name} value = {name}>
              {name}
            </MenuItem>
          ))}
        </Select>
      </Tooltip>

Или, если вы хотите полностью скрыть его, если открытое меню, используйте этот код

 <Tooltip title = {"Message"} 
            onClick = {() => this.setState({ tooltip: !this.state.tooltip })}
          style = {this.state.tooltip ? {display: 'none'}:{ zIndex: '1' }}>
            <Select 
              value = {this.state.name}
              onChange = {this.handleChangeEvent}
              input = {<Input id = "select-multiple" />}
              MenuProps = {MenuProps}
            >
              {names.map(name => (
                <MenuItem key = {name} value = {name}>
                  {name}
                </MenuItem>
              ))}
            </Select>
          </Tooltip>

Определенное состояние всплывающей подсказки

class MultipleSelect extends React.Component {
  state = {
    name: [],
    tooltip: false,
  };

https://codesandbox.io/s/0xrlmv96vl

У меня была аналогичная проблема с компонентом popper, мое исправление было <Popper style = {{zIndex: 1}}>...</Popper>

Nikita 05.12.2019 11:31

Во-первых, вы не можете назначить строку для zIndex, а во-вторых, это не переопределит ее начальный zindex.

Gabriel Petersson 19.08.2020 12:13

Другие вопросы по теме