我成功地将gatsby-image实现到我的项目中,并替换了我的组件中使用的许多img标签。但是现在我正在尝试为我的某些组件优化背景图像,但是我不知道如何,因为使用gatsby-image会生成一个新的img标签,并且我不能使用它来设置样式,例如说一个div元素。可以s1告诉我如何在css中使用生成的图像。这是我的代码:
const HeaderlineSection = ({headerOne}) => {
return(
<div className="header-back" ></div>
)
}
export const query = graphql`
query IndexPageQuery {
headerOne: imageSharp(id: { regex: "/header_one.jpg/" }) {
sizes(maxWidth: 1200 ) {
...GatsbyImageSharpSizes
}
}
}
以前,在我的CSS中,我使用未经优化的图像作为背景图像:
.header-back {
background: url(../images/header_one.jpg) 50% 0 no-repeat;
height: 470px;
width: 100%;
}
答案 0 :(得分:1)
我正在为此使用gatsby-background-image插件。这是如何使用它的一个例子:
import React from 'react'
import { graphql, StaticQuery } from 'gatsby'
import styled from 'styled-components'
import BackgroundImage from 'gatsby-background-image'
const BackgroundSection = ({ className }) => (
<StaticQuery query={graphql`
query {
desktop: file(relativePath: { eq: "seamless-bg-desktop.jpg" }) {
childImageSharp {
fluid(quality: 100, maxWidth: 4160) {
...GatsbyImageSharpFluid_withWebp
}
}
}
}
`}
render={data => {
const imageData = data.desktop.childImageSharp.fluid
return (
<BackgroundImage Tag="section"
className={className}
fluid={imageData}
backgroundColor={`#040e18`}
>
<h1>Hello gatsby-background-image</h1>
</BackgroundImage>
)
}
}
/>
)
const StyledBackgroundSection = styled(BackgroundSection)`
width: 100%;
background-repeat: repeat-y;
`
export default StyledBackgroundSection
该代码是不言自明的,但是基本上,该元素将替换为您在Tag
属性中选择的元素,并将背景图像设置为由graphql imageSharp查询选择的背景图像。