React не загружает фоновое изображение

#reactjs #electron

#reactjs #электрон #electron

Вопрос:

Я пытаюсь загрузить полноэкранное фоновое изображение на целевой странице, но, похоже, я не могу загрузить изображение, когда ссылаюсь на него в CSS

Я могу ссылаться на него из своего компонента React, используя <img src={require('../assets/img/header.jpg')} /> , и он загружается правильно, но если я загружаю его в файл CSS, он не работает

Мой файл CSS выглядит следующим образом

 body, html {
    overflow-y: hidden;
    height: 100%;
}

.bg {
    background: linear-gradient( rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5) ), url("../img/header.jpg");
    height: 100%;
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
}

}
  

и мой компонент react

 import React, { Component } from 'react';
import '../assets/css/landing.css'

class Landing extends Component {
    render() {
        return (
            <div className="bg">
                <div className="center">
                    <a href="index.html" className="button is-info is-rounded is-centered is-medium">Get Started</a>
                </div>
            </div>
        );
    }
}

export default Landing;
  

Все, что отображается, — это кнопка «Начать», а не изображение

Ответ №1:

Я предполагаю, что вы используете create-react-app или шаблон для React, который использует image-loader . Всякий раз, когда вы выполняете требование, оно загружает изображение как изображение данных или (если файл очень большой) как файл с путем к файлу, отличным от заданного вами (потому что React затем объединит и будет знать, куда именно поместить изображение и ссылаться на него).

Ссылка на него в CSS может быть не идеальным решением из-за причин, упомянутых выше.

Вы всегда можете попробовать этот подход (установка фонового изображения).:

 import React, { Component } from 'react';

// This is more of a recommendation, you can still use the require if you want to
import Image from '../../image';   

export default function() {
    return (
        <div className="to-change-background-of" style={{ backgroundImage: `url(${Image})`}} />
    );
}
  

Это должно вывести изображение, используя причины, которые я указал выше, на этот раз установив фоновое изображение.

Одна вещь (я не уверен, почему) в этом заключается в том, что background (когда вы используете CSS) свойство имеет тенденцию ломаться в некоторых браузерах. Итак, в CSS

 .to-change-background {
    background: #EEE no-repeat center;
}
  

Это может привести к поломке кода. Возможно, вам придется разбить его (игнорируя ворсинку).

 .to-change-background {
    background-color: #EEE;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: center;
}
  

Комментарии:

1. Похоже, это не сработало, если я открою инструменты разработчика и открою URL изображения в источниках, я все еще могу видеть изображение, загруженное как с вашей версией, так и с загрузкой его в CSS, что заставляет меня думать, что это ошибка CSS

2. Чего вы надеетесь достичь, пожалуйста?