Twitter Bootstrap - thêm không gian trên cùng giữa các hàng


483

Làm cách nào để thêm lề trên cho class="row"các phần tử bằng cách sử dụng twitter bootstrap framework?

Câu trả lời:


801

Chỉnh sửa hoặc ghi đè hàng trong bootstrap Twitter là một ý tưởng tồi, bởi vì đây là một phần cốt lõi của giàn giáo trang và bạn sẽ cần các hàng không có lề trên.

Để giải quyết vấn đề này, thay vào đó, hãy tạo một lớp "bộ đệm trên cùng" mới có thêm lề tiêu chuẩn mà bạn cần.

.top-buffer { margin-top:20px; }

Và sau đó sử dụng nó trên các div hàng nơi bạn cần một lề trên.

<div class="row top-buffer"> ...

45
Chỉnh sửa hàng gốc là sai đối với khung và lớp mới chỉ nên bổ sung cho lớp hàng ... đó là một sự khác biệt tinh tế nhưng trong Twitter Bootstrap, hàng có vai trò bố cục trang cụ thể. Dù sao, tôi chỉ đang cố gắng giúp đỡ, giải pháp của tôi là một giải pháp cho vấn đề.
Acyra

11
không thể nào, những câu trả lời này hơi khác IMHO. Cái này có thể sử dụng nhiều hơn vì nó bao gồm "đặt tên kiểu lớp của bạn để html của bạn đọc dễ dàng hơn" và bạn có thể đọc lề trên trong html thay vì rowSpecificForName. Câu trả lời này là nội tuyến hơn với các mẫu bootstrap twitter.
Dean Hiller

2
Họ sẽ thêm các lớp khoảng cách dọc cụ thể vào Bootstrap 4: github.com/twbs/bootstrap/issues/4286
icc97

2
Tất cả những gì tôi học được từ những bình luận này là các nhà phát triển rất quan tâm và một số thích 2 + 3 = 5 và những người khác 3 + 2 = 5. Tiếp tục ...
Fabio S.

3
@FabioS. Điều nên học là đối với một khung như Bootstrap, chỉnh sửa mã gốc hoặc ghi đè thì đó là một ý tưởng tồi. Các kịch bản là vô tận nhưng đây là một vài ví dụ. a.) ghi đè - nếu bạn ghi đè lớp .row, bây giờ bạn cần đi qua dự án của mình và thêm một lớp bổ sung vào các hàng không nhận được lề b.) chỉnh sửa mã gốc - bạn kế thừa dự án tại nơi làm việc và bạn muốn để di chuyển lên bootstrap4; GIÁO SƯ! Không có gì có vẻ đúng!? Bây giờ bạn có gánh nặng đi qua các tập tin bootstrap 3 cố gắng để tìm thấy những gì trên trái đất phát triển trước thay đổi.
peroija

176

Ok chỉ để cho bạn biết những gì đã xảy ra sau đó, tôi đã sửa bằng cách sử dụng một số lớp mới như Acyra nói ở trên:

.top5 { margin-top:5px; }
.top7 { margin-top:7px; }
.top10 { margin-top:10px; }
.top15 { margin-top:15px; }
.top17 { margin-top:17px; }
.top30 { margin-top:30px; }

bất cứ khi nào tôi muốn tôi làm <div class="row top7"></div>

để đáp ứng tốt hơn, bạn có thể thêm margin-top:7%thay vì 5pxví dụ: D


13
Tôi cảm thấy giải pháp này thanh lịch hơn nhiều so với giải pháp được chấp nhận.
rdiaz82

72
Nó là như nhau.
alexander

@alexander nhưng chung chung hơn.
Ejaz

6
Làm thế nào .top-buffer { margin-top:20px; }khác với .top30 { margin-top:30px; }? Vâng, từ quan điểm của bất kỳ nhà phát triển: Nó là như nhau. Điều chỉnh để phù hợp với trường hợp sử dụng không được tính ở đây. Đặc biệt là không, nếu OP trả lời câu hỏi của chính mình.
alexander

2
Lề trên 17px cổ điển; Rất hữu ích.
adripanico

