Bootstrap 3 i 4. Kontener-fluid z siatką dodającą niechcianego wypełnienia


98

Chciałbym, aby moja treść była płynna, ale podczas korzystania .container-fluidz siatki Bootstrap nadal widzę wypełnienie. Jak pozbyć się wypełnienia?

Widzę, że nie dostaję wypełnienia z .row, ale chcę dodać kolumny, a gdy tylko to zrobię, wypełnienie powróci: O.

Chcę móc używać kolumn o pełnej szerokości.

Przykład:

<div class="container-fluid">
    <div class="row">
      <div class="col-sm-6">
    <p>Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p>
  </div> 
  <div class="col-sm-6">
    <p>Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly barebones HTML document.</p>
  </div> 
</div>

Rozwiązanie, które otrzymałem:

Zastąp bootstrap.css, linke 1427 i 1428 (wersja 3.2.0)

padding-right: 15px;
padding-left: 15px;

do

padding-right: 0px;
padding-left: 0px;

1
może się przydać leejacksondev.com/…
Brian Dillingham

1
Czy możesz opublikować odpowiedni kod, abyśmy mogli dostosować nasze odpowiedzi do Twojego kodu?
Simple Sandman,

1
Zaktualizowano kodem! Chcę usunąć dopełnienie, gdy mam kolumnę, a nie tylko wtedy, gdy używam wiersza.
Tim

1
to nie jest poprawne rozwiązanie! zasugerowałem, idź do @part odpowiedź
Pooja Roy

Odpowiedzi:


127

Powinieneś także dodać „wiersz” do każdego kontenera, który „naprawi” ten problem!

<div class="container-fluid">
   <div class="row">
        Some text
   </div>
</div>

Widzieć http://jsfiddle.net/3px20h6t/


3
Dziękuję Ci. Próbuję usunąć wypełnienie, gdy używam kolumn. Masz jakiś pomysł, jak mogę to zrobić?
Tim

1
Jest to możliwe tylko dzięki dodatkowej klasie ... Zdefiniowałem klasę o nazwie remove-padding, która ma tylko .remove-padding {padding-left: 0; padding-right: 0; margin-left: 0; margin-right: 0} O ile wiem, nie ma predefiniowanej klasy usuwającej domyślne wypełnienie
15px

27
Nie mogę zrozumieć, jak ta odpowiedź ma tak wiele pozytywnych opinii, podczas gdy nie jest zgodna z wytycznymi Bootstrap Grid System. Trzecia reguła w sekcji Wprowadzenie mówi, że „Treść powinna być umieszczona w kolumnach, a tylko kolumny mogą być bezpośrednimi elementami podrzędnymi wierszy”. Odpowiedź Lucasa Nelsona zapewnia uczciwe podejście do osiągnięcia pożądanego efektu bez łamania reguły składni.
Siavas,

Możesz również używać rowclass bezpośrednio z col-**-*klasami, jeśli twój układ pasuje.
Anwar

2
Jak można na to głosować 87 razy (i wciąż rośnie), jeśli nie odpowiada na pytanie? Pytanie brzmi, że działa, gdy rowużywane jest tylko a ... ale nie, gdy używane są kolumny (dla których ten fakt jest ignorowany w tej odpowiedzi)? W każdym razie otrzymuję dokładnie to samo błędne wypełnienie 15 pikseli, co zarys pytania, i jest to bardzo frustrujące.
Jeach

32

Znajdź aktualny plik css z Bootstrap

.container-fluid {
  padding-right: 15px;
  padding-left: 15px;
  margin-right: auto;
  margin-left: auto;
}
.row {
  margin-right: -15px;
  margin-left: -15px;
}

Kiedy dodajesz .container-fluidklasę, dodaje ona poziome wypełnienie 15px i to samo zostanie usunięte, gdy dodasz .rowklasę jako element potomny przez ujemny margines ustawiony w wierszu.


