在开发或构建中创建不加载 css 背景图像的 React 应用程序
create react app not loading css background images in dev or build
有些背景图片无法加载,我遇到了困难。我对最初的create react app做了一些重大修改,我的文件夹结构现在如下:
Note: I have omitted some files & folders, if you need more please let me know.
App/
node_modules/
src/
client/
build/
node_modules/
public/
src/
css/
App.css
images/
tree.png
yeti.png
App.jsx
server/
package.json
Procfile
以下是我创建此问题所采取的步骤:
$ cd src/server && npm run dev
这将启动开发服务器并打开浏览器访问我的应用程序,一切正常,除了页面上的某些元素不显示图像。
Note: I load in an image yeti.png and this renders fine.
App.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import './css/App.css';
import yeti from './images/yeti.png';
const Footer = function(props) {
return (
<div>
<Yeti />
<Trees />
</div>
);
};
const Yeti = function(props) {
return (
<img
src={yeti}
className="yeti yeti--xs"
alt="Yeti"
/>
);
};
const Trees = function(props) {
return (
<div className="trees">
<div className="trees__tree trees__tree--1"></div>
<div className="trees__tree trees__tree--2"></div>
</div>
);
};
ReactDOM.render(
<Footer />,
document.getElementById('root')
);
App.css
.trees {
bottom: 0;
height: 110px;
left: 0;
position: fixed;
width: 100%;
z-index: 1;
}
.trees__tree {
background-size: 30px;
background: url('../images/tree.png') no-repeat;
float: left;
height: 50px;
width: 30px;
}
.trees__tree--1 {
margin: 0 0 0 6%;
}
.trees__tree--2 {
margin: 2% 0 0 4%;
}
当我检查 Chrome 中的元素时,图像的路径似乎是正确的。当我将鼠标悬停在检查器样式选项卡中的图像路径上时,图像出现了。
注意我导入的图片路径和背景图片的路径类似:
如果我将 tree.png
导入为 import tree from './images/tree.png';
并将我的两个 <div>
元素更改为 <img src={tree} role="presentation" className="trees__tree trees__tree--1" />
和 <img src={tree} role="presentation" className="trees__tree trees__tree--2" />
图像当然会加载.
如何让背景图片显示出来?我的应用程序中还有其他背景图片未加载,因此前面提到的创可贴对我没有帮助。我害怕弹出我的应用程序并弄乱配置。
我在构建应用程序时也遇到了同样的问题。
如果您需要查看更多源代码,可以在 https://github.com/studio174/ispellits 查看它,但请记住,我已简化此示例以隔离问题。我遇到的问题实际上是在 Footer.jsx
和 Footer.css
这个问题纯粹是 App.css
文件中 CSS 的问题:
App.css
.trees__tree {
background: url('../images/tree.png') no-repeat;
background-size: 30px; /** moved this property down */
float: left;
height: 50px;
width: 30px;
}
我的问题是我没有定义 background-size: 30px;
。谢谢。
将 package.json 中的主页添加到 运行 在任何 apache 服务器中构建
{
"name": "app",
"version": "0.1.0",
"private": true,
"homepage": "http://{servername}/{foldername}/",
}
然后使用
在 React 中创建构建
npm run build
npm install -g serve
serve -s build
- 复制构建文件夹并像 xampp/htdocs 一样粘贴到服务器中并点击 url
有些背景图片无法加载,我遇到了困难。我对最初的create react app做了一些重大修改,我的文件夹结构现在如下:
Note: I have omitted some files & folders, if you need more please let me know.
App/
node_modules/
src/
client/
build/
node_modules/
public/
src/
css/
App.css
images/
tree.png
yeti.png
App.jsx
server/
package.json
Procfile
以下是我创建此问题所采取的步骤:
$ cd src/server && npm run dev
这将启动开发服务器并打开浏览器访问我的应用程序,一切正常,除了页面上的某些元素不显示图像。
Note: I load in an image yeti.png and this renders fine.
App.jsx
import React from 'react';
import ReactDOM from 'react-dom';
import './css/App.css';
import yeti from './images/yeti.png';
const Footer = function(props) {
return (
<div>
<Yeti />
<Trees />
</div>
);
};
const Yeti = function(props) {
return (
<img
src={yeti}
className="yeti yeti--xs"
alt="Yeti"
/>
);
};
const Trees = function(props) {
return (
<div className="trees">
<div className="trees__tree trees__tree--1"></div>
<div className="trees__tree trees__tree--2"></div>
</div>
);
};
ReactDOM.render(
<Footer />,
document.getElementById('root')
);
App.css
.trees {
bottom: 0;
height: 110px;
left: 0;
position: fixed;
width: 100%;
z-index: 1;
}
.trees__tree {
background-size: 30px;
background: url('../images/tree.png') no-repeat;
float: left;
height: 50px;
width: 30px;
}
.trees__tree--1 {
margin: 0 0 0 6%;
}
.trees__tree--2 {
margin: 2% 0 0 4%;
}
当我检查 Chrome 中的元素时,图像的路径似乎是正确的。当我将鼠标悬停在检查器样式选项卡中的图像路径上时,图像出现了。
注意我导入的图片路径和背景图片的路径类似:
如果我将 tree.png
导入为 import tree from './images/tree.png';
并将我的两个 <div>
元素更改为 <img src={tree} role="presentation" className="trees__tree trees__tree--1" />
和 <img src={tree} role="presentation" className="trees__tree trees__tree--2" />
图像当然会加载.
如何让背景图片显示出来?我的应用程序中还有其他背景图片未加载,因此前面提到的创可贴对我没有帮助。我害怕弹出我的应用程序并弄乱配置。
我在构建应用程序时也遇到了同样的问题。
如果您需要查看更多源代码,可以在 https://github.com/studio174/ispellits 查看它,但请记住,我已简化此示例以隔离问题。我遇到的问题实际上是在 Footer.jsx
和 Footer.css
这个问题纯粹是 App.css
文件中 CSS 的问题:
App.css
.trees__tree {
background: url('../images/tree.png') no-repeat;
background-size: 30px; /** moved this property down */
float: left;
height: 50px;
width: 30px;
}
我的问题是我没有定义 background-size: 30px;
。谢谢。
将 package.json 中的主页添加到 运行 在任何 apache 服务器中构建
{
"name": "app",
"version": "0.1.0",
"private": true,
"homepage": "http://{servername}/{foldername}/",
}
然后使用
在 React 中创建构建npm run build
npm install -g serve
serve -s build
- 复制构建文件夹并像 xampp/htdocs 一样粘贴到服务器中并点击 url