React-Bootstrap menyebabkan margin di sisi kiri dan kanan

Saya menggunakan React-Bootstrap di aplikasi React saya. Hal ini menyebabkan margin di sisi kiri dan kanan. Saya menggunakan kode berikut:

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>

Saya mendapatkan keluaran berikut: masukkan deskripsi gambar di sini

Jika saya menghapus xs and md dari <Col> maka masalah akan teratasi.

Mengimpor twitter-bootstrap menyebabkan masalah ini. Jika saya menghapus impor twitter-bootstrap maka gaya bootstrap tidak berfungsi.

Masalah ini sama dengan masalah Twitter-Bootstrap, tapi saya tidak bisa memperbaikinya di React-Bootstrap.


person Amanshu Kataria    schedule 11.09.2017    source sumber
comment
Menyetel Row komponen padding-left dan padding-right ke 0 akan memperbaiki masalah   -  person bennygenel    schedule 11.09.2017
comment
@bennygenel Saya mencoba tetapi tidak berhasil.   -  person Amanshu Kataria    schedule 11.09.2017
comment
Apakah Anda yakin gaya yang Anda terapkan berhasil? Terkadang Anda perlu menggunakan !important untuk mengganti gaya bootstrap   -  person bennygenel    schedule 11.09.2017
comment
@bennygenel tidak ada yang berhasil. Saya mencoba !important tetapi juga tidak berhasil. Saya akan memperbarui pertanyaan yang akan ditautkan ke CodePen.   -  person Amanshu Kataria    schedule 11.09.2017
comment
@bennygenel silakan periksa pertanyaan yang diperbarui.   -  person Amanshu Kataria    schedule 11.09.2017


Jawaban (6)


Saya menguji kode Anda dengan aplikasi reaksi yang bersih. Saran sebelumnya salah. Anda perlu menyetel Grid komponen padding-left dan padding-right ke 0.

PEMBARUAN: Menyetel Grid saja tidak cukup. Juga perlu mengatur margin ke 0 dari Row dan padding ke 0 dari Col.

Anda dapat mencapainya dengan 3 cara.

1. Caranya: Tambahkan gaya sebaris untuk Grid, Row dan 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>

ATAU

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. CARA: Tambahkan nama kelas khusus

//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. CARA Anda dapat mengubah perilaku komponen Grid, Row dan Col secara global dengan mengganti className komponen

//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
Saya baru menyadari bahwa ini menciptakan gulir horizontal. res.cloudinary.com/amanshu-kataria/image/upload/ v1505152961/ - person Amanshu Kataria; 11.09.2017
comment
itu mungkin terkait dengan baris yang memiliki margin kiri dan kanan -15px - person bennygenel; 11.09.2017
comment
Pengaturan overflow: hidden memperbaiki masalah. Apakah ini cara yang tepat untuk mengatasinya? - person Amanshu Kataria; 11.09.2017
comment
Menurut saya bukan karena itu berarti masih ada konten di sisi kanan jendela. Anda harus menemukan apa yang melebihi lebar jendela dan memperbaikinya. - person bennygenel; 11.09.2017
comment
@AmanshuKataria sebenarnya saya salah paham. Saya menguji kodenya lagi dan mengatur padding untuk Grid bukanlah cara yang tepat karena komponen Col akan membuat gulir horizontal. Anda sebenarnya harus menyetel padding 0 untuk komponen Col. Jika Anda menyetel padding Grid ke 0 dan margin Baris ke 0 dan padding Cols ke 0 semuanya berjalan dengan sempurna. Apakah Anda menggunakan Alat Pengembang Chrome untuk menguji css dengan mudah? - person bennygenel; 11.09.2017
comment
Saya mencoba, dan berhasil. Harap perbarui jawaban Anda juga. - person Amanshu Kataria; 12.09.2017

Jawaban di atas berlebihan. Ini sebenarnya tidak terlalu rumit. Menurut dokumentasi resmi React Bootstrap di Grid fluid properti dapat diterapkan. Berikut deskripsi untuk cairan:

Ubah tata letak kisi dengan lebar tetap menjadi tata letak lebar penuh dengan properti ini. Menambahkan kelas container-fluid.

Inilah yang saya lakukan dan berfungsi dengan baik:

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

Sangat terlambat ke pesta di sini; Saya hanya ingin menambahkan bahwa di Bootstrap 4, saya dapat menghapus margin kolom dengan menambahkan fluid="true" ke Container dan noGutters ke Row, mis.

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

Menambahkan fluid saja sepertinya tidak cukup. Kode contoh belum diuji.

person ssc    schedule 27.03.2020
comment
noGutters berhasil. Terima kasih - person Oleg Khalidov; 27.02.2021

Saya menggunakan reaksi-bootstrap dengan next.js. Saya menemukan solusi singkat:

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

Komentar. Css bootstrap telah diimpor di _App.js saya

import 'bootstrap/dist/css/bootstrap.min.css';
person farynaa    schedule 12.12.2020
comment
Ini berhasil untuk saya. - person Zac; 01.07.2021

EDIT: Saya mengubah baris menjadi grid. jika gagal, maka Anda perlu memposting lebih banyak kode. apakah ada wadah div lain yang berisi navbar?

ada beberapa cara untuk melakukan ini:

grid
{
margin: 0;
}

cara lain adalah:

grid
{
padding-right: 0px;
padding-left: 0px;
}
person DreamRJ    schedule 11.09.2017
comment
@AmanshuKataria - apakah ada div lain tempat navbar berada?? bisakah Anda memposting kode lengkapnya? - person DreamRJ; 11.09.2017
comment
jadi apa itu cssnya? apakah Anda memiliki akses ke file css untuk itu? jika iya, pastekan cssnya - person DreamRJ; 11.09.2017

Jawaban paling benar yang berhasil bagi saya adalah

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