129

Bootstrap 3

Nếu bạn cần tách các hàng trong bootstrap, bạn chỉ cần sử dụng .form-group. Điều này thêm lề 15px vào cuối hàng.

Trong trường hợp của bạn, để có được lề trên, bạn có thể thêm lớp này vào .rowphần tử trước

<div class="row form-group">

/* From bootstrap.css */
.form-group {
        margin-bottom: 15px;
}

bootstrap 4

Bạn có thể sử dụng các lớp khoảng cách tích hợp

<div class="row mt-3"></div>

Tên "t" trong tên lớp làm cho nó chỉ áp dụng cho phía "trên cùng", có các lớp tương tự cho phía dưới, bên trái, bên phải. Các định nghĩa số kích thước không gian.


Có phải nhóm hình thức bị tước khỏi BS4?
Z. Khullah

3
Không, form-groupvẫn còn , nhưng các lớp đặc biệt cho lề / phần đệm đã được thêm vào có thể thực hiện công việc và có nhiều tùy chọn hơn.
Buksy

Có nhiều thay đổi cho điều này trong Bootstrap V 4 không? Hiện tại tôi đang dùng phiên bản 4 và mt-3không hoạt động nên sử dụngform-group
Nick Schwaderer

Nó sẽ hoạt động , kiểm tra xem bootstrap css mà bạn đã liên kết với dự án của bạn có chứa định nghĩa lớp ".mt-3" hay không.
Buksy

82

Đối với khoảng cách Bootstrap 4 nên được áp dụng bằng cách sử dụng

lớp tiện ích tốc ký

theo định dạng sau:

{property} {bên} - {size}

Trường hợp tài sản là một trong:

  • m - cho các lớp đặt lề
  • p - cho các lớp đặt phần đệm

Trường hợp các bên là một trong:

  • t - đối với các lớp đặt lề trên hoặc đệm trên cùng
  • b - đối với các lớp đặt lề dưới hoặc đệm đáy
  • l - đối với các lớp đặt lề trái hoặc đệm trái
  • r - đối với các lớp đặt lề phải hoặc đệm-phải
  • x - cho các lớp đặt cả * -left và * -right
  • y - cho các lớp đặt cả * -top và * -bottom
  • để trống - cho các lớp đặt lề hoặc phần đệm ở cả 4 mặt của phần tử

Trong đó kích thước là một trong:

  • 0 - cho các lớp loại bỏ lề hoặc phần đệm bằng cách đặt nó thành 0
  • 1 - (theo mặc định) cho các lớp đặt lề hoặc phần đệm thành $ spacer * .25
  • 2 - (theo mặc định) cho các lớp đặt lề hoặc phần đệm thành $ spacer * .5
  • 3 - (theo mặc định) cho các lớp đặt lề hoặc phần đệm thành $ spacer
  • 4 - (theo mặc định) cho các lớp đặt lề hoặc phần đệm thành $ spacer * 1.5
  • 5 - (theo mặc định) cho các lớp đặt lề hoặc phần đệm thành $ spacer * 3
  • tự động - cho các lớp đặt lề thành tự động

Vì vậy, bạn nên làm bất kỳ trong số này:

<div class="row mt-1">
<div class="row mt-2">
          ...
<div class="row mt-5">

Đọc tài liệu để được giải thích thêm. Hãy thử các ví dụ trực tiếp ở đây .


3
Đây phải là câu trả lời được chấp nhận ngay bây giờ với việc phát hành Bootstrap 4. Nó đi kèm với các lớp tích hợp này, không cần phải tạo lớp mới.
Matt K

45

Đôi khi, lề trên có thể gây ra sự cố thiết kế:

http://www.w3.org/TR/CSS2/box.html#collapsing-margins

Vì vậy, tôi khuyên bạn nên tạo "các lớp dưới cùng" thay vì "các lớp trên cùng" và áp dụng chúng cho mục trước đó.

Nếu bạn đang sử dụng Bootstrap, nhập LESS Bootstrap, hãy thử xác định các lớp dưới cùng với các không gian Chủ đề Bootstrap theo tỷ lệ:

