根div填充React(样式化组件)

时间:2018-07-04 11:55:34

标签: css reactjs styled-components

我有一个简单的React App,使用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内容进入屏幕边缘的正确方法是什么?

White Margin should not be there.

3 个答案:

答案 0 :(得分:7)

这是浏览器的默认样式。您可以使用Normalize.css之类的东西,也可以自己去除边框的边缘和填充。

body {
  margin: 0;
  padding: 0;
}

您可以使用injectGlobal进行此操作。

import { injectGlobal } from 'styled-components';

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

答案 1 :(得分:2)

感谢您的回答,但我一直在寻找特定于样式组件的答案。

结果显示,样式化组件具有辅助方法injectGlobal,该方法可以覆盖全局body标签。

使用此选项,可以设置所需的属性-在这种情况下,无需边距/填充。因此,在index.js中添加以下内容即可解决此问题。

import { injectGlobal } from 'styled-components';

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

答案 2 :(得分: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