React Semantic UI - 将图标放置在菜单项中文本的左侧

use*_*747 7 reactjs semantic-ui semantic-ui-react

使用 React Semantic UI,默认外观是这样的

React Semantic UI 默认查找带有图标的菜单项

这是生成该组件的代码(来自网站)。

import React, { Component } from 'react'
import { Icon, Menu } from 'semantic-ui-react'

export default class MenuExampleCompactVertical extends Component {
  state = {}

  handleItemClick = (e, { name }) => this.setState({ activeItem: name })

  render() {
    const { activeItem } = this.state

    return (
      <Menu compact icon='labeled' vertical inverted>
        <Menu.Item name='gamepad' active={activeItem === 'gamepad'} onClick={this.handleItemClick}>
          <Icon name='gamepad' />
          Games
        </Menu.Item>

        <Menu.Item
          name='video camera'
          active={activeItem === 'video camera'}
          onClick={this.handleItemClick}
        >
          <Icon name='video camera' />
          Channels
        </Menu.Item>

        <Menu.Item
          name='video play'
          active={activeItem === 'video play'}
          onClick={this.handleItemClick}
        >
          <Icon name='video play' />
          Videos
        </Menu.Item>
      </Menu>
    )
  }
}
Run Code Online (Sandbox Code Playgroud)

我想像这样定位文本左侧的图标

位于文本左侧的图标

任何想法如何做到这一点?

use*_*747 6

看起来我设法回答了我自己的问题。这不是很好,但看起来有点 css 可以解决问题。

只需将图标向左浮动

i {
  float: left;
  margin-right: 12px !important;
}
Run Code Online (Sandbox Code Playgroud)

菜单项本身只是成为一个a元素

a {
  text-align: center;
  line-height: 40px;
}
Run Code Online (Sandbox Code Playgroud)

编辑:

如果有人想知道,这就是我最终使用的。CSS 规则使得根据优先级获取您自己的规则变得有点复杂。

/******     Sidebar     ******/

.ui.icon.menu .item {
    line-height: 40px;
    padding-right: 500px;
    text-align: justify;
    font-weight: 600;
}

.ui.vertical.menu .item::before {
    height: 0px;
}

.ui.labeled.icon.menu .item > .icon:not(.dropdown) {
    float: left;
    margin-right: 12px !important;
}
Run Code Online (Sandbox Code Playgroud)