.margin-bottom-xs {margin-bottom: ceil(@line-height-computed / 4);}  
.margin-bottom-sm {margin-bottom: ceil(@line-height-computed / 2);} 
.margin-bottom-md {margin-bottom: @line-height-computed;}
.margin-bottom-lg {margin-bottom: ceil(@line-height-computed * 2);}  

33

Tôi đã thêm các lớp này vào biểu định kiểu bootstrap của mình

.voffset  { margin-top: 2px; }
.voffset1 { margin-top: 5px; }
.voffset2 { margin-top: 10px; }
.voffset3 { margin-top: 15px; }
.voffset4 { margin-top: 30px; }
.voffset5 { margin-top: 40px; }
.voffset6 { margin-top: 60px; }
.voffset7 { margin-top: 80px; }
.voffset8 { margin-top: 100px; }
.voffset9 { margin-top: 150px; }

Thí dụ

<div class="container">
  <div class="row voffset2">
    <div class="col-lg-12">
      <p>
        Vertically offset text.
      </p>
    </div>
  </div>
</div>

27

Tôi đang sử dụng các lớp này để thay đổi lề trên:

.margin-top-05 { margin-top: 0.5em; }
.margin-top-10 { margin-top: 1.0em; }
.margin-top-15 { margin-top: 1.5em; }
.margin-top-20 { margin-top: 2.0em; }
.margin-top-25 { margin-top: 2.5em; }
.margin-top-30 { margin-top: 3.0em; }

Khi tôi cần một phần tử có khoảng cách 2em từ phần tử ở trên, tôi sử dụng nó như thế này:

<div class="row margin-top-20">Something here</div>

Nếu bạn chọn các pixel trước, hãy thay đổi em thành px để thực hiện theo cách của bạn.


6
Ý tưởng tốt, nhưng tôi trừu tượng đi những con số, vì chúng quá cụ thể. Nếu bạn gắn bó với các khái niệm trừu tượng như s, m, l, xl, xxl, v.v., bạn có thể thay đổi kích thước qua css mà không phải thay đổi tên trong mẫu.
Mike Purcell

1
@MikePurcell Suy nghĩ tốt và nó có thể là giải pháp phù hợp với bạn. Nhưng tôi thích một cách chính xác hơn để xác định lề. Sử dụng em thay vì px cho tôi một cách lỏng lẻo để đạt được nó mà không quá cụ thể.
Hexodus

3
Lợi ích của <div class="row margin-top-20">hơn là <div class"row" style="margin-top: 2.0em">gì?
icc97

@ icc97 Về cơ bản, tách biệt các mối quan tâm, nhưng ở đây bạn có thể thấy các ý kiến ​​khác: stackoverflow.com/a/2612494/1683224 .
Wiley Marques

@WileyMarques Điều đó đúng với một lớp có tên ví dụ: "top-buffer" (như trong câu trả lời được chấp nhận), nhưng không có ý nghĩa đối với một lớp có tên là lề-top-20. Trừ khi bạn hài lòng với tỷ lệ 20 trên thực tế để thêm một cái gì đó ngoài 2 mặt đệm, điều này sẽ gây nhầm lẫn.
thelem


4

Bootstrap 4 alpha, cho lề trên cùng: tên lớp viết tắt CSS mt-1, mt-2 (mt-lg-5, mt-sm-2) tương tự cho phía dưới, bên phải, bên trái và bạn cũng có lớp tự động ml- Tự động

    <div class="mt-lg-1" ...>

Các đơn vị là từ 1đến 5: trong các biến.scs có nghĩa là nếu bạn đặt mt-1, nó sẽ cho 0,25rem của đỉnh lề.

$spacers: (
  0: (
    x: 0,
    y: 0
  ),
  1: (
    x: ($spacer-x * .25),
    y: ($spacer-y * .25)
  ),
  2: (
    x: ($spacer-x * .5),
    y: ($spacer-y * .5)
  ),
  3: (
    x: $spacer-x,
    y: $spacer-y
  ),
  4: (
    x: ($spacer-x * 1.5),
    y: ($spacer-y * 1.5)
  ),
  5: (
    x: ($spacer-x * 3),
    y: ($spacer-y * 3)
  )
) !default;

