当前位置: 首页 > 知识库问答 >
问题:

create-react-app中CSS的公用文件夹中的引用文件

仉昂熙
2023-03-14

我正在使用creat react app(CRA),只想通过CSS将一个png文件放在公共文件夹中(我把所有图像文件都放在那里)。现在我正试图通过CSS引用这张图片(我只在新生成的CRA应用程序中添加了背景图片行):

.App-header {
  background-color: #222;
  height: 150px;
  padding: 20px;
  color: white;
  background-image: url("../public/example.png");
}

您试图导入示例。不属于项目src/目录的png

如何从CSS文件中引用图像文件,而不复制/src中的某个地方?我也不想弹出应用程序并删除错误消息。

编辑:这个问题不同于src目录之外的create react app imports限制,因为它没有显示如何在CSS级别解决这个问题。建议的解决方案是在JavaScript文件中添加我不想做的样式。

共有3个答案

卢志强
2023-03-14

官方文档中有一个关于/public文件夹的特殊页面:
https://create-react-app.dev/docs/using-the-public-folder/

以下是您应该如何引用公用文件夹:

<link rel="icon" href="%PUBLIC_URL%/favicon.ico" />

render() {
  return <img src={process.env.PUBLIC_URL + '/img/logo.png'} />;
}

但是,您不能在css文件中使用这些解决方案。因此,您必须从js文件中精确地重新源代码:

const MyComp = () => {
  return <div style={{ backgroundImage: `${process.env.PUBLIC_URL}/img/logo.png` }} />;
}
盖晋
2023-03-14

在我的例子中,要从css/scss访问图像,必须将图像目录和字体移动到src目录。之后我可以直接在css/scss文件中引用它们,

 background-image: url("/images/background.jpg");

参考资料:

https://github.com/facebook/create-react-app/issues/829

https://create-react-app.dev/docs/using-the-public-folder/

叶阳
2023-03-14

只需在名称前使用/即可,这将使其相对于输出根目录,其中包括公用文件夹中的任何内容(前提是完成的托管应用程序位于域的根目录下)。

因此,对于上述问题:

.App-header {
  background-color: #222;
  height: 150px;
  padding: 20px;
  color: white;
  background-image: url("/example.png");
}

关键在于

/example.png 

引用公用文件夹中的文件,example.png(在根级别提供服务)

也可能是相对的:

也可以用

./example.png

如果css文件也是从public/build目录导入的,这将是相对于css文件的,不依赖于在域根目录下提供服务,但通常在CRA webpack中会捆绑CSS,它可能会也可能不会从该位置加载。(您可以使用带有%PUBLIC_URL%/Styles.css宏的rel标记直接将其导入html文件中)

 类似资料:
  • 我正在尝试使用文档中给出的命令创建一个新项目,即npx create react app my app,但它不包含像public和script这样的文件夹。

  • 问题内容: 我知道chrome扩展使用’manifest.json`,但是在这里,它也被用作其他东西。 内容- 当我更改某些值时,页面会更新,但没有任何变化。 问题答案: 这是一个描述您的应用程序的Web App清单,例如,如果在主屏幕上添加了快捷方式,则该清单将被移动电话使用。 从MDN(上面链接): Web应用程序清单在JSON文本文件中提供有关应用程序的信息(例如名称,作者,图标和描述)。清

  • 问题内容: 基本上,我为客户制作了一个(相对)简单的应用程序。该应用程序正常工作,但他们一直在要求更改数据。 鉴于该应用程序最初的预期简单性以及它保存静态数据的事实,我没有将其链接到任何后端。该数据将保存在本地静态文件中,而该对象具有保存数据的对象。 问题在于,fle被捆绑到了buld中,因此,如果我只想更改一些静态数据而不必进行rbuild,我不会! 我的数据文件可以在公用文件夹中访问,并且可以

  • 骨架应用程序中的公共应用程序文件夹是用于支持前端控制器的文件夹,或者框架是否以任何方式使用它? 不管怎样,如果我在骨架应用程序中切换公共文件夹名称,框架不会继续连接吗?

  • 当我执行npx create-react-app myest时,在我的反应项目中不会生成公共和src文件夹。 我尝试使用npm u安装-g创建-反应-应用程序释放全局创建-反应-应用程序,并使用npm安装-g创建-反应-应用程序重新安装它。然而,当我执行npx create-react-app myest后,它卡在了下面的屏幕上

  • 问题内容: 我正在尝试使用docs上给出的命令创建一个新项目,即它不包含 和的文件夹。 问题答案: 请尝试以下步骤: 资源