#javascript #css #reactjs #material-ui
#javascript #css #reactjs #материал-пользовательский интерфейс
Вопрос:
как вы можете видеть здесь https://material-ui.com/components/cards образец карточки с фотографией ящерицы. при наведении курсора мыши на cardActionArea она становится темнее (светлее) в зависимости от темы, а при нажатии на карточку изображение становится светлее (темнее), начиная с указателя мыши. теперь у меня есть два вопроса: 1- как я могу изменить цвет эффекта щелчка? например, я хочу, чтобы фотография становилась красной (меняла оттенок), когда пользователь нажимает на нее 2- Я реализовал свой собственный эффект наведения, при котором при наведении курсора карта немного поднимается (коды ниже). как я могу отключить эффект наведения по умолчанию, который изменяет цвет изображения?
const useStyles = makeStyles({
root: {
width: 345,
margin: 5,
'amp;:hover': {
transform: 'translateY(-5px) !important'
},
},
media: {
maxHeight: 350,
marginBottom:-3
},
});
Ответ №1:
Вы должны иметь возможность отключить события указателя, которые остановят эффекты наведения по умолчанию (обратите внимание, что это также остановит события onClick, поскольку отключит все события мыши):
const useStyles = makeStyles({
root: {
width: 345,
margin: 5,
'amp;:hover': {
pointerEvents: 'none',
transform: 'translateY(-5px) !important'
},
},
media: {
maxHeight: 350,
marginBottom:-3
},
});
Комментарии:
1. спасибо за ваш ответ. как вы сказали, это остановит события onClick, и мне это нужно. Мне нужно знать, какое свойство css будет изменяться по умолчанию при наведении mui, чтобы я мог сам изменить его значение и перезаписать его
2. Я не уверен, что понял ваш вопрос. Вы спрашиваете, какие свойства css изменяются по умолчанию при наведении курсора мыши на определенный компонент Material-UI? Для этого вам нужно будет использовать инструменты консоли и отладчика браузера, чтобы увидеть css, сгенерированный классами Material-UI.
3. наведение — это событие, которое вы хотите предотвратить, поэтому его нужно будет перенести непосредственно в
root
псевдокласс, а не в псевдокласс.
Ответ №2:
const {
Card,
CardActionArea,
CardActions,
CardContent,
CardMedia,
Button,
Typography,
makeStyles
} = MaterialUI;
const useStyles = makeStyles((theme) => ({
root: {
maxWidth: 345,
transition: theme.transitions.create("transform", {
easing: theme.transitions.easing.easeInOut,
duration: theme.transitions.duration.standard
}),
"amp;:hover": {
transform: "translateY(-5px)"
}
},
focus: {
"amp;amp;amp;": {
opacity: 0
}
},
ripple: {
color: "red"
}
}));
function ImgMediaCard() {
const classes = useStyles();
return (
<Card className={classes.root}>
<CardActionArea
classes={{ focusHighlight: classes.focus }}
TouchRippleProps={{ className: classes.ripple }}
>
<CardMedia
component="img"
alt="Contemplative Reptile"
height="140"
image="https://material-ui.com/static/images/cards/contemplative-reptile.jpg"
title="Contemplative Reptile"
/>
<CardContent>
<Typography gutterBottom variant="h5" component="h2">
Lizard
</Typography>
<Typography variant="body2" color="textSecondary" component="p">
Lizards are a widespread group of squamate reptiles, with over 6,000
species, ranging across all continents except Antarctica
</Typography>
</CardContent>
</CardActionArea>
<CardActions>
<Button size="small" color="primary">
Share
</Button>
<Button size="small" color="primary">
Learn More
</Button>
</CardActions>
</Card>
);
}
ReactDOM.render(<ImgMediaCard />, document.getElementById('root'))
<script src="https://unpkg.com/react@latest/umd/react.development.js" crossorigin="anonymous"></script>
<script src="https://unpkg.com/react-dom@latest/umd/react-dom.development.js"></script>
<script src="https://unpkg.com/@material-ui/core@latest/umd/material-ui.development.js" crossorigin="anonymous"></script>
<script src="https://unpkg.com/babel-standalone@latest/babel.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700amp;display=swap" />
<div id="root"></div>