盖茨比:使用 CSS 设置背景图片
Gatsby: Set background image with CSS
查看 Gatsby 文档,他们建议您可以像在其他任何地方一样引用背景图像:
.image {
background-image: url(./image.png);
}
它们没有涵盖的是这些图像应该存在的位置。我尝试将图像目录放在 src 文件夹、布局文件夹和根文件夹中,但我一直收到错误消息:
Loader /Users/username/Sites/my-app/node_modules/url/url.js?{"limit":10000,"name":"static/[name].[hash:8].[ext]"} didn't return a function
@ ./~/css-loader!./~/postcss-loader!./src/layouts/index.css 6:400-435
使用 Gatsby 引用背景图像的正确方法是什么?
当前目录结构:
my-app
- src
-- images
--- image.png
-- layouts
--- index.css
确保您定义了正确的路径,该路径相对于您的 CSS 文件所在的位置,因此该路径取决于您的文件结构。它可能类似于 background-image: url('../../imageAssets/coolImages/background.png');
通常,我将组件特定的图像与它们的 JSX 和 CSS 文件以及 general/global 图像一起保存在 images
文件夹中,因此我可能有这样的结构:
.
├── components
│ ├── button.jsx
│ ├── button.module.scss
│ └── button_icon.png
└── images
└── logo.png
要从 button.module.css
引用 button_icon.png
,我会这样做:
background-image: url("./button_icon.png");
并从 button.module.css
引用 logo.png
我会这样做:
background-image: url("../images/logo.png");
更新:最近我一直在我的 Gatsby 项目中使用 Emotion,这需要稍微不同的方法。这也适用于 StyledComponents 或 Glamour:
import background from "images/background.png"
import { css } from "@emotion/core"
// Object styles:
<div css={{ backgroundImage: `url(${background})` }} />
// Tagged template literal styles:
const backgroundStyles = css`
background-image: url(${background});
`
<div css={backgroundStyles} />
您需要一个静态文件夹,其中包含项目中 src 文件夹之外的图像。
基本上都会
my-app
- src
-- components
--- styles.scss
- static
-- images
--- image.png
要访问您的 styles.css 或 scss 中的图像,您可以这样做
background: url('/images/image.png');
或者您可以通过从 gatsby
导入 withPrefix 来访问您的 jsx/js 文件之一中的图像
import { withPrefix } from 'gatsby';
<div style={{ backgroundImage: `url(${withPrefix('/images/image.png')})` }} />
查看 Gatsby 文档,他们建议您可以像在其他任何地方一样引用背景图像:
.image {
background-image: url(./image.png);
}
它们没有涵盖的是这些图像应该存在的位置。我尝试将图像目录放在 src 文件夹、布局文件夹和根文件夹中,但我一直收到错误消息:
Loader /Users/username/Sites/my-app/node_modules/url/url.js?{"limit":10000,"name":"static/[name].[hash:8].[ext]"} didn't return a function
@ ./~/css-loader!./~/postcss-loader!./src/layouts/index.css 6:400-435
使用 Gatsby 引用背景图像的正确方法是什么?
当前目录结构:
my-app
- src
-- images
--- image.png
-- layouts
--- index.css
确保您定义了正确的路径,该路径相对于您的 CSS 文件所在的位置,因此该路径取决于您的文件结构。它可能类似于 background-image: url('../../imageAssets/coolImages/background.png');
通常,我将组件特定的图像与它们的 JSX 和 CSS 文件以及 general/global 图像一起保存在 images
文件夹中,因此我可能有这样的结构:
.
├── components
│ ├── button.jsx
│ ├── button.module.scss
│ └── button_icon.png
└── images
└── logo.png
要从 button.module.css
引用 button_icon.png
,我会这样做:
background-image: url("./button_icon.png");
并从 button.module.css
引用 logo.png
我会这样做:
background-image: url("../images/logo.png");
更新:最近我一直在我的 Gatsby 项目中使用 Emotion,这需要稍微不同的方法。这也适用于 StyledComponents 或 Glamour:
import background from "images/background.png"
import { css } from "@emotion/core"
// Object styles:
<div css={{ backgroundImage: `url(${background})` }} />
// Tagged template literal styles:
const backgroundStyles = css`
background-image: url(${background});
`
<div css={backgroundStyles} />
您需要一个静态文件夹,其中包含项目中 src 文件夹之外的图像。
基本上都会
my-app
- src
-- components
--- styles.scss
- static
-- images
--- image.png
要访问您的 styles.css 或 scss 中的图像,您可以这样做
background: url('/images/image.png');
或者您可以通过从 gatsby
导入 withPrefix 来访问您的 jsx/js 文件之一中的图像import { withPrefix } from 'gatsby';
<div style={{ backgroundImage: `url(${withPrefix('/images/image.png')})` }} />