Reputation: 18819
I want to align my button to the right of the parent.
I was wondering if there is a proper way to do it in Material UI. I could use:
<Grid container justify="flex-end">
But then I would have to use another <Grid item />
. Seems like too much work.
Or maybe I am just better off using plain old CSS, messing around with float: right
, and dealing with the apparent zero height of the element.
Upvotes: 99
Views: 253921
Reputation: 81663
In Material UI v5, you can use Stack
to display a set of components on a row or a column. Stack
is a flexbox so you only need to set the justifyContent
prop to align the item inside:
<Stack direction="row" justifyContent="end">
<Button variant="contained">Item 1</Button>
</Stack>
Upvotes: 18
Reputation: 5025
Try this
<Grid container justify="flex-end">
<Button>Example</Button>
</Grid>
The prop
justify
ofForwardRef(Grid)
is deprecated. UsejustifyContent
instead, the prop was renamed.
<Grid container justifyContent="flex-end">
<Button>Example</Button>
</Grid>
Upvotes: 150
Reputation: 1215
As this question is not specified towards Grid, here a more general answer:
there are other components for which the parameters need to be provided in an sx.
<Toolbar sx={{ justifyContent: 'flex-end' }}>
Upvotes: 0
Reputation: 164
<Toolbar sx={{ display: "flex", justifyContent: "space-between" }}>
<Typography sx={{ fontWeight: 600 }}>
Recent Repositories
</Typography>
<Box>
{/* <Typography></Typography> */}
<Button error>+ New</Button>
</Box>
</Toolbar>
Upvotes: 2
Reputation: 4913
If you would like to align items within the <Grid item>
you can use a wrapping Box
component as follows:
<Grid container>
<Grid item sm={6}>
<Box display="flex" justifyContent="flex-end">
<Button>Button Aligned To The Right</Button>
</Box>
</Grid>
</Grid>
See the docs for more positioning options.
Upvotes: 52
Reputation: 7130
For Latest material-ui version 5 use justifyContent="flex-end" or alignContent which is equivalent to css text-align and flex-end=right
<Grid container alignContent="flex-end">
<Button>Example</Button>
</Grid>
or
<Grid item justifyContent="flex-end">
<Button>Example</Button>
</Grid>
For old material-ui version 4
<Grid item justify="flex-end">
<Button>Example</Button>
</Grid>
Upvotes: 1
Reputation: 455
Use the Box component with flex.
<Box display="flex" flexDirection="column" >
<... other stuff/>
</Box>
You can learn more here
Upvotes: 4
Reputation: 637
Material UI's Grid Component has helper props to achieve this.
<Grid align-items-xs-center justify-xs-flex-end>
<Button>Click me</Button>
</Grid>
You can find the docs here.
Upvotes: -3
Reputation: 2348
If you do not want to use the Grid component, you have to rely on CSS.
But if you use Material-UI you should use JSS (CSS-IN-JS) and not plain CSS.
In CSS you may use any of these solutions for example. "text-align" being the simplest one.
text-align: right
float: right
display: flex
align-content: flex-end
Upvotes: 3