đọc thêm tại đây

https://v4-alpha.getbootstrap.com/utilities/spaces/#horizontal-centering


3

Thêm vào lớp này trong tệp .css:

.row {
    margin-left: -20px;
    *zoom: 1;
    margin-top: 50px;
}

hoặc tạo một lớp mới và thêm nó vào phần tử

.rowSpecificFormName td {
    margin-top: 50px;
}

7
uhmmmmm tôi không thích totouch css, nếu tôi cần các hàng không có lề trong các trang khác thì sao?
itme

Bạn có thể tạo một lớp mới .rowSpecificForm
Nielsen Ramon

2
Nhưng không có lớp css được xác định chỉ dành cho 'lề trên' trong Twitter Bootstrap.
Nielsen Ramon

lạ họ không setted vài lớp forspacing theo chiều dọc, tôi cần phải thêm chúng không có giải pháp khác: /, nhờ Nielsen
itsme

8
nhớ các tầng CSS, vì vậy bạn sẽ không bao giờ phải chỉnh sửa bootstrap.css.
ONOZ

1

Nếu bạn muốn thay đổi chỉ trên một trang, hãy thêm quy tắc kiểu sau:

 #myCustomDivID .row {
     margin-top:20px;
 }

1

Trong Bootstrap 4 alpha + bạn có thể sử dụng cái này

class margin-bottom-5

Các lớp được đặt tên bằng định dạng: {property}-{sides}-{size}


1
just take a new class beside every row and apply css of margin-top: 20px;
here is the code below
<style>
  .small-top
   {
     margin-top: 25px;  
   }
</style>    
<div class="row small-top">
   <div class="col-md-12">
   </div>
 </div>

Vui lòng thêm giải thích cho câu trả lời của bạn. Trả lời mà không giải thích là vô ích.
ADreNaLiNe-DJ

1

Bootstrap3

CSS (chỉ máng xối, không có lề xung quanh):

.row.row-gutter {
  margin-bottom: -15px;
  overflow: hidden;
}
.row.row-gutter > *[class^="col"] {
  margin-bottom: 15px;
}

CSS (lề bằng nhau xung quanh, 15px / 2):

.row.row-margins {
  padding-top: 7px; /* or margin-top: 7px; */
  padding-bottom: 7px; /* or margin-bottom: 7px; */
}
.row.row-margins > *[class^="col"] {
  margin-top: 8px;
  margin-bottom: 8px;
}

Sử dụng:

<div class="row row-gutter">
    <div class="col col-sm-9">first</div>
    <div class="col col-sm-3">second</div>
    <div class="col col-sm-12">third</div>
</div>

(với SASS hoặc LESS 15px có thể là một biến từ bootstrap)



0

bạn có thể thêm mã này:

[class*="col-"] {
    padding-top: 1rem;
    padding-bottom: 1rem;
}


0

Nếu bạn đang sử dụng BootStrap 3.3.7, bạn có thể sử dụng thư viện mã nguồn mở bootstrap-spacer thông qua NPM

npm install bootstrap-spacer

hoặc bạn có thể truy cập trang github:

https://github.com/chigozieorunta/bootstrap-spacer

Đây là một ví dụ về cách thức này hoạt động với các hàng không gian bằng cách sử dụng lớp .row-spacer:

<div class="row row-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

<div class="row row-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

Nếu bạn yêu cầu khoảng trắng giữa các cột, bạn cũng có thể thêm lớp .row-col-spacer:

<div class="row row-col-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

Và bạn cũng có thể kết hợp nhiều lớp .row-spacer & .row-col-spacer với nhau:

<div class="row row-spacer row-col-spacer">
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
    <div class="col-md-4">
    </div>
</div>

1
Tôi sẽ khuyên bạn không nên thêm phụ thuộc vào 40 dòng css
Andrew Diamond

-3

Thủ thuật của tôi. Không sạch sẽ, nhưng làm việc tốt cho tôi

<p>&nbsp;</p>
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.