Na responsywnej stronie bootstrap, jak wyśrodkować div


139

umieść element div na środku responsywnej strony

Muszę utworzyć responsywną stronę za pomocą bootstrap, umieszczając element div na środku strony, jak w poniższym układzie.



Muszę wyśrodkować div z tekstem (Responsive design using bootstrap), który powinien znajdować się w innym środku div o pełnej szerokości col-lg-12, jak w układzie. byłoby pomocne, jeśli mogę uzyskać przykładowy kod w skrzypcach
Rama Priya

Odpowiedzi:


176

AKTUALIZACJA dla Bootstrap 4

Prostsze wyrównanie siatki w pionie dzięki modułowi Flex-Box

@import url('https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css');
html,
body {
  height: 100%
}
<div class="h-100 row align-items-center">
  <div class="col" style="background:red">
    TEXT
  </div>
</div>

Rozwiązanie dla Bootstrap 3

@import url('http://getbootstrap.com/dist/css/bootstrap.css');
 html, body, .container-table {
    height: 100%;
}
.container-table {
    display: table;
}
.vertical-center-row {
    display: table-cell;
    vertical-align: middle;
}
<script src="http://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.1.0/bootstrap.min.js"></script>

<div class="container container-table">
    <div class="row vertical-center-row">
        <div class="text-center col-md-4 col-md-offset-4" style="background:red">TEXT</div>
    </div>
</div>

To prosty przykład pionowego i poziomego elementu div wyśrodkowanego na wszystkich rozmiarach ekranu.


43
Może class="col-xs-4 col-xs-offset-4"wystarczy.
L105

Muszę ustawić div col-lg-12 pionowo na środku na wszystkich rozmiarach ekranu
Rama Priya

1
Znalazłem rozwiązanie dla Ciebie sprawdź to skrzypce jsfiddle.net/Palapas/52VtD/687 pojemnik musi mieć wysokość 100% w przeciwnym razie musisz użyć pozycji bezwzględnej
ppollono

47

CSS:

html,
body {
    height: 100%;
}

.container {
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
}

HTML:

<div class="container">
  <div>
    example
  </div>
</div>

Przykładowe skrzypce


1
to rozwiązanie nie działa, gdy otwieram witrynę w telefonie komórkowym.
codeinprogress

2
Cześć, jakiej przeglądarki używasz? Czy załadowałeś arkusze stylów Bootstrap i javascript? Działa w przeglądarkach Firefox i Chrome. Przetestowano na wszystkich rozmiarach ekranu.
vocasle

Przetestowałem to, zmieniając rozmiar przeglądarki, a także używając responsywnego narzędzia do sprawdzania witryn. Pracuje dla mnie.
Rocky Kev

1
ta poprawka łamie domyślne style bootstrapu
ppollono

24

W bootstrapie 4

aby wyśrodkować dziecko w poziomie , użyj klasy bootstrap-4

justify-content-center

aby wyśrodkować dziecko w pionie , użyj klasy bootstrap-4

 align-items-center

ale pamiętaj, nie zapomnij użyć z nimi klasy d-flex, jest to klasa narzędziowa bootstrap-4, tak jak ta

<div class="d-flex justify-content-center align-items-center" style="height:100px;">
    <div class="bg-primary">MIDDLE</div>    
</div>

Uwaga: upewnij się, że dodałeś narzędzia bootstrap-4, jeśli ten kod nie działa



6

Nie musisz niczego zmieniać w CSS, możesz napisać to bezpośrednio w klasie, a otrzymasz wynik.

<div class="col-lg-4 col-md-4 col-sm-4 container justify-content-center">
  <div class="col" style="background:red">
    TEXT
  </div>
</div>

wprowadź opis obrazu tutaj


działa tylko dla poziomego środka, nie wiem dlaczego w górę? Queston zapytał o oba (h i v).
Nuri YILMAZ

4

bez tabeli wyświetlania i bez bootstrapa, wolałbym to zrobić

<div class="container container-table">
    <div class="row vertical-center-row">
        <div class="text-center col-md-4 col-md-offset-4" style="background:red">TEXT</div>
    </div>
</div>


 html, body, .container-table {
    height: 100%;
}
.container-table {
    width:100vw;
  height:150px;
  border:1px solid black;
}
.vertical-center-row {
   margin:auto;
  width:30%;
  padding:63px;
  text-align:center;

}

http://codepen.io/matoeil/pen/PbbWgQ


2

Dobra odpowiedź ppollono. Po prostu się bawiłem i znalazłem nieco lepsze rozwiązanie. CSS pozostałby taki sam, tj .:

