React-Bootstrap вызывает поля слева и справа

Я использую React-Bootstrap в своем приложении React. Это вызывает маржу с левой и правой стороны. Я использую следующий код:

import React, { Component } from "react";
import "react-bootstrap/dist/react-bootstrap.min.js";
import "bootstrap/dist/css/bootstrap.min.css";
import { Grid, Row, Col } from "react-bootstrap";
import MuiThemeProvider from "material-ui/styles/MuiThemeProvider";
import AppBar from "material-ui/AppBar";

<Grid fluid>
   <Row>
      <Col xs={12} md={12}>
        <AppBar title="Title"
         iconClassNameRight="muidocs-icon-navigation-expand-more"/>
       </Col>
   </Row>
   <Row>
       <Col xs={4} md={4}>
          <h1>Hello</h1>
       </Col>
       <Col xs={8} md={8} >
          <h1>Hello World!</h1>
       </Col>
   </Row>
</Grid>

Я получаю следующий вывод: введите здесь описание изображения

Если я удалю xs and md из <Col>, проблема будет устранена.

Импорт twitter-bootstrap вызывает эту проблему. Если я удалю импорт twitter-bootstrap, стиль начальной загрузки не будет работать.

Эта проблема аналогична проблеме Twitter-Bootstrap, но я не могу исправить это в React-Bootstrap.


person Amanshu Kataria    schedule 11.09.2017    source источник
comment
Установка Row компонента padding-left и padding-right на 0 должна исправить проблему.   -  person bennygenel    schedule 11.09.2017
comment
@bennygenel Я пытался, но это не сработало.   -  person Amanshu Kataria    schedule 11.09.2017
comment
Вы уверены, что примененные вами стили работают? Иногда вам нужно использовать !important для переопределения стилей начальной загрузки.   -  person bennygenel    schedule 11.09.2017
comment
@bennygenel ничего не получилось. Я попробовал !important, но это тоже не сработало. Я обновлю вопрос со ссылкой на CodePen.   -  person Amanshu Kataria    schedule 11.09.2017
comment
@bennygenel, пожалуйста, проверьте обновленный вопрос.   -  person Amanshu Kataria    schedule 11.09.2017


Ответы (6)


Я протестировал ваш код с помощью чистого приложения для реагирования. Предыдущие предложения были неверны. Вам нужно установить Grid компоненты padding-left и padding-right на 0.

ОБНОВЛЕНИЕ: просто установить Grid недостаточно. Также необходимо установить поля на 0 для Row и отступы на 0 для Col.

Вы можете добиться этого тремя способами.

<сильный>1. Способ: добавить встроенный стиль для Grid, Row и Col

<Grid fluid style={{ paddingLeft: 0, paddingRight: 0 }}>
    <Row style={{ margin-left: 0, margin-right: 0 }}>
        <Col style={{ padding-left: 0, padding-right: 0 }}>
            ...
        </Col>
    </Row>
</Grid>

ИЛИ

const styles = {
    grid: {
        paddingLeft: 0,
        paddingRight: 0
    },
    row: {
        marginLeft: 0,
        marginRight: 0
    },
    col: {
        paddingLeft: 0,
        paddingRight: 0
    }
};
<Grid fluid style={styles.grid}>
    <Row style={styles.row}>
        <Col style={styles.col}>
            ...
        </Col>
    </Row>
</Grid>

<сильный>2. СПОСОБ: добавить собственное имя класса

//App.css
div.noPadding {
    padding-left: 0;
    padding-right: 0;
}

div.noMargin {
    margin-left: 0;
    margin-right: 0;
}

//App.js
import '/path/to/your/App.css';

render() {
    return (
        <Grid fluid className="noPadding">
            <Row className="noMargin">
                <Col className="noPadding">
                    ...
                </Col>
            </Row>
        </Grid>
    )
}

<сильный>3. СПОСОБ Вы можете глобально изменить поведение компонентов Grid, Row и Col, переопределив компоненты className

//App.css

div.container-fluid {
    padding-left: 0;
    padding-right: 0;
}

div.row {
    margin-right: 0px;
    margin-left: 0px
}

