Images
Importing assets with webpack
- Import an image into the home page of the site and display it. - src\pages\index.jsimport { graphql, Link } from "gatsby"import React from "react"import Layout from "../components/layout"import { PageTitle } from "../components/page-title"+ import homePagePhoto from "../images/home-page-photo.jpeg"export default function Home({ data }) {return (<Layout><PageTitle>Home</PageTitle>- <img src="https://source.unsplash.com/600x300/?house" alt="house" />+ <img+ className="rounded-md shadow-md"+ style={{ width: "600px", height: "300px" }}+ src={homePagePhoto}+ alt="corporate,office,building"+ />...<p className="mt-6">...</p>...</Layout>)}...
- Import an image for the about page and display it. - src\pages\about.jsimport React from "react"import Layout from "../components/layout"import { PageTitle } from "../components/page-title"+ import aboutPhoto from "../images/about-photo.png"export default function About() {return (<Layout><PageTitle>About</PageTitle>+ <img+ className="rounded-md shadow-md"+ style={{ width: "600px", height: "300px" }}+ src={aboutPhoto}+ alt="corporate building"+ />- <p>+ <p className="mt-6">...</Layout>)}
- Import the logo image into the header component and display it. - First remove the - bottom-paddingon the- headerelement (- pb-10).- src\components\header.js- <header className="pt-5 col-start-1 col-end-3 border-b-2 border-solid border-gray-600">+ <header className="pt-5 col-start-1 col-end-3 border-b-2 border-solid border-gray-600 pb-10">import React from "react"import { useStaticQuery, graphql, Link } from "gatsby"+ import acmeLogo from "../images/acme-logo.png"export const NavLink = ({ children, to }) => {...}export default function Header() {const data = useStaticQuery(graphql`query {site {siteMetadata {title}}}`)return (<header className="col-start-1 col-end-3 border-b-2 border-solid border-gray-200 flex flex-row justify-start ">- <Link to="/" className="text-4xl mx-4 flex justify-self-start">- {data.site.siteMetadata.title}- </Link>+ <img src={acmeLogo} alt="Acme Logo" /><nav className="pt-4 pr-80 flex flex-row justify-end min-w-full"><NavLink to="/">Home</NavLink><NavLink to="/about">About</NavLink></nav></header>)}
- Remove the - background-coloron the- bodyelement because the logo background is white. We could have given the logo a transparent background but this will work for now.- src\styles\global.css@tailwind base;@tailwind components;@tailwind utilities;- body {- @apply bg-gray-100;- }
Using the Gatsby Image plugin
- Install the following packages: npm install gatsby-plugin-image gatsby-plugin-sharp gatsby-source-filesystem gatsby-transformer-sharp
- Add the plugins to your - gatsby-config.js:- gatsby-config.jsmodule.exports = {siteMetadata: {title: `Acme Inc.`,description: `A corporate site`,},plugins: [{resolve: `gatsby-source-filesystem`,options: {name: `src`,path: `${__dirname}/src`,},},`gatsby-transformer-remark`,`gatsby-plugin-emotion`,"gatsby-plugin-postcss",+ `gatsby-plugin-image`,+ `gatsby-plugin-sharp`,+ `gatsby-transformer-sharp`,],}
- Replace the main - <img>in the home page with a- <StaticImage>from the Gatsby image plugin.- src\pages\index.js...- import homePagePhoto from "../images/home-page-photo.jpeg"+ import { StaticImage } from "gatsby-plugin-image"...<PageTitle>Home</PageTitle>- <img- className="rounded-md shadow-md"- style={{ width: "600px", height: "300px" }}- src={homePagePhoto}- alt="corporate,office,building"- />+ <StaticImage+ imgClassName="rounded-md shadow-md"+ placeholder="blurred"+ loading="eager"+ width={600}+ height={300}+ src="../images/home-page-photo.jpeg"+ alt="corporate office building"+ />...
- Throttle the network in Chrome DevTools's Network tab to see a blurred home page image initially load. - Try some other placeholder settings from the documentation. 
- In - header.js, style the navigation to the right and the logo to the left using flexbox.- src\components\header.js<header className="... flex flex-row justify-start pr-80 "><nav className="... flex flex-row justify-end min-w-full">
- If time permits, replace the main - <img>in the about page (- src\pages\about.js) with a- <StaticImage>from the Gatsby image plugin using the last step as an example.