如何使用MU5的sx props仅旋转Grid组件背景图而不影响子组件?
解决Material UI 5中Grid背景图旋转但不影响子组件的问题
直接给Grid设置transform: rotate会把整个组件包括子元素一起旋转,想要只转背景图的话,用伪元素单独承载背景是最稳妥的方案,具体代码修改如下:
<Grid container direction='column' sx={{ position: 'relative', // 让伪元素以Grid为定位基准 '&::before': { content: '""', position: 'absolute', top: 0, left: 0, width: '100%', height: '100%', backgroundImage: `url(${Image})`, transform: 'rotate(90deg)', // 只给背景伪元素加旋转 backgroundSize: '100% 100%', backgroundPosition: 'top left', backgroundRepeat: 'no-repeat', zIndex: -1, // 把背景放在子组件后方,避免遮挡内容 }, // 确保所有子组件在背景上方 '& > *': { position: 'relative', zIndex: 1, } }} > {/* 这里放你的子组件,不会被旋转 */} </Grid>
关键逻辑说明:
- 用
&::before创建一个伪元素,把背景图、旋转属性都绑定在这个伪元素上,这样只有背景会被旋转 - 给Grid设置
position: relative,让伪元素能占满Grid的整个区域 - 通过
z-index控制层级,保证子组件显示在背景上方
内容的提问来源于stack exchange,提问作者Malloc28
相关产品推荐
相关产品推荐