div.col-lg-1,div.col-lg-10,div.col-lg-11,div.col-lg-12,div.col-lg-2,div.col-lg-3,div.col-lg-4,div.col-lg-5,div.col-lg-6,div.col-lg-7,div.col-lg-8,div.col-lg-9,
div.col-md-1,div.col-md-10,div.col-md-11,div.col-md-12,div.col-md-2,div.col-md-3,div.col-md-4,div.col-md-5,div.col-md-6,div.col-md-7,div.col-md-8,div.col-md-9,
div.col-sm-1,div.col-sm-10,div.col-sm-11,div.col-sm-12,div.col-sm-2,div.col-sm-3,div.col-sm-4,div.col-sm-5,div.col-sm-6,div.col-sm-7,div.col-sm-8,div.col-sm-9,
div.col-xs-1,div.col-xs-10,div.col-xs-11,div.col-xs-12,div.col-xs-2,div.col-xs-3,div.col-xs-4,div.col-xs-5,div.col-xs-6,div.col-xs-7,div.col-xs-8,div.col-xs-9 {
    padding-left: 0;
    padding-right: 0;
}
person bennygenel    schedule 11.09.2017
comment
Я только что заметил, что это создает горизонтальную прокрутку. res.cloudinary.com/amanshu-kataria/image/upload/ v1505152961/ - person Amanshu Kataria; 11.09.2017
comment
это может быть связано со строками, имеющими поля слева и справа -15px - person bennygenel; 11.09.2017
comment
Настройка overflow: hidden устранила проблему. Это правильный способ решить эту проблему? - person Amanshu Kataria; 11.09.2017
comment
На мой взгляд, это не потому, что это означает, что в правой части окна все еще есть контент. Вы должны найти то, что выходит за ширину окна, и исправить это. - person bennygenel; 11.09.2017
comment
@AmanshuKataria на самом деле я все неправильно понял. Я снова протестировал код, и установка отступов для сетки не подходит, потому что тогда компоненты Col создают горизонтальную прокрутку. На самом деле вы должны установить отступ 0 для компонентов Col. Если вы установите отступы сетки на 0, поля строк на 0 и отступы столбцов на 0, все будет идеально. Используете ли вы Chrome Dev Tools для легкого тестирования css? - person bennygenel; 11.09.2017
comment
Я попробовал, и это сработало. Пожалуйста, обновите свой ответ. - person Amanshu Kataria; 12.09.2017

Ответ выше избыточен. Это действительно не так сложно. Согласно официальной документации React Bootstrap на Grid, жидкость свойство может быть применено. Вот описание жидкости:

С помощью этого свойства можно превратить любой макет сетки фиксированной ширины в макет полной ширины. Добавляет класс container-fluid.

Вот что я сделал, и это работает отлично:

<Grid fluid={true}>
person Jason Rice    schedule 22.06.2018

Очень поздно на вечеринку здесь; Я просто хотел добавить, что в Bootstrap 4 я смог удалить поля столбца, добавив fluid="true" к Container и noGutters к Row, например.

<Grid fluid="true">
  <Row noGutters>
    <Col>
      {/* ... <contents> ... */}
    </Col>
  </Row>
</Grid>

Добавление только fluid кажется недостаточным. Пример кода не тестировался.

person ssc    schedule 27.03.2020
comment
noGutters делает свое дело. Спасибо - person Oleg Khalidov; 27.02.2021

Я использовал react-bootstrap с next.js. Я придумал короткое решение:

<Container fluid className="p-0">
    ...
</Container>

Комментарий. css bootstrap был импортирован в мой _App.js

import 'bootstrap/dist/css/bootstrap.min.css';
person farynaa    schedule 12.12.2020
comment
Меня устраивает. - person Zac; 01.07.2021

РЕДАКТИРОВАТЬ: я изменил строку на сетку. если это не удается, вам нужно опубликовать больше кода. есть ли другие контейнеры div, внутри которых находится навигационная панель?

есть несколько способов сделать это:

grid
{
margin: 0;
}

другой способ:

grid
{
padding-right: 0px;
padding-left: 0px;
}
person DreamRJ    schedule 11.09.2017
comment
@AmanshuKataria - есть ли другие разделы, в которых находится панель навигации ?? не могли бы вы опубликовать полный код, пожалуйста? - person DreamRJ; 11.09.2017
comment
так что такое css? у вас есть доступ к файлу css для этого? если да, вставьте css для него - person DreamRJ; 11.09.2017

Самый правильный ответ, который сработал для меня, это

<Container fluid style={{paddingLeft: '0px', paddingRight: '0px'}}>
<Row noGutters>
<COl>
//Whatever your content
</COl>
</Row>
</Container>
person Seenu Aravind Raj    schedule 07.12.2020