3
Wielkie dzięki. Chciałbym go jednak usunąć, gdy używam kolumny. Naprawdę nie chcę zadzierać z podstawowym css bootstrap. Podejrzewam, że musi być na to usankcjonowany sposób. jakieś pomysły?
Tim

1
Jeśli chcesz użyć kolumny w pełnej szerokości, możesz zastosować col-md-12 col-sm-12 css w wierszu
Kishore Kumar

2
Dzięki. Próbowałem tego, ale nadal dostaję wypełnienie. Potrzebuję też dwóch kolumn. Czy coś mi brakuje?
Tim

1
Wypełnienie, które widzisz, jest domyślne z Bootstrap, jeśli chcesz się go pozbyć, jak musisz dodać własną klasę.Gdy dodajesz nową klasę i chcesz nadpisać bootstrap, możesz dodać! Ważne po stylu.
Kishore Kumar

1
Jeśli dwóch kolumnach można dodać do tej klasy wam kolumny Col-MD-6
Kishore Kumar

29

Minęło 5 lat i to dość dziwne, że jest tam tak wiele odpowiedzi, które nie przestrzegają (lub są przeciw) regułom bootstrap lub nie odpowiadają na pytanie ...

Krótka odpowiedź:
Po prostu użyj no-guttersklasy Bootstrap w swoim rzędzie, aby usunąć wypełnienie:

  <div class="container-fluid">
    <div class="row no-gutters">
      <div class="col-sm-6">
        <p>Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly
          barebones HTML document.</p>
      </div>
      <div class="col-sm-6">
        <p>Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly
          barebones HTML document.</p>
      </div>
    </div>
  </div>

(Zapomniałeś też dodać coś </div>na końcu pliku. Poprawiono to również w powyższym kodzie)

Uwaga:

Zdarzają się przypadki, gdy chcesz usunąć wypełnienie samego pojemnika. W takim przypadku rozważ porzucenie .containerlub .container-fluidklasy zgodnie z zaleceniami w dokumentacji .

<!--<div class="container-fluid">-->
<div class="row no-gutters">
  <div class="col-sm-6">
    <p>Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly
      barebones HTML document.</p>
  </div>
  <div class="col-sm-6">
    <p>Use this document as a way to quickly start any new project.<br> All you get is this text and a mostly
      barebones HTML document.</p>
  </div>
</div>
<!--</div>-->

Długa odpowiedź:

Na Uszczelki Ci faktycznie udokumentowane w Bootstrap w dokumentacji :

Wiersze są opakowaniami dla kolumn. Każda kolumna ma poziomą wyściółkę (zwaną rynną) do kontrolowania odległości między nimi. To wypełnienie jest następnie równoważone w wierszach z ujemnymi marginesami. W ten sposób cała zawartość Twoich kolumn jest wizualnie wyrównana do lewej strony.

I o rozwiązaniu, które również zostało udokumentowane:

Kolumny mają dopełnienie poziome, aby utworzyć odstępy między poszczególnymi kolumnami, jednak można usunąć marginesy z wierszy i wypełnienie z kolumn z .no- gutters na .row.

Odnośnie upuszczenia pojemnika:

Potrzebujesz projektu od krawędzi do krawędzi? Usuń nadrzędny .container lub .container-fluid.

Bonus: O błędach znalezionych w innych odpowiedziach

  • Unikaj hakowania klas kontenerów bootstrap zamiast upewniać się, że umieściłeś całą zawartość w col-s i opakowałeś ją w row-s, jak mówi dokumentacja :

W układzie siatki zawartość musi być umieszczona w kolumnach i tylko kolumny mogą być bezpośrednimi elementami podrzędnymi wierszy.

  • Jeśli nadal musisz zhakować (na wypadek, gdyby ktoś już coś zepsuł i musisz szybko naprawić problem), rozważ użycie Bootstrap px-0do usuwania poziomych wyściółek pl-0 pr-0lub ponownego wynalezienia stylów.

