Как и где получить доступ к html телу в gatsby

У меня проблема с большими пробелами, появляющимися справа и внизу веб-страницы. При тестировании на отзывчивость веб-страницы.

Я нашел похожие проблемы в stackoverflow

  1. Появляется пустое пространство в правой части страницы, когда фоновое изображение должно занимать всю длину страницы [закрыто]

  2. Веб-сайт имеет странные пробелы в правой части страницы, когда размер окна браузера уменьшается

Решение в обоих постах одинаковое

html, 
body {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    overflow-x: hidden; 
}

Я не знаю, куда именно добавить это в gatsby, я нашел сообщение с похожей на мою проблемой относительно gatsby Как стилизовать тело/фон?. Кажется, не понимаю, какое решение для этого!

Нашел этот пост Как добавить динамический class to body в Gatsby.js? есть некоторое представление об использовании react-helmet, как именно я могу его использовать?

Может ли кто-нибудь объяснить, как я могу установить html body в gatsby, чтобы избежать этого большого пробела?

Resolution 1366x768 область под границей — это пробел Разрешение 1366x768

Resolution 1920x1080 область под границей — это пробел введите здесь описание изображения


person Santhosh Dhaipule Chandrakanth    schedule 02.01.2021    source источник
comment
Можете поделиться песочницей или картинкой?   -  person Ferran Buireu    schedule 02.01.2021


Ответы (1)


Чтобы добавить глобальные стили (например, те, о которых вы говорите), у вас есть несколько способов. Самый простой — использовать файл gatsby-browser.js. Я предоставлю решение для вашего варианта использования на основе моих путей, адаптирую его по вашему желанию.

Создайте файл global.css в /src/styles/global.css и вставьте свой код:

html, 
body {
    width: 100%;
    height: 100%;
    margin: 0;
    padding: 0;
    overflow-x: hidden; 
}

В файле gatsby-browser.js импортируйте свои глобальные стили:

import './src/styles/global.css';

По сути, вы добавление глобальных стилей с помощью файлов CSS для вашего проекта.

В вашем вопросе очень мало деталей, но я думаю, что белая часть — это нижний колонтитул сайта. Поскольку у вас нет контента, толкающего нижний колонтитул внизу страницы, он кажется гибким, насколько это возможно.

PS: я совершил Как добавьте динамический класс к тегу body в решении Gatsby.js?, поскольку вам не нужно добавлять динамические классы. Чтобы нижний колонтитул всегда был прикреплен к нижней части браузера, вам нужно внести несколько изменений. Оберните <Layout> чем-то вроде:

    import React from "react"
    
    import Navbar from "./navbar"
    import Footer from "./footer"
    import Sidebar from "./sidebar"
    
    import '/yourStyles.css'    

    const Layout = ({ children }) => {
      return (
        <section className="site-wrapper">
          <main>{children}</main>
          <Footer />
       </section>
     )
   }

   export default Layout

И добавьте следующий CSS (в свой /yourStyles.css или в свои глобальные стили)

.site-wrapper {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}

main  {
  flex-grow: 1;
}

По сути, вы говорите оболочке (site-wrapper) расширяться до заполнения области просмотра (100vh). Поскольку ваш тег main (при необходимости измените его на нужный класс) может расти свободно (flex-grow: 1), поэтому ваш нижний колонтитул всегда будет внизу страницы, потому что он подталкивается остальной частью столбца flexbox.

person Ferran Buireu    schedule 02.01.2021
comment
Это не работает до вашего решения и после применения вашего решения. Это тот же результат - person Santhosh Dhaipule Chandrakanth; 02.01.2021
comment
Ну, это действительно ваше решение. Я показал, как добавлять глобальные стили. Вы можете проверить, что происходит? Я обновил с другим обходным путем - person Ferran Buireu; 03.01.2021
comment
Это решение сработало в моем случае. - person T. Junghans; 15.07.2021