Как сделать поле ввода как можно более широким внутри элемента меню в верхнем меню с помощью semantic-ui-реагировать

У меня есть заголовок для моего приложения. И это меню со многими пунктами. У меня есть menu.item, который оборачивает поле ввода (его целью является поиск заданного ввода по всему сайту). Я хочу, чтобы этот menu.item был таким же широким, как оставшееся пространство с полем ввода, как его дочерние элементы. Моя проблема очень похожа на это визуально. И да, я пробовал жидкую опору во многих перестановках, к сожалению, это не помогло. Любая помощь или понимание этой проблемы? Пример моего кода приведен ниже, а соответствующий код - здесь.

<Menu inverted={true} fixed="top" size="small" color="violet">

  <Menu.Item as="a" header={true} >
    <Icon inverted={true} size="big" name="image" />
  </Menu.Item>

  <Container fluid={true}>
    <Menu.Item >
      <Input
        inverted={true}
        transparent={true}
        icon="search"
        iconPosition="left"
        placeholder="Search.."
      />
    </Menu.Item>
  </Container>

  <Menu.Item as="a" header={true} position="right">
    <Icon inverted={true} size="big" name="mail" />
  </Menu.Item>

</Menu>

1 ответ

Решение

Semantic UI использует стили flexbox в своем адаптивном меню. Это не столько проблема Semantic UI React, сколько проблема CSS. Я не верю, что существует класс, который существует в стилях семантического пользовательского интерфейса, чтобы заставить элемент меню расти. Вам придется решить это с помощью CSS. Требуется только одно изменение.

Menu является display:flex в CSS. Menu.Item компоненты все дети. Тот, у кого поиск внутри, должен быть добавлен как встроенный стиль: style={{ flexGrow: 2 }}

Вам также не нужно Container составная часть. Вот и все:

<Menu inverted={true} fixed="top" size="small" color="violet">
  <Menu.Item as="a" header={true}>
    <Icon inverted={true} size="big" name="image" />
  </Menu.Item>

  <Menu.Item style={{ flexGrow: 2 }}>
    <Input
      inverted={true}
      transparent={true}
      icon="search"
      iconPosition="left"
      placeholder="Search..."
    />
  </Menu.Item>

  <Menu.Item as="a" header={true} position="right">
    <Icon inverted={true} size="big" name="mail" />
  </Menu.Item>
</Menu>

И вот пример рабочих кодов и коробки: https://codesandbox.io/s/5x0x6ppm3k

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