3
.container-fluidnadal zawiera padding-right: 15pxi padding-left: 15px, co oznacza, że ​​nadal nie będziesz w stanie połączyć się z oknem za pomocą swojej metody. Nadal musiałbyś zrobić coś takiego container-fluid px-0.
lightyrs

2
W takim przypadku dokumentacja zaleca po prostu „Usuń nadrzędny .container lub .container-fluid”. . Zawarłem to również w odpowiedzi.
Just Shadow

14

Myślę, że miałem te same wymagania co Tim, ale żadna z odpowiedzi nie przewiduje rozwiązania typu „rzutnia od krawędzi do krawędzi z normalnymi wewnętrznymi rynnami”. Albo inaczej: jak mogę sprawić, by moja pierwsza i ostatnia kolumna włamała się do wypełnienia kontenera i przepłynęła do krawędzi rzutni, jednocześnie zachowując normalne odstępy między kolumnami.

rzędy o pełnej szerokości

Z tego co wiem, nie ma schludnego i czystego rozwiązania. To właśnie działa w moim przypadku, ale wykracza poza wszystko, co byłoby obsługiwane przez Bootstrap. Ale na razie działa (Bootstrap 3.3.5 i 4.0-alpha).

http://www.bootply.com/ioWBaljBAd

Przykładowy kod HTML:

<div class="container">
  <div class="row full-width-row">
    <div>
      <div class="col-sm-4 col-md-3"></div>
      <div class="col-sm-4 col-md-3"></div>
      <div class="col-sm-4 col-md-3"></div>
      <div class="col-sm-4 col-md-3"></div>
    </div>
  </div>
</div>

CSS:

.full-width-row {
  overflow-x: hidden;
}

.full-width-row > div {
  margin-left: -15px;
  margin-right: -15px;
}

Sztuczka polega na zagnieżdżeniu divmiędzy wierszem a kolumnami w celu wygenerowania dodatkowego marginesu -15 pikseli, który zostanie wciśnięty w wypełnienie kontenera. Dodatkowy ujemny margines tworzy poziome przewijanie (do białych znaków) na małych rzutniach. Dodawanie overflow-x: hiddendo.row jest wymagane, aby go stłumić.

Działa to tak samo .container-fluidjak .container.


dlaczego nie tylko.full-width-row > div { padding: 0; }
Bamieh

To nie działa, nadal masz rynnę na początku i na końcu rzędu: bootply.com/eM8y3kkfbi
Lucas Nelson

14

Oto krótkie podsumowanie Bootstrap 4:

<div class="container-fluid px-0">
  <div class="row no-gutters">
    <div class="col-12">          //any cols you need
        ...
    </div>
  </div>
</div>

Mi to pasuje.


W przypadku Bootstrap 4 jest to poprawna odpowiedź i najlepsza praktyka.
Syafiq Freman

2
@SyafiqZainal, a także jest to duplikat mojej oryginalnej odpowiedzi poniżej (opublikowanej znacznie wcześniej): D Więc teraz zastanawiam się, czy mogę opublikować tę samą odpowiedź w StackOverflow.
Just Shadow

6

Dlaczego nie zanegować dopełnienia dodanego przez pojemnik-fluid , oznaczając lewe i prawe wypełnienie jako 0?

<div class="container-fluid pl-0 pr-0">

jeszcze lepszy sposób? brak wypełnienia na poziomie pojemnika (środek czyszczący)

<div class="container-fluid pl-0 pr-0">


4
pl-0 pr-0można zmienić napx-0
Patrick McDonald

3

Potrzebujesz tylko tych właściwości CSS w klasie .container w Bootstrapie i możesz umieścić w nim normalny system grid bez kogoś, kto zawartość kontenera będzie poza nim (bez scroll-x w widoku).

HTML:

<div class="container">
    <div class="row">
        <div class="col-xs-12">
            Your content here!
            ...    
        </div>
    </div>
    ... more rows
