【发布时间】:2018-09-24 08:14:00
【问题描述】:
我正在使用 Material-ui-next 并尝试以一种非常特殊的方式创建图像。
------ ---------
| | | | 2 |
| | | 1 |---|
| | | | 3 |
------ ---------
我遇到了一些相当奇怪的问题。
1 - 3 出现在 1 下
2 - 2 和 3 不会填满它们的整个空间(突出显示时,无论图像如何,都只使用了一半的内容空间)
3 - 有时我会得到类似于以下的内容:
------ ---------
| | | | 2 |
| | | 1 |---|
| | | | 3 |
| | ---------
------
in that instance, everything on the right isn't extending all the way down
供您参考,如果您关注此link,那么您将转到 material-ui-next GridList 文档。在Advanced Grid List 下,您将看到一张大图和许多小图。我的目标是简单地水平翻转它。
我已经尝试了以下操作:
<GridList cols={4} rows={2}>
{
media.map((file, i) => (
<GridListTile style={{ display: 'flex', flexFlow: 'wrap row' }} cellHeight={200} key={i} cols={i===0 ? 3 : 1} rows={i===0 ? 2 : 1}>
<img src={file.url} />
</GridListTile>
))
}
</GridList>
上面导致3出现在2下面
<GridList cols={2} row={2} className={classes.gridList}>
{
<GridListTile cellHeight={200} key={1} cols={2} rows={2}>
<img src={file.url} />
</GridListTile>
}
</GridList>
</Grid>
<Grid item xs={12} md={3} style={{padding: '14px', paddingLeft: 0}}>
<Typography style={{ visibility: 'hidden' }}>a</Typography>
<GridList>
{
user && user.Media &&
<GridListTile cellHeight={200} style={{paddingBottom: 0}}>
<img src={file.url} />
</GridListTile>
}
</GridList>
<GridList>
{
user && user.Media &&
<GridListTile cellHeight={200} key={1} cols={1}>
<img src={file.url} />
</GridListTile>
}
</GridList>
这解决了问题 1,但问题 2 和 3 仍然存在。
我曾尝试使用原生 flex-box,但每次执行时,应该更大的图像都会转换为其他图像的大小。
这是我用于 flex-box 的 css(确实很少)。
gridContainer: {
display: 'flex',
flexFlow: 'row',
justifyContent: 'space-around',
margin: '3rem 0'
},
编辑 - 新
下面的效果比上面的任何东西都好。两个小的侧面图像完美地工作,并且会随着屏幕改变大小。大图像不会并且将完全固定。
新的 CSS
gridList: {
transform: 'translateZ(0)',
display: 'flex',
justifyContent: 'left',
alignItems: 'left',
overflow: 'hidden',
'& img': {
flexShrink: 1,
minWidth: '200%',
minHeight: '200%'
}
},
gridListSmall: {
transform: 'translateZ(0)',
display: 'flex',
justifyContent: 'left',
alignItems: 'left',
overflow: 'hidden',
'& img': {
flexShrink: 0,
minWidth: '100%',
minHeight: '100%'
}
},
新的 HTML/JSX
<div cols={2} row={2} className={classes.gridList}>
{
<div cellHeight={200} key={1} cols={2} rows={2}>
<img src={file.url} />
</div>
}
</div>
</Grid>
<Grid item xs={12} md={3} style={{padding: '14px', paddingLeft: 0}}>
<Typography style={{ visibility: 'hidden' }}>a</Typography>
<div>
{
user && user.Media &&
<div cellHeight={200} style={{paddingBottom: 0}}>
<img src={file.url} />
</div>
}
</div>
<div>
{
user && user.Media &&
<div cellHeight={200} key={1} cols={1}>
<img src={file.url} />
</div>
}
</div>
【问题讨论】:
标签: javascript css flexbox material-ui