Trong trang phản hồi bootstrap, làm thế nào để căn giữa một div


132

định vị một div ở trung tâm của trang phản hồi

Tôi cần tạo một trang đáp ứng bằng cách sử dụng bootstrap theo vị trí div ở giữa trang như trong bố cục được đề cập bên dưới.



Tôi cần phải căn giữa một div với văn bản (Thiết kế đáp ứng bằng cách sử dụng bootstrap) sẽ xuất hiện bên trong một div có chiều rộng đầy đủ col-lg-12 khác như trong layout.it sẽ hữu ích nếu tôi có thể lấy mã mẫu trong fiddle
Rama Priya

Câu trả lời:


173

CẬP NHẬT cho Bootstrap 4

Sắp xếp lưới dọc đơn giản hơn với hộp flex

@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>

Giải pháp cho 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>

Đây là một ví dụ đơn giản về div theo chiều ngang và chiều dọc được căn giữa trong tất cả các kích thước màn hình.


41
Có lẽ class="col-xs-4 col-xs-offset-4"nên đủ.
L105

Tôi phải định vị trung tâm div col-lg-12 theo chiều dọc ở tất cả các kích thước màn hình
Rama Priya

1
Tôi tìm thấy giải pháp cho bạn kiểm tra fiddle jsfiddle.net/Palapas/52VtD/687 này container phải có chiều cao 100% nếu không bạn cần sử dụng vị trí tuyệt đối
ppollono

45

CSS:

html,
body {
    height: 100%;
}

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

HTML:

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

Ví dụ


1
giải pháp này không hoạt động khi tôi mở trang web của mình trên điện thoại di động.
viết mã

2
Xin chào, bạn đang sử dụng trình duyệt nào? Bạn đã tải các bảng định kiểu và javascript của Bootstrap chưa? Nó hoạt động trong Firefox và Chrome. Đã thử nghiệm trên tất cả các kích cỡ màn hình.
kêu

Tôi đã kiểm tra điều này bằng cách thay đổi kích thước trình duyệt của mình, cũng như sử dụng trình kiểm tra trang web phản hồi. Làm việc cho tôi.
Rocky Kev

1
cách khắc phục này đang phá vỡ các kiểu mặc định của bootstrap
ppollono

21

Trong bootstrap 4

để tập trung trẻ em theo chiều ngang , sử dụng lớp bootstrap-4

justify-content-center

để tập trung trẻ em theo chiều dọc , sử dụng lớp bootstrap-4

 align-items-center

nhưng hãy nhớ đừng quên sử dụng lớp d-flex với đây là lớp tiện ích bootstrap-4, như vậy

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

Lưu ý: đảm bảo thêm các tiện ích bootstrap-4 nếu mã này không hoạt động



5

Bạn không cần thay đổi bất cứ điều gì trong CSS, bạn có thể trực tiếp viết điều này trong lớp và bạn sẽ nhận được kết quả.

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

nhập mô tả hình ảnh ở đây


4

không có bảng hiển thị và không có bootstrap, tôi muốn làm điều đó

<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

Tốt trả lời ppollono. Tôi chỉ chơi xung quanh và tôi có một giải pháp tốt hơn một chút. CSS sẽ giữ nguyên, tức là:

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

Nhưng đối với HTML:

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

Điều này là đủ.


2

Không phải là cách tốt nhất, nhưng vẫn sẽ làm việc

<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

Tôi nghĩ cách đơn giản nhất để thực hiện bố cục với bootstrap là như thế này:

<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>

tất cả những gì tôi đã làm là thêm các lớp div cho phép tôi căn giữa div, nhưng vì tôi không sử dụng tỷ lệ phần trăm, nên bạn cần chỉ định chiều rộng tối đa của div là trung tâm.

Bạn có thể sử dụng cùng phương thức này để căn giữa nhiều cột, bạn chỉ cần thêm nhiều lớp 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>

Lưu ý: tôi đã thêm một div với cột 12 cho md, sm và xs, nếu bạn không làm điều này với div đầu tiên với màu nền (trong trường hợp này là "blueviolet") sẽ sụp đổ, bạn sẽ có thể thấy các div con , nhưng không phải màu nền.


1

Đối với phiên bản thực tế của Bootstrap 4.3.1, hãy sử dụng

Phong cách

<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>

<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

Hãy thử điều này, ví dụ, tôi đã sử dụng một chiều cao cố định. Tôi nghĩ nó không ảnh hưởng đến kịch bản đáp ứng.

<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

Trong Bootstrap 4, sử dụng:

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

Bạn cũng có thể thay đổi vị trí tùy thuộc vào những gì bạn muốn:

<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>

Tham khảo tại đây


-1

Dưới đây là các quy tắc CSS đơn giản đặt bất kỳ div nào vào trung tâm

.centered {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}

https://css-tricks.com/quick-css-trick-how-to-center-an-object-exactly-in-the-center/


Bạn có thể mở rộng câu trả lời của bạn? Liên kết có xu hướng trở nên cũ kỹ theo thời gian.
orique

2
Ngoài ra, đây không phải là "cách bootstrap" để đạt được điều này.
FuriousFolder

-1

Giải pháp đơn giản nhất sẽ thêm một cột trống ở cả hai bên như dưới đây:

  <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;
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.