Я использую шаблон цены для своего веб-сайта для другой цели и очень хотел бы изменить порядок элементов Ценообразование в представлении столбца, когда экран меньше.
Ссылки на источник и демо https://github.com/mui-org/material-ui/tree/master/docs/src/pages/getting-started/templates/pricing https://material-ui.com/getting-started/templates/pricing/
В этом случае я хочу переместить контейнер Pro поверх другие два контейнера, когда разрешение экрана ниже 960 пикселей (или также размер «md» в пользовательском интерфейсе материала)
import React from 'react';
import AppBar from '@material-ui/core/AppBar';
import Button from '@material-ui/core/Button';
import Card from '@material-ui/core/Card';
import CardActions from '@material-ui/core/CardActions';
import CardContent from '@material-ui/core/CardContent';
import CardHeader from '@material-ui/core/CardHeader';
import CssBaseline from '@material-ui/core/CssBaseline';
import Grid from '@material-ui/core/Grid';
import StarIcon from '@material-ui/icons/StarBorder';
import Toolbar from '@material-ui/core/Toolbar';
import Typography from '@material-ui/core/Typography';
import Link from '@material-ui/core/Link';
import { makeStyles } from '@material-ui/core/styles';
import Container from '@material-ui/core/Container';
import Box from '@material-ui/core/Box';
const useStyles = makeStyles((theme) => ({
'@global': {
ul: {
margin: 0,
padding: 0,
listStyle: 'none',
},
},
heroContent: {
padding: theme.spacing(8, 0, 6),
},
cardHeader: {
backgroundColor:
theme.palette.type === 'light' ? theme.palette.grey[200] : theme.palette.grey[700],
},
cardPricing: {
display: 'flex',
justifyContent: 'center',
alignItems: 'baseline',
marginBottom: theme.spacing(2),
},
}));
const tiers = [
{
title: 'Free',
price: '0',
description: ['10 users included', '2 GB of storage', 'Help center access', 'Email support'],
buttonText: 'Sign up for free',
buttonVariant: 'outlined',
},
{
title: 'Pro',
subheader: 'Most popular',
price: '15',
description: [
'20 users included',
'10 GB of storage',
'Help center access',
'Priority email support',
],
buttonText: 'Get started',
buttonVariant: 'contained',
},
{
title: 'Enterprise',
price: '30',
description: [
'50 users included',
'30 GB of storage',
'Help center access',
'Phone & email support',
],
buttonText: 'Contact us',
buttonVariant: 'outlined',
},
];
export default function Pricing() {
const classes = useStyles();
return (
<React.Fragment>
<Container maxWidth="md" component="main">
<Grid container spacing={5} alignItems="flex-end">
{tiers.map((tier) => (
// Enterprise card is full width at sm breakpoint
<Grid item key={tier.title} xs={12} sm={tier.title === 'Enterprise' ? 12 : 6} md={4}>
<Card>
<CardHeader
title={tier.title}
subheader={tier.subheader}
titleTypographyProps={{ align: 'center' }}
subheaderTypographyProps={{ align: 'center' }}
action={tier.title === 'Pro' ? <StarIcon /> : null}
className={classes.cardHeader}
/>
<CardContent>
<div className={classes.cardPricing}>
<Typography component="h2" variant="h3" color="textPrimary">
${tier.price}
</Typography>
<Typography variant="h6" color="textSecondary">
/mo
</Typography>
</div>
<ul>
{tier.description.map((line) => (
<Typography component="li" variant="subtitle1" align="center" key={line}>
{line}
</Typography>
))}
</ul>
</CardContent>
<CardActions>
<Button fullWidth variant={tier.buttonVariant} color="primary">
{tier.buttonText}
</Button>
</CardActions>
</Card>
</Grid>
))}
</Grid>
</Container>
</React.Fragment>
);
}
Я пытался назначить порядок: -1 для поля «Pro», но оно просто не отображает его поверх других 2. На маленьких экранах Pro всегда идет посередине: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout/Ordering_Flex_Items