romano
Estoy creando una página y quiero que un elemento Material UI tenga una imagen de fondo usando background-image
Propiedad CSS. Lo busqué en Google, por supuesto, y hay soluciones, pero por alguna razón, no puedo ver esa imagen.
PS1: incluso cambiar ese elemento Material UI a regular no me ha ayudado en absoluto.
PS2: cuando estoy usando el contenedor interior, se muestra, pero eso no es lo que quiero.
ACTUALIZACIÓN 1: Intenté agregar altura y ancho al contenedor, aún no tuve suerte…
import React from 'react';
import Paper from 'material-ui/Paper';
import IconButton from 'material-ui/IconButton';
import ActionHome from 'material-ui/svg-icons/action/home';
const styles = {
paperContainer: {
backgroundImage: `url(${"static/src/img/main.jpg"})`
}
};
export default class Home extends React.Component{
render(){
return(
<Paper style={styles.paperContainer}>
</Paper>
)
}
}
Romain Le Qllc
Debe importar la imagen de la siguiente manera, utilizando la ruta relativa.
import React from 'react';
import Paper from 'material-ui/Paper';
import IconButton from 'material-ui/IconButton';
import ActionHome from 'material-ui/svg-icons/action/home';
import Image from '../img/main.jpg'; // Import using relative path
const styles = {
paperContainer: {
backgroundImage: `url(${Image})`
}
};
export default class Home extends React.Component{
render(){
return(
<Paper style={styles.paperContainer}>
Some text to fill the Paper Component
</Paper>
)
}
}
-
Lamentablemente no he ayudado 🙁
– romano
06/11/2017 a las 20:40
-
Para poder importar y usar imágenes como esta, debe usar github.com/webpack-contrib/file-loader @Roman lo estás usando?
– Eugene Tsakh
06/11/2017 a las 20:55
-
@EugeneTsakh sí, tengo esa dependencia cumplida. El paquete va sin un error. (“cargador de archivos”: “^0.11.2”)
– romano
6 de noviembre de 2017 a las 21:01
-
Mmmmh eso es raro, funciona en mi aplicación simple de crear-reaccionar… ¿Intentaste usar la imagen de una manera simple?
<img src={Image} />
para ver si la importación funciona? ¡Oh, podría haberlo encontrado! ¿Puso algún texto en su<Paper>
solo para comprobar si mi solución funciona? acabo de actualizar mi respuesta– Romain Le Qllc
6 de noviembre de 2017 a las 21:27
-
Ya publiqué una respuesta a esta pregunta, sin embargo, también probé su solución. no me funciona 🙁
– romano
8 de noviembre de 2017 a las 20:19
romano
He encontrado una solución para mi caso. En realidad, establecer la altura del contenedor en píxeles ha ayudado.
Aquí está el código:
import React from 'react';
const styles = {
paperContainer: {
height: 1356,
backgroundImage: `url(${"static/src/img/main.jpg"})`
}
};
export default class Home extends React.Component {
render() {
return (
<div style={styles.paperContainer}>
</div>
)
}
}
Conseguí que esto funcionara para material-ui, donde el relleno en mi elemento principal era de 24 px, así que agregué 48 px al ancho de la imagen de fondo para que funcione…
const styles = {
heroContainer: {
height: 800,
backgroundImage: `url(${"../static/DSC_1037.jpg"})`,
backgroundSize: 'cover',
backgroundPosition: 'center',
width: `calc(100vw + 48px)`,
margin: -24,
padding: 24,
}
};
<Grid
container
direction="column"
justify="flex-end"
alignItems="right"
style={styles.heroContainer} >
<Grid item>Goes here</Grid>
</Grid>
-
Se supone que esta es la respuesta aceptada.
– Pablo
5 de febrero a las 20:57
Tuve los mismos problemas mientras trabajaba con Material UI React y Create React App. Aquí está la solución que funcionó para mí. Tenga en cuenta que configuré un alias de paquete web para la ruta relativa
import BackgroundHeader from "assets/img/BlueDiamondBg.png"
const BackgroundHead = {
backgroundImage: 'url('+ BackgroundHeader+')'
}
<div style={BackgroundHead}>
Como dijo Romainwn, debe importar la imagen al archivo. Asegúrese de usar la ruta relativa al padre, por lo que en lugar de
static/src/img/main.jpg #looks for static folder from current file location
Hacer
/static/src/img/main.jpg #looks for file from host directory:
Otro truco para hacerlo sería agregar una etiqueta de estilo en línea al componente:
import React from 'react';
import Paper from 'material-ui/Paper';
import IconButton from 'material-ui/IconButton';
import ActionHome from 'material-ui/svg-icons/action/home';
import Image from '../img/main.jpg'; // Import using relative path
export default class Home extends React.Component{
render(){
return(
<Paper style="background:path/to/your/image;">
</Paper>
)
}
}
M.Islam
Puedes usar accesorios sx en MUI v5
import React from 'react';
import Paper from 'material-ui/Paper';
import Image from '../img/main.jpg';
export default class Home extends React.Component{
render(){
return(
<Paper sx={{ backgroundImage: `url(${Image})` }}>
</Paper>
)
}
}