Material UI 卡片内容高度/卡片内容固定到底部

Posted

技术标签:

【中文标题】Material UI 卡片内容高度/卡片内容固定到底部【英文标题】:Material UI card content height/cardcontent fixed to bottom 【发布时间】:2020-07-20 21:26:35 【问题描述】:

我目前正在映射从 JSON 对象获取信息的材料 UI 卡,因此其中的信息会不时变化并占用不同的空间。我希望我完成的每张卡片都有一个固定的高度,但是内容不符合要求。

A screenshot of how it looks

我把所有的卡片都排成三排。如您所见,最后一张卡片的内容与其他两张不一致。 我想将按钮和图形固定在卡片的底部,或者甚至为图形上方的内容设置一个固定的高度,以便图形和按钮位于底部。 我一直在努力让它发挥作用。 任何帮助将不胜感激。

这是我的代码:

<Grid key=item.Qid item xs=12 sm=4>
  <Card className=classes.cards>
    <div className=classes.details>
      <CardContent>
        <Typography component="h5" variant="h5" align="center">
          Question
        </Typography>
        <Typography variant="subtitle1" color="textSecondary" align="center" className=classes.space>
          item.Qid
        </Typography>
        <Typography variant="subtitle1" color="textSecondary">
          item.Question
        </Typography>
        <Typography component="h5" variant="h5" align="center" className=classes.space>
          Sentiment
        </Typography>
        <Typography variant="subtitle1" color="textSecondary" align="center" className=classes.space>
          item.Sentiment
        </Typography>
      </CardContent>

      <CardMedia className=classes.cover>
        item.Sentiment ? renderPieChartForSentimentAnalysis(item.SentimentScore) : "No data to display"
      </CardMedia>

      <div align="center" className=classes.space>
        <Button variant="outlined" color="primary" onClick=() => setupDialog(item.Answers)>
          Answers
        </Button>
      </div>
    </div>
  </Card>
</Grid>;

这用于样式:

const useStyles = makeStyles((theme) => (
  root: 
    flexGrow: 1,
  ,
  cards: 
    padding: theme.spacing(2),
    height: "95%",
  ,
  details: 
    display: "flex",
    flexDirection: "column",
  ,
  space: 
    marginTop: theme.spacing(1),
  ,
));

【问题讨论】:

【参考方案1】:

给你一个解决方案

const useStyles = makeStyles((theme) => (
  root: 
    flexGrow: 1,
  ,
  cards: 
    padding: theme.spacing(2),
    height: "95%",
  ,
  details: 
    display: "flex",
    flexDirection: "column",
  ,
  space: 
    marginTop: theme.spacing(1),
  ,
  question: 
    overflow: "hidden",
    display: "-webkit-box",
    WebkitLineClamp: 2,
    WebkitBoxOrient: "vertical"
  
));

<Grid key=item.Qid item xs=12 sm=4>
  <Card className=classes.cards>
    <div className=classes.details>
      <CardContent>
        <Typography component="h5" variant="h5" align="center">
          Question
        </Typography>
        <Typography variant="subtitle1" color="textSecondary" align="center" className=classes.space>
          item.Qid
        </Typography>
        <Typography variant="subtitle1" color="textSecondary" className=classes.question>
          item.Question
        </Typography>
        <Typography component="h5" variant="h5" align="center" className=classes.space>
          Sentiment
        </Typography>
        <Typography variant="subtitle1" color="textSecondary" align="center" className=classes.space>
          item.Sentiment
        </Typography>
      </CardContent>

      <CardMedia className=classes.cover>
        item.Sentiment ? renderPieChartForSentimentAnalysis(item.SentimentScore) : "No data to display"
      </CardMedia>

      <div align="center" className=classes.space>
        <Button variant="outlined" color="primary" onClick=() => setupDialog(item.Answers)>
          Answers
        </Button>
      </div>
    </div>
  </Card>
</Grid>;

question 类会将行数限制为 2。

【讨论】:

以上是关于Material UI 卡片内容高度/卡片内容固定到底部的主要内容,如果未能解决你的问题,请参考以下文章

angular-material md-card 动态高度

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

我想在建立之前得到一个固定宽度的小部件高度。

Material-ui卡片翻转动画

如何根据内容自动调整卡片视图的大小

卡片的 UI/内容加载器(如 fb)