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

Posted

技术标签:

【中文标题】如何使用 React Material-UI、fontAwesome 图标和 Tailwind.css 左对齐所有列表项【英文标题】:How to left-align all list items using React Material-UI, fontAwesome icons and Tailwind.css 【发布时间】:2019-03-28 05:04:49 【问题描述】:

我想左对齐列表项的文本。目前,我有这个:

如何左对齐文本?

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  FontAwesomeIcon  from '@fortawesome/react-fontawesome';
import  faFacebook, faGoogle, faGooglePlus, faTwitter, faYoutube,  from '@fortawesome/free-brands-svg-icons';
import  faEnvelope,  from '@fortawesome/free-solid-svg-icons';

const styles = theme => (
  root: 
    width: '100%',
    maxWidth: 360,
    backgroundColor: theme.palette.background.paper,
  ,
);

const items = [
   label : 'Google'     , icon : faGoogle     ,  ,
   label : 'Twitter'    , icon : faTwitter    ,  ,
   label : 'Gmail'      , icon : faEnvelope   ,  ,
   label : 'Facebook'   , icon : faFacebook   ,  ,
   label : 'Youtube'    , icon : faYoutube    ,  ,
   label : 'GooglePlus' , icon : faGooglePlus ,  ,
]

function LoginList(props) 
  const  classes  = props;
  return (
    <div className=classes.root>
      <List component='nav'>
       
         items.map( item => (
           <ListItem button key=item.label>
             <ListItemIcon>
               <FontAwesomeIcon className='text-4xl' icon=item.icon />
             </ListItemIcon>
             <ListItemText primary=`Login with $item.label` />
           </ListItem>
         ))
       
      </List>
    </div>
  );


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

export default withStyles(styles)(LoginList);

【问题讨论】:

【参考方案1】:

Tailwind.css 让这一切变得简单。只需将className='w-24' 添加到&lt;ListItemIcon /&gt;

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  FontAwesomeIcon  from '@fortawesome/react-fontawesome';
import  faFacebook, faGoogle, faGooglePlus, faTwitter, faYoutube,  from '@fortawesome/free-brands-svg-icons';
import  faEnvelope,  from '@fortawesome/free-solid-svg-icons';

const styles = theme => (
  root: 
    width: '100%',
    maxWidth: 360,
    backgroundColor: theme.palette.background.paper,
  ,
);

const items = [
   label : 'Google'     , icon : faGoogle     ,  ,
   label : 'Twitter'    , icon : faTwitter    ,  ,
   label : 'Gmail'      , icon : faEnvelope   ,  ,
   label : 'Facebook'   , icon : faFacebook   ,  ,
   label : 'Youtube'    , icon : faYoutube    ,  ,
   label : 'GooglePlus' , icon : faGooglePlus ,  ,
]

function LoginList(props) 
  const  classes  = props;
  return (
    <div className=classes.root>
      <List component='nav'>
       
         items.map( item => (
           <ListItem button key=item.label>
             <ListItemIcon className='w-24'>
               <FontAwesomeIcon className='text-4xl' icon=item.icon />
             </ListItemIcon>
             <ListItemText primary=`Login with $item.label` />
           </ListItem>
         ))
       
      </List>
    </div>
  );


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

export default withStyles(styles)(LoginList);

【讨论】:

【参考方案2】:

此时,您已经实现了字体大小,请在 ListItemIcon 元素的类中使用 width,例如 24px。

...
const styles = theme => (
  listItemIcon: 24,
);

...

<ListItemIcon className=classes.listItemIcon>
 <FontAwesomeIcon className='text-4xl' icon=item.icon />
</ListItemIcon>

【讨论】:

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

React + Material-UI |如何创建水平滚动卡片?

如何在 React 测试库中获取 Material-UI 密码输入

如何覆盖(覆盖)material-ui(React)中的类和样式

如何在 React-Amin 创建组件中使用 Steppers 添加 Material-UI 表单

如何使 Material-UI Dialog 在 React 中工作

如何使用 react-testing-library 测试包装在 withStyles 中的样式化 Material-UI 组件?