Используя Material UI, как заставить два изображения складываться вертикально справа от другого большего изображения?

#html #reactjs #material-ui

#HTML #reactjs #material-ui

Вопрос:

Предположим, у меня есть три изображения. Одно в два раза больше высоты двух других, и я хотел бы создать простую сетку, в которой два меньших изображения располагаются вертикально справа от большего. Соотношение сторон фотографий означает, что они будут работать в макете с пятью столбцами, если больший занимает 2 строки х 3 столбца, а меньшие — 1 строка х 2 столбца. Я использую компонент Material UI GridList (https://material-ui.com/api/grid-list /) и следуя документации API. Независимо от того, какие настройки я использую, одно из меньших изображений отображается справа от большего, затем под ним находится пустая область равного размера, а третье изображение укладывается вертикально под большим слева.

Я подозреваю, что это не зависит от реакции, а какая-то простая проблема HTML или CSS, с которой я не знаком. Наверное, я ожидал, что компонент сделает это автоматически. В демо (https://material-ui.com/demos/grid-list /) он автоматически заполняет горизонтальное пространство изображениями, но теперь, когда я смотрю, он не появляется, сделайте то же самое для вертикального пространства.

 import React, {Component} from "react";
import ReactDOM from 'react-dom';
import GridList from '@material-ui/core/GridList';
import GridListTile from '@material-ui/core/GridListTile';
import GridListTileBar from '@material-ui/core/GridListTileBar';

export class ImageGrid extends React.Component{

  constructor(props){
    super(props);
  }

  render() {

    const tileData = [
    {
      img: "ex_1.jpg",
      title: 'Image',
      author: 'author',
      cols: 3,
      rows:2,
    },
    {
      img: "ex_3.jpg",
      title: 'Image',
      author: 'author',
      cols: 2,
      rows:1,
    },
    {
      img: "ex_2.jpg",
      title: 'Image',
      author: 'author',
      cols: 2,
      rows:1,
    },

  ];
  const styles = theme => ({
    root: {
      display: 'flex',
      flexWrap: 'wrap',
      justifyContent: 'space-around',
      overflow: 'hidden',
      backgroundColor: theme.palette.background.paper,
    },
    gridList: {
      width: 1384,
      height: 320,
      float:right,
    },
  });


     return (

     <div className={styles.root}>
      <GridList component='div' cellHeight={150} spacing={8} cols={5} className={styles.gridList}>
        {tileData.map(tile => (
          <GridListTile component='div' cols={tile.cols} rows={tile.rows} key={tile.img}>
            <img src={tile.img} alt={tile.title} />
            <GridListTileBar
              title={tile.title}
              subtitle={tile.author}
            />
          </GridListTile>
        ))}
      </GridList>
    </div>

  );
  }
}