#html #css #reactjs #image #background-image
#HTML #css — код #reactjs #изображение #фоновое изображение
Вопрос:
Я попытался установить изображение на все страницы в качестве фона. Я попытался установить стиль тега body для index.html
<body style="background-image: url(%PUBLIC_URL%/bp.jpg)">
Но это ничего не дало.
Поэтому я попытался добавить его в body
тег в index.css in src/
. Я переместил изображение из общей папки в /src
.
Но и это тоже ничего не дало.
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
background-image: url("./bg.jpg");
}
Итак, моей последней попыткой было App.css, где находится моя маршрутизация:
App.js:
import './App.css';
import { BrowserRouter as Router, Route } from "react-router-dom";
import CharacterFormView from "./views/CharacterFormView";
import SkillTreeView from "./views/SkillTreeView";
function App() {
return (
<div className="App">
<Router>
<Route exact path="/" component={CharacterFormView}/>
<Route path="/character-form" component={CharacterFormView}/>
<Route path="/skill-trees" component={SkillTreeView}/>
</Router>
</div>
);
}
export default App;
App.css:
.App {
text-align: center;
background: url("./bg.jpg") no-repeat;
background-size: cover;
}
В этой последней попытке установите фоновое изображение для первых двух маршрутов "/"
и "/character-form"
.
Даже там он не на весь экран, а только до половины страницы.
Если я перейду к "/skill-trees"
— там нет изображения на заднем плане
Итак, как я могу установить одно и то же изображение в качестве фонового изображения для всех страниц? Изображение не должно повторяться только во весь экран. Я уверен, что есть лучший способ установить его в каждом CSS-файле моего проекта.
Заранее благодарю.
Ответ №1:
Фон может быть включен в ваш App.css, но вам нужно использовать его следующим образом:
.App {
text-align: center;
background-image: url("./bg.jpg"); // here you had it wrong
background-size: cover;
}
Таким образом, ваш фон будет отображаться в вашем основном компоненте, App.js в вашем случае, следовательно, во всех его дочерних элементах
Комментарии:
1. мой синтаксис является допустимым css. Посмотрите на это. И я тоже попробовал ваше решение, но оно по-прежнему показывает фоновое изображение до половины страницы. Другая половина пуста. И он не работает с / skill-деревьями, как я описал в вопросе
2. Возможно, с вами происходит то, что высота ваших элементов определяет высоту вашей страницы. Обычно я создаю верхний элемент с
height: 100vh
помощью и все дочерние элементы могут использоватьсяheight: 100%
для расширения на всю высоту моей страницы. Возможно, вам потребуется добавитьoverflow: auto
их для правильной прокрутки, но вы будете уверены, что ваш элемент покрывает всю страницу и, следовательно, имеет фоновое изображение.3. @LucasPadovan большое вам спасибо. Это устранило проблему. Я сел . Приложение к высоте: 100vh. После этого изображение расширилось до полного размера на всех страницах