Я пытаюсь создать сводную страницу и использовать диалог MUI для достижения этой цели.
Вот такой у меня диалог:
Но я пытаюсь сделать так, чтобы две стороны выровнялись вверху вместо того, чтобы было место над «Заголовком 2». Кажется, что типографии добавляются снизу вверх, начиная с последней в каждом div. Использование JSX Im:
<Dialog className = {classes.dialog} open = {open} fullWidth maxWidth = "md">
<DialogTitle disableTypography className = {classes.dialogTitle}>
<Typography align = "center" variant = "h5">
Summary
</Typography>
</DialogTitle>
<DialogContent dividers>
<div
className = {
booleanVar === true ? classes.test1 : classes.test3
}
>
<Typography
align = "center"
variant = "h6"
>{`Title 1`}</Typography>
<Typography align = "left" variant = "h6">{`Three`}</Typography>
<Typography align = "left" variant = "h6">{`Line`}</Typography>
<Typography align = "left" variant = "h6">{`Email:`}</Typography>
</div>
{booleanVar === true ? (
<div className = {classes.test2}>
<Typography
align = "center"
variant = "h6"
>{`Title 2`}</Typography>
<Typography variant = "h6">{`Two Line`}</Typography>
<Typography variant = "h6">{`Example`}</Typography>
</div>
) : null}
</DialogContent>
</Dialog>
Кроме того, CSS:
const useStyles = makeStyles((theme) => ({
dialog: {
borderRadius: "10px",
height: "auto",
justifyContent: "center",
margin: "auto",
width: "auto"
},
dialogTitle: {
padding: "6px 24px 16px 24px",
textAlign: "center"
},
test1: {
width: "49%",
margin: "auto",
textAlign: "left",
display: "inline-block",
paddingRight: "5px"
},
test2: {
width: "49%",
margin: "auto",
textAlign: "center",
display: "inline-block",
borderLeft: "0.1em solid #e0e0e0",
paddingLeft: "5px"
},
test3: {
width: "100%",
margin: "auto",
textAlign: "center",
display: "inline-block"
}
}));
Если кто-нибудь знает решение с помощью CSS, это то, что я предпочитаю, но я открыт для любого рабочего решения!
Это не позволяет мне добавить material-ui/core в качестве зависимости
Добавьте свой код сюда, я создал его здесь: codeandbox.io/s/bold-meadow-iv9z8 Убедитесь, что вы сохранили его после добавления кода, и снова поделитесь ссылкой
Извините за задержку с ответом, у меня есть код здесь: codeandbox.io/s/nervous-chatterjee-8rgqh?file=/src/App.js Кроме того, изменение размера окна может привести к тому, что второй div окажется под первым а не рядом с ним, поэтому, если вы знаете решение этой проблемы, я был бы признателен @PrathameshKoshti
Мне не удалось найти источник проблемы, но я добился желаемого макета.
Я немного изменил файл myDialog.js, удалил margin: "auto"
, так как он не служил никакой цели для вашего кода из всех трех тестовых классов, а именно test1
, test2
и test3
.
После этого импортировали компонент Box
из Material UI следующим образом:
import {
Box, // here
Button,
Typography,
Dialog,
DialogActions,
DialogTitle,
DialogContent,
IconButton
} from "@material-ui/core";
Затем обернули содержимое диалога компонентом <Box>
и добавили свойство display = "flex"
, чтобы применить макет flexbox к обернутому div следующим образом:
<Box display = "flex">
<div
className = {
booleanVar !== undefined ? classes.test1 : classes.test3
}
>
<Typography align = "center" variant = "h6">{`Title 1`}</Typography>
<Typography align = "left" variant = "h6">{`Three`}</Typography>
<Typography align = "left" variant = "h6">{`Line`}</Typography>
<Typography align = "left" variant = "h6">{`Example`}</Typography>
</div>
{booleanVar !== undefined ? (
<div className = {classes.test2}>
<Typography align = "center" variant = "h6">{`Title 2`}</Typography>
<Typography align = "left" variant = "h6">{`Two Line`}</Typography>
<Typography align = "left" variant = "h6">{`Example`}</Typography>
</div>
) : null}
</Box>
Вы можете проверить коды и ящик здесь: https://codesandbox.io/s/still-https-71skf
Если вы разместите эту воспроизводимую проблему на codeandbox, ее будет проще решить.