Root div padding React(样式化组件)

Root div padding React (Styled Components)

我有一个简单的 React 应用程序,使用 Redux 的 Provider 来包装我的 App 组件。

import React from 'react';
import ReactDOM from 'react-dom';
import styled from 'styled-components';
import { Provider } from 'react-redux';
import App from './App';
import store from './store';
import registerServiceWorker from './registerServiceWorker';

const MainContainer = styled.div`
  margin: 0;
  padding: 0;
  height: 100vh;
  background-color: red;
`;

ReactDOM.render(
  <MainContainer>
    <Provider store={store}>
      <App />
    </Provider>
  </MainContainer>,
  document.getElementById('root'),
);

registerServiceWorker();

但是,当此应用呈现时,屏幕边缘(所有边)周围有一个白色间隙。覆盖 body 标签以使 App 内容到达屏幕边缘的正确方法是什么?

这是您浏览器的默认样式。您可以使用 Normalize.css 之类的东西,或者自己删除正文的边距和填充。

body {
  margin: 0;
  padding: 0;
}

您可以使用 injectGlobal 来做到这一点。

import { injectGlobal } from 'styled-components';

injectGlobal`
  body {
    margin: 0;
    padding: 0;
  }
`;

感谢您的回答,但我一直在寻找 Styled Components 特定的答案。

事实证明,Styled Components 有一个辅助方法,injectGlobal,它可以覆盖全局 body 标签。

使用它,可以设置所需的属性——在本例中,没有边距/填充。因此,将以下内容添加到 index.js 即可解决问题。

import { injectGlobal } from 'styled-components';

injectGlobal`
  body {
    margin: 0;
    padding: 0;
  }
`;

对于 styled components v4 及以后使用 createGlobalStyle

import { createGlobalStyle } from "styled-components"

const GlobalStyle = createGlobalStyle`
  body {
    color: red;
  }
`

// later in your app's render method
<React.Fragment>
  <Navigation />
  <OtherImportantTopLevelComponentStuff />
  <GlobalStyle />
</React.Fragment>

Styled Components FAQs

在你的“App.css”中写下:

body {
  overflow-y: hidden;
}

这适用于我的主页。