</div>

CSS:

/* Bootstrap custom */
.container{
    padding-left: 0rem;
    padding-right: 0rem;
    overflow: hidden;
}

3

W nowych wersjach alfa wprowadzili klasy użytkowe odstępów . Strukturę można następnie zmodyfikować, jeśli użyjesz ich w sprytny sposób.

Rozmieszczanie klas użytkowych

<div class="container-fluid">
    <div class="row">
        <div class="col-sm-4 col-md-3 pl-0"></div>
        <div class="col-sm-4 col-md-3"></div>
        <div class="col-sm-4 col-md-3"></div>
        <div class="col-sm-4 col-md-3 pr-0"></div>
    </div>
</div>

pl-0i pr-0usunie początkowe i końcowe dopełnienie z kolumn. Pozostała tylko kwestia osadzonych wierszy kolumny, ponieważ nadal mają one ujemny margines. W tym przypadku:

<div class="col-sm-12 col-md-6 pl-0">
    <div class="row ml-0">
</div>

Różnice wersji

Należy również zauważyć, że klasy odstępów między narzędziami zostały zmienione od wersji 4.0.0-alpha.4. Zanim zostały one oddzielone myślnikami np 2 => p-x-0a p-l-0i tak dalej ...

Aby pozostać na temat wersji 3: To jest to, czego używam w projektach Bootstrap 3 i dołączam konfigurację kompasu, dla tego konkretnego narzędzia do rozmieszczania odstępów, do bootstrap-sass(wersja 3) lub bootstrap(wersja 4.0.0-alpha.3) z podwójnymi myślnikami lub bootstrap(wersja 4.0.0-alpha.4 i nowsze) z pojedynczymi myślnikami.

Ponadto najnowsze wersje zwiększają się do 5 razy (np. 5-krotność pt-5dopełnienia) zamiast tylko 3.


Kompas

$grid-breakpoints: (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px) !default;

@import "../scss/mixins/breakpoints"; // media-breakpoint-up, breakpoint-infix
@import "../scss/utilities/_spacing.scss";

Wyjście CSS

Oczywiście możesz zawsze kopiować / wklejać klasy z odstępami dopełnienia tylko z wygenerowanego pliku css.

.p-0 { padding: 0 !important; }
.pt-0 { padding-top: 0 !important; }
.pr-0 { padding-right: 0 !important; }
.pb-0 { padding-bottom: 0 !important; }
.pl-0 { padding-left: 0 !important; }
.px-0 { padding-right: 0 !important; padding-left: 0 !important; }
.py-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
.p-1 { padding: 0.25rem !important; }
.pt-1 { padding-top: 0.25rem !important; }
.pr-1 { padding-right: 0.25rem !important; }
.pb-1 { padding-bottom: 0.25rem !important; }
.pl-1 { padding-left: 0.25rem !important; }
.px-1 { padding-right: 0.25rem !important; padding-left: 0.25rem !important; }
.py-1 { padding-top: 0.25rem !important; padding-bottom: 0.25rem !important; }
.p-2 { padding: 0.5rem !important; }
.pt-2 { padding-top: 0.5rem !important; }
.pr-2 { padding-right: 0.5rem !important; }
.pb-2 { padding-bottom: 0.5rem !important; }
.pl-2 { padding-left: 0.5rem !important; }
.px-2 { padding-right: 0.5rem !important; padding-left: 0.5rem !important; }
.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
.p-3 { padding: 1rem !important; }
.pt-3 { padding-top: 1rem !important; }
.pr-3 { padding-right: 1rem !important; }
.pb-3 { padding-bottom: 1rem !important; }
.pl-3 { padding-left: 1rem !important; }
.px-3 { padding-right: 1rem !important; padding-left: 1rem !important; }
.py-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.p-4 { padding: 1.5rem !important; }
.pt-4 { padding-top: 1.5rem !important; }
.pr-4 { padding-right: 1.5rem !important; }
.pb-4 { padding-bottom: 1.5rem !important; }
.pl-4 { padding-left: 1.5rem !important; }
.px-4 { padding-right: 1.5rem !important; padding-left: 1.5rem !important; }
.py-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.p-5 { padding: 3rem !important; }
.pt-5 { padding-top: 3rem !important; }
.pr-5 { padding-right: 3rem !important; }
.pb-5 { padding-bottom: 3rem !important; }
.pl-5 { padding-left: 3rem !important; }
.px-5 { padding-right: 3rem !important; padding-left: 3rem !important; }
.py-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }

