Rumah > Soal Jawab > teks badan
Bagaimana untuk membuat kad ini mempunyai ketinggian yang sama dalam mui? Saya tidak suka menetapkan ketinggian tetap. Ini perlu berubah secara dinamik. Semua ketinggian kad perlu ditetapkan kepada ketinggian tertinggi dalam tapak web. Antara butang dan kandungan kita boleh menambah ruang. Bagaimana saya melakukan ini?
Masalah yang anda nampaknya hadapi ialah anda ingin membuat kad dengan ketinggian kandungan berubah menggunakan perpustakaan Bahan-UI, tetapi anda mahu semua kad mempunyai ketinggian yang sama tanpa menetapkan ketinggian tetap. Anda juga ingin menambah ruang antara butang dan kandungan.
Kod Kotak Pasir
function ItemRow({ page_block }) { return page_block.map((page_block_item, index) => ( <Grid justifyContent="space-between" alignItems="center" align="center" xs={12} sm={6} md={4} lg={4} > <Grid justifyContent="center" // alignItems="center" xs={10.5} sm={12} md={11} lg={12} > <Card page_block_item={page_block_item} key={index} /> </Grid> </Grid> )); } const Card = ({ page_block_item: block_detail }) => { const [open, setOpen] = useState(false); const router = useRouter(); const [cart, setCart] = useAtom(cartAtom); return ( <Grid key={block_detail.id} justifyContent="center" display={'flex'} flexGrow={1} alignItems="stretch" > <Box sx={{ position: 'relative', display: 'flex', flexDirection: 'column', height: '100%', boxShadow: '0px 6px 12px -6px rgba(24, 39, 75, 0.12)', }} justifyContent="space-between" border="1px solid #E3E3E3" borderRadius="8px" overflow="hidden" margin={2} flexGrow={1} alignItems="stretch" > <Grid sx={{ position: 'relative' }}> <Grid item position="relative" sx={{ aspectRatio: '3/2', height: '100%' }} > <NextImage className="image-cover" media={block_detail.media} /> </Grid> <Box sx={{ position: 'absolute', right: 0, bottom: 20, }} > <ShareIcon sx={{ background: '#FC916A', marginRight: '15px', padding: '5px', height: '30px', width: '30px', borderRadius: '50%', color: '#FFFFFF', cursor: 'pointer', '&:hover': { background: '#FFFFFF', color: '#FC916A', }, }} /> <BookmarkBorderIcon sx={{ background: '#FC916A', marginRight: '15px', padding: '5px', height: '30px', width: '30px', borderRadius: '50%', color: '#FFFFFF', cursor: 'pointer', '&:hover': { background: '#FFFFFF', color: '#FC916A', }, }} /> </Box> </Grid> <Box sx={{ flexGrow: 1, display: 'flex', flexDirection: 'column', height: '100%', maxHeight: 'fix-content', }} padding={2} > <Grid item sx={{ textAlign: 'left' }}> <StyledText my={1} variant="H_Regular_Tagline" color="primary.main" content={block_detail.info_title} /> </Grid> <Grid item sx={{ textAlign: 'left' }}> <StyledText my={1} variant="H_Regular_Body" color="secondary.dark" content={block_detail.info_description} /> </Grid> </Box> <Grid item sx={{ position: 'relative' }}> <Link href={`/${router.query.centerName}/post/donation/${block_detail?.slug}`} > <StyledButton variant="H_Regular_H4" sx={{ width: '90%' }} > {block_detail.info_action_button?.text} </StyledButton> </Link> </Grid> </Box> </Grid> ); };
P粉6961462052024-03-22 11:52:56
Secara lalai, setiap item grid mempunyai ketinggian maksimum yang sama.
Anda boleh menetapkan ketinggian komponen di bawah item grid kepada 100%
.
Berikut adalah contohnya. https://stackblitz.com/edit/react-8qnvck? File=demo.tsx,MediaControlCard.tsx
Dalam contoh ini, sifat MediaControlCard
组件使用 Card
和 sx
menetapkan ketinggian kepada 100%.
Jika anda mengalih keluar atribut sx
anda akan melihat sesuatu yang serupa dengan kes anda.
Dan saya rasa anda tidak perlu masuk Box
组件中使用 display:flex
.
Sebab tak berkesan kalau pakai display:flex
,则height:100%
.