MUI – ¿Cómo alinear un componente al centro/derecha?

3 minutos de lectura

Avatar de usuario de Vedant Agarwala
Agarwala vedante

Quiero alinear mi botón a la derecha del padre.

Me preguntaba si hay un correcto manera de hacerlo en MUI. Podría usar:

<Grid container justify="flex-end">

Pero entonces tendría que usar otro <Grid item />. Parece demasiado trabajo.

O tal vez estoy mejor usando CSS simple y antiguo, jugando con float: right y tratar con la altura cero aparente del elemento.

Avatar de usuario de ThomasP1988
ThomasP1988

ANTES DE MUI 5:

Prueba esto

<Grid container justify="flex-end">
     <Button>Example</Button>
</Grid>

ACTUALIZACIÓN MUI 5: (Gracias a Dipak)

el accesorio justify de ForwardRef(Grid) es obsoleto. Usar justifyContent en cambio, se cambió el nombre del accesorio.

<Grid container justifyContent="flex-end">
     <Button>Example</Button>
</Grid>

Actualización: la mejor solución es la respuesta de NearHuscarl, es mejor que uses Stack que Grid.

  • ¿Qué pasa si hay dos elementos de Grid dentro del contenedor Grid y quiero alinear solo el segundo, verdad?

    – Imran Ahmed

    21 de abril de 2021 a las 19:17

  • luego transforma su elemento en un contenedor (una cuadrícula puede ser ambas cosas) para que su elemento sea algo así como:

    – Thomas P1988

    22 de abril de 2021 a las 7:20

  • agregando <Grid item xs={12} sm={6} container justifyContent="flex-end"> trabajó para mi. Tuve que usar justifyContent

    – Prakhar

    3 de febrero a las 22:47

Si desea alinear elementos dentro del <Grid item> puedes usar un envoltorio Box componente de la siguiente manera:

<Grid container>
  <Grid item sm={6}>
    <Box display="flex" justifyContent="flex-end">
      <Button>Button Aligned To The Right</Button>
    </Box>
  </Grid>
</Grid>

Ver el documentos para más opciones de posicionamiento.

En MUI v5puedes usar Stack para mostrar un conjunto de componentes en una fila o una columna. Stack es un flexbox, por lo que solo necesita configurar el justifyContent prop para alinear el elemento en el interior:

<Stack direction="row" justifyContent="end">
  <Button variant="contained">Item 1</Button>
</Stack>

Demostración de Codesandbox

Si no desea utilizar el componente Grid, debe confiar en CSS.

Pero si usa Material-UI, debe usar JSS (CSS-IN-JS) y no CSS simple.

En CSS puede usar cualquiera de estas soluciones, por ejemplo. “text-align” es el más simple.

  • text-align: right
  • float: right
  • caja flexible
    • padre con: display: flex
    • niño con : align-content: flex-end

Use el componente Box con flex.

<Box display="flex" flexDirection="column" >
  <... other stuff/>
</Box>

Puedes aprender más aquí

Para la última versión de material-ui 5 use justificarContent=”flex-end” o alignContent que es equivalente a css text-align y flex-end=right

    <Grid container alignContent="flex-end">
         <Button>Example</Button>
    </Grid>

or
    <Grid item justifyContent="flex-end">
         <Button>Example</Button>
    </Grid>

Para material antiguo-ui versión 4

    <Grid item justify="flex-end">
         <Button>Example</Button>
    </Grid>

Avatar de usuario de Sailist
velero

            <Toolbar sx={{ display: "flex", justifyContent: "space-between" }}>
                <Typography sx={{ fontWeight: 600 }}>
                    Recent Repositories
                </Typography>
                <Box>
                    {/* <Typography></Typography> */}
                    <Button error>+ New</Button>
                </Box>
            </Toolbar>

¿Ha sido útil esta solución?