如何使用 fontAwesome 图标和 Tailwind.css 对齐 React Material-UI 列表项

Posted

技术标签:

【中文标题】如何使用 fontAwesome 图标和 Tailwind.css 对齐 React Material-UI 列表项【英文标题】:How to align React Material-UI list items using fontAwesome icons and Tailwind.css 【发布时间】:2019-03-27 20:57:30 【问题描述】:

我想左对齐列表项的文本。我还想让所有图标大小相同。与 Gmail 列表项一起使用的信封图标的大小。目前,我有这个:

我怎样才能做到这一点?

import React from 'react';
import PropTypes from 'prop-types';
import  withStyles  from '@material-ui/core/styles';
import List from '@material-ui/core/List';
import ListItem from '@material-ui/core/ListItem';
import ListItemIcon from '@material-ui/core/ListItemIcon';
import ListItemText from '@material-ui/core/ListItemText';
import DraftsIcon from '@material-ui/icons/Drafts';    
import  FontAwesomeIcon  from '@fortawesome/react-fontawesome';
import  faFacebook, faGoogle, faGooglePlus, faTwitter, faYoutube,  from '@fortawesome/free-brands-svg-icons';

const styles = theme => (
  root: 
    width: '100%',
    maxWidth: 360,
    backgroundColor: theme.palette.background.paper,
  ,
  container: 
    width: '20px', // this does not work
  
);

function SimpleList(props) 
  const  classes  = props;
  return (
    <div className=classes.root>
      <List component="nav">
        <ListItem button>
          <ListItemIcon className="container">
            <FontAwesomeIcon icon=faGoogle />
          </ListItemIcon>
          <ListItemText primary="Login with Google" />
        </ListItem>
        <ListItem button>
          <ListItemIcon className="container">
            <FontAwesomeIcon icon=faTwitter />
          </ListItemIcon>
          <ListItemText primary="Login with Twitter" />
        </ListItem>
        <ListItem button>
          <ListItemIcon className="container">
            <DraftsIcon />
          </ListItemIcon>
          <ListItemText primary="Login with Gmail" />
        </ListItem>
        <ListItem button>
          <ListItemIcon className="container">
            <FontAwesomeIcon icon=faFacebook />
          </ListItemIcon>
          <ListItemText primary="Login with Facebook" />
        </ListItem>
        <ListItem button>
          <ListItemIcon className="container">
            <FontAwesomeIcon icon=faYoutube />
          </ListItemIcon>
          <ListItemText primary="Login with Youtube" />
        </ListItem>
        <ListItem button>
          <ListItemIcon className="container">
            <FontAwesomeIcon icon=faGooglePlus />
          </ListItemIcon>
          <ListItemText primary="Login with Google Plus" />
        </ListItem>
      </List>
    </div>
  );


SimpleList.propTypes = 
  classes: PropTypes.object.isRequired,
;

export default withStyles(styles)(SimpleList);

【问题讨论】:

【参考方案1】:

在 FontAwesomeIcon 和 DraftsIcon 上使用 fontSize CSS 应该可以解决问题。您很可能还需要覆盖图标上的任何默认填充和边距。

...
const styles = theme => (
  root: 
    width: '100%',
    maxWidth: 360,
    backgroundColor: theme.palette.background.paper,
  ,
  faIcon: 
    fontSize: 18,
    // padding if needed (e.g., theme.spacing.unit * 2)
    // margin if needed
  ,
  muiIcon: 
    fontSize: 18,
    // padding if needed
    // margin if needed
  
);

class SimpleList extends React.Component 
  render() 
    const  classes  = this.props;

    const list = [
       
        label: 'label 1', 
        icon: <FontAwesomeIcon className=classes.faIcon icon=faTwitter />
      ,
      
        label: 'label 2', 
        icon: <DraftsIcon className=classes.muiIcon />
      
    ];

    return <div className=classes.root>
      <List component='nav'>
       
         list.map((item, key) => (
           <ListItem button>
             <ListItemIcon>
                item.icon 
             </ListItemIcon>
             <ListItemText primary= item.label  />
           </ListItem>
         ))
       
      </List>
    </div>;

  


SimpleList.propTypes = 
  classes: PropTypes.object.isRequired,
;

export default withStyles(styles)(SimpleList);

【讨论】:

谢谢!这有帮助。您能否就实现该想法的代码提出任何建议? 如果没有,请告诉我。 :) 它没有回答原始对齐问题。但是,它确实帮助我解决了我的第二个问题:如何让所有图标大小相同。因此,我赞成并接受了它,因为您提供了帮助。我还将第一个问题分开并提出了一个新问题。如果您想再次尝试回答该问题,请在此处查看...***.com/q/52957859/1640892

以上是关于如何使用 fontAwesome 图标和 Tailwind.css 对齐 React Material-UI 列表项的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xamarin Android 中使用 FontAwesome 图标

如何使用 fontAwesome 图标和 Tailwind.css 对齐 React Material-UI 列表项

如何在Axure中使用FontAwesome字体图标

如何清除未使用的 fontawesome 图标?

如何使用 React Material-UI、fontAwesome 图标和 Tailwind.css 左对齐所有列表项

fontawesome 图标怎么安装