html, body, .container {
    height: 100%;
}
.container {
    display: table;
    vertical-align: middle;
}
.vertical-center-row {
    display: table-cell;
    vertical-align: middle;
}

Ale dla HTML:

<div class="container">
    <div class="vertical-center-row">
        <div align="center">TEXT</div>
    </div>
</div>

To wystarczy.


2

Nie jest to najlepszy sposób, ale nadal będzie działać

<div class="container-fluid h-100">
<div class="row h-100">
<div class="col-lg-12"></div>
<div class="col-lg-12">
<div class="row h-100">
  <div class="col-lg-4"></div>
  <div class="col-lg-4 border">
    This div is in middle
  </div>
  <div class="col-lg-4"></div>
</div>

</div>
<div class="col-lg-12"></div>
</div>

</div>

1

Myślę, że najprostszy sposób na wykonanie układu za pomocą bootstrapa jest taki:

<section>
<div class="container">
    <div class="row">
        <div align="center">
            <div style="max-width: 200px; background-color: blueviolet;">
                <div>
                    <h1 style="color: white;">Content goes here</h1>
                </div>
            </div>
        </div>
    </div>
</div>

Wszystko, co zrobiłem, to dodanie warstw elementów div, które pozwoliły mi wyśrodkować element div, ale ponieważ nie używam procentów, musisz określić maksymalną szerokość elementu div, który ma być środkowy.

Możesz użyć tej samej metody, aby wyśrodkować więcej niż jedną kolumnę, wystarczy dodać więcej warstw div:

<div class="container">
    <div class="row">
        <div align="center">
            <div style="max-width: 400px; background-color: blueviolet;">
                <div class="col-md-12 col-sm-12 col-xs-12" style="background-color: blueviolet;">
                    <div class="col-md-8 col-sm-8 col-xs-12" style="background-color: darkcyan;">
                        <h1 style="color: white;">Some content</h1>
                    </div>
                    <div class="col-md-4 col-sm-4 col-xs-12" style="background-color: blue;">
                        <p style="color: white;">More content</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

Uwaga: dodałem element div z kolumną 12 dla md, sm i xs, jeśli tego nie zrobisz, pierwszy element div z kolorem tła (w tym przypadku „blueviolet”) zwinie się, będziesz mógł zobaczyć podrzędne elementy div , ale nie kolor tła.


1

Dla aktualnej wersji Bootstrap 4.3.1 użyj

Styl

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<style type="text/css">
html, body {
    height: 100%;
}
</style>

Kod

<div class="h-100 d-flex justify-content-center">
<div class="jumbotron my-auto">
<!-- example content -->
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">Title</h4>
<p>Desc</p>
</div>
<!-- ./example content -->
</div>
</div

1

Spróbuj tego, na przykład użyłem stałej wysokości. Myślę, że to nie wpływa na scenariusz responsywny.

<html lang="en">
<head>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
    <div class="d-flex justify-content-center align-items-center bg-secondary w-100" style="height: 300px;">
        <div class="bg-primary" style="width: 200px; height: 50px;"></div>
    </div>
</body>
</html>


1

W Bootstrap 4 użyj:

<div class="d-flex justify-content-center">...</div>

Możesz także zmienić pozycję w zależności od tego, co chcesz:

<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>

Odniesienie tutaj


0

body{
    height: 100vh;
} 
.container{
    height: 100%;
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" rel="stylesheet"/>


<div class="container text-center d-flex align-items-center justify-content-center">
        <div>
            <div>
                <h1>Counter</h1>
            </div>
            <div>
                <span>0</span>
            </div>
            <div>
                <button class="btn btn-outline-primary">Decrease</button>
                <button class="btn btn-danger">Reset</button>
                <button class="btn btn-outline-success">Increase</button>
            </div>
        </div>
    </div>

możesz to zrobić również w ten sposób.



-1

Najprostszym rozwiązaniem będzie dodanie jednej pustej kolumny po obu stronach, jak poniżej:

  <div class="row form-group">

    <div class="col-3"></div>

    <ul class="list-group col-6">
      <li class="list-group-item active">Yuvraj Patil</li>
    </ul>

    <div class="col-3"></div>
  </div>

-2

jsFiddle

HTML :

<div class="container" id="parent">
  <div class="row">
    <div class="col-lg-12">text
      <div class="row ">
        <div class="col-md-4 col-md-offset-4" id="child">TEXT</div>
      </div>
    </div>
  </div>
</div>

CSS :

#parent {    
    text-align: center;
}
#child {
    margin: 0 auto;
    display: inline-block;
    background: red;
    color: white;
}
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.