2

Myślę, że nikt nie udzielił poprawnej odpowiedzi na to pytanie. Moje rozwiązanie robocze to: 1. Po prostu zadeklaruj inną klasę wraz z przykładem klasy container-fluid (.maxx):

 <div class="container-fluid maxx">
   <div class="row">
     <div class="col-sm-12">
     <p>Hello</p>
     </div>
   </div>
  </div>

  1. Następnie używając specyficzności w części css wykonaj następujące czynności:

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

To zadziała w 100% i usunie wyściółkę z lewej i prawej strony. Mam nadzieję, że to pomoże.


2
Co powiesz px-0na ustawienie lewej i prawej wyściółki dla Bootstrap 4
Vincent Liong

1

Jeśli pracujesz z konfiguratorem, możesz ustawić @grid-gutter-widthod 30pxdo0


1

Użyłem <div class="container-fluid" style="padding: 0px !important"> i wydaje się, że działa.


2
mógłby uniknąć stylu i zamiast tego dodać klasę użytkowąp-0
iCrus

0

Sam się z tym zmagałem i wreszcie wierzę, że to rozgryzłem. To niesamowite, jak wiele nieudanych odpowiedzi na to pytanie

Wszystko, co musisz zrobić, to usunąć wypełnienie ze wszystkich elementów .col i usunąć wypełnienie również z .container-fluid.

Zrobiłem to w moim własnym projekcie trochę niechlujnie, dodając do mojego pliku css:

.col, col-10, col-12, col-2, col-6 {
    padding: 0!important;
}

.container-fluid {
    padding: 0!important;
}

Mam po prostu różne rozmiary col, aby uwzględnić wszystkie różne rozmiary col, których używam. Jestem przekonany, że istnieje bardziej przejrzysty sposób pisania CSS, ale to ilustruje efekt końcowy.


0

Używaj px-0na containeri no-guttersnarow aby usunąć wyściółkę.

Cytat z Bootstrap 4 - system Grid :

Wiersze są opakowaniami dla kolumn. Każda kolumna ma poziomą wyściółkę (zwaną rynną) do kontrolowania odległości między nimi. To wypełnienie jest następnie równoważone w wierszach z ujemnymi marginesami. W ten sposób cała zawartość Twoich kolumn jest wizualnie wyrównana do lewej strony.

Kolumny mają dopełnienie poziome, aby utworzyć odstępy między poszczególnymi kolumnami, jednak można usunąć marginesy z wierszy i wypełnienie z kolumn za .no-gutterspomocą elementu .row.

Poniżej znajduje się demonstracja na żywo:

h1 {
  background-color: tomato;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous" />

<div class="container-fluid" id="div1">
  <div class="row">
    <div class="col">
        <h1>With padding : (</h1>
    </div>
  </div>
</div>

<div class="container-fluid px-0" id="div1">
  <div class="row no-gutters">
    <div class="col">
        <h1>No padding : > </h1>
    </div>
  </div>
</div>

Powodem, dla którego to działa, jest to container-fluidi coloba mają następujące wypełnienie:

padding-right: 15px;
padding-left: 15px;

px-0może usunąć poziomą wyściółkę z container-fluidi no-guttersmoże usunąć wyściółkę z col.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.