Bootstrap Grid System

Bootstrap Grid System

In this chapter we shall discuss the Bootstrap Grid System.

What is a Grid?

As put by wikepedia:

In graphic design, a grid is a structure (usually two-dimensional) made up of a series of intersecting straight (vertical, horizontal) lines used to structure content. It is widely used to design layout and content structure in print design. In web design, it is a very effective method to create a consistent layout rapidly and effectively using HTML and CSS.

To put it simple words grids in web designorganise and structure content, makes websites easy to scan and reduces cognitive load on users.

What is Bootstrap Grid System?

As put by the official documentation of Bootstrap for grid system:

Bootstrap includes a responsive, mobile first fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases. It includes predefined classes for easy layout options, as well as powerful mixins for generating more semantic layouts.

Let us understand the above statement. Bootstrap 3 is mobile first in the sense that the code for Bootstrap now starts by targeting smaller screens like mobile devices,tablets, and then “expands” components and grids for larger screens such as laptops, desktops.

Mobile First Strategy

Content

Determine what is most important.

Layout

Design to smaller widths first.

Base CSS address mobile devicefirst;media queries address fortablet,desktops.

Progressive Enhancement

Add elements as screen size increases.

Working of Bootstrap Grid System

Grid systems are used for creating page layouts through a series of rows and columns that house your content. Here's how the Bootstrap grid system works:

Rows must be placed within a .containerclass for proper alignment and padding.

Use rows to create horizontal groups of columns.

Content should be placed within columns, and only columns may be immediate children of rows.

Predefined grid classes like .row and .col-xs-4 are available for quickly making grid layouts. LESS mixins can also be used for more semantic layouts.

Columns create gutters (gaps between column content) via padding. That padding is offset in rows for the first and last column via negative margin on .rows.

Grid columns are created by specifying the number of twelve available columns you wish to span. For example, three equal columns would use three .col-xs-4.

Media Queries

Media query is a really fancy term for "conditional CSS rule". It simply applies some CSS based on certain conditions set forth. If those conditions are met, the style is applied.

Media Queries in Bootstrap allow you to move, show and hide content based on viewport size. Following media queries are used in LESS files to create the key breakpoints in the Bootstrap grid system.

/* Extra small devices (phones, less than 768px) */

/* No media query since this is the default in Bootstrap */

 

/* Small devices (tablets, 768px and up) */

@media (min-width: @screen-sm-min) { ... }

 

/* Medium devices (desktops, 992px and up) */

@media (min-width: @screen-md-min) { ... }

 

/* Large devices (large desktops, 1200px and up) */

@media (min-width: @screen-lg-min) { ... }

Occasionally these are expanded to include amax-width to limit CSS to a narrower set of devices.

@media (max-width: @screen-xs-max) { ... }

@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }

@media (min-width: @screen-md-min) and (max-width: @screen-md-max) { ... }

@media (min-width: @screen-lg-min) { ... }

Media queries have two parts, a device specification and then a size rule. In the above case, the following rule is set:

Lets consider this line:

@media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) { ... }

For all devices no matter what kind with min-width: @screen-sm-min if the width of the screen gets smaller than @screen-sm-maxthen do something.

Grid options

The following table summarizes aspects of how Bootstrap grid system works across multiple devices:

Extra small devices Phones (<768px)

Small devices Tablets (≥768px)

Medium devices Desktops (≥992px)

Large devices Desktops (≥1200px)

Grid behavior

Horizontal at all times

Collapsed to start, horizontal above breakpoints

Collapsed to start, horizontal above breakpoints

Collapsed to start, horizontal above breakpoints

Max container width

None (auto)

750px

970px

1170px

Class prefix

.col-xs-

.col-sm-

.col-md-

.col-lg-

# of columns

12

12

12

12

Max column width

Auto

60px

78px

95px

Gutter width

30px
(15px on each side of a column)

30px
(15px on each side of a column)

30px
(15px on each side of a column)

30px
(15px on each side of a column)

Nestable

Yes

Yes

Yes

Yes

Offsets

Yes

Yes

Yes

Yes

Column ordering

Yes

Yes

Yes

Yes

Basic Grid Structure

Following is basic structure of Bootstrap grid:

<div class="container">

   <div class="row">

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

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

   </div>

   <div class="row">...</div>

</div>

<div class="container">....

Responsive column resets

With the four tiers of grids available you're bound to run into issues where, at certain breakpoints, your columns don't clear quite right as one is taller than the other. To fix that, use a combination of a class .clearfix and theresponsive utility classes as shown in the following example:

<div class="container">

   <div class="row" >

      <div class="col-xs-6 col-sm-3"

         style="background-color: #dedef8;

         box-shadow: inset 1px -1px1px #444, inset -1px 1px 1px #444;">

         <p>Lorem ipsum dolor sitamet, consectetur adipisicing elit.</p>

      </div>

      <div class="col-xs-6 col-sm-3"

         style="background-color: #dedef8;box-shadow:

         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">

         <p>Lorem ipsum dolor sitamet, consectetur adipisicing elit,sed do

            eiusmod tempor incididuntut labore et dolore magna aliqua. Ut

            enim ad minim veniam, quisnostrud exercitation ullamco laboris

            nisi ut aliquip ex eacommodo consequat.

         </p>

         <p>Lorem ipsum dolor sitamet, consectetur adipisicing elit,sed do

            eiusmod tempor incididuntut.

         </p>

      </div>

 

      <div class="clearfix visible-xs"></div>

 

      <div class="col-xs-6 col-sm-3"

         style="background-color: #dedef8;

         box-shadow:inset 1px -1px 1px#444, inset -1px 1px 1px #444;">

         <p>Ut enim ad minim veniam,quis nostrud exercitation ullamco

            laboris nisi ut aliquip exea commodo consequat.

         </p>

      </div>

      <div class="col-xs-6 col-sm-3"

         style="background-color: #dedef8;box-shadow:

         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">

         <p>Lorem ipsum dolor sitamet, consectetur adipisicing elit,sed do

            eiusmod tempor incididuntut labore et dolore magna aliqua. Ut

            enim ad minim

         </p>

      </div>

   </div>

</div>

Resize your viewport or check it out on your phone for a desired result of this example.

Offset columns

Offsets are a useful feature for more specialized layouts. They can be used to push columns over for more spacing, for example. The .col-xs=*classes don’t support offsets, but they are easily replicated by using an empty cell.

To use offsets on large displays, use the .col-md-offset-* classes. These classes increase the left margin of a column by * columns where * range from 1 to 11.

In the following example we have <div class="col-md-6">..</div>, we will center this using class .col-md-offset-3.

<div class="container">

 

   <h1>Hello, world!</h1>

 

   <div class="row" >

      <div class="col-xs-6 col-md-offset-3"

         style="background-color: #dedef8;box-shadow:

         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">

         <p>Lorem ipsum dolor sitamet, consectetur adipisicing

            elit.

         </p>

      </div>

 

   </div>

</div>

Nesting columns

To nest your content with the default grid, add a new .row and set of .col-md-* columns within an existing .col-md-* column. Nested rows should include a set of columns that add up to 12.

In the following example, the layout has two columns, with the second one being split into four boxes over two rows.

<div class="container">

 

   <h1>Hello, world!</h1>

 

   <div class="row">

 

      <div class="col-md-3" style="background-color: #dedef8;box-shadow:

         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">

         <h4>First Column</h4>

         <p>Lorem ipsum dolor sitamet, consectetur adipisicing elit.</p>

      </div>

 

      <div class="col-md-9" style="background-color: #dedef8;box-shadow:

         inset 1px -1px 1px #444, inset -1px 1px 1px #444;">

         <h4>Second Column- Split into 4 boxes</h4>

         <div class="row">

            <div class="col-md-6" style="background-color: #B18904;

               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px#444;">

               <p>Consectetur art party Tonx culpa semiotics. Pinterest

                  assumenda minim organic quis.

               </p>

            </div>

            <div class="col-md-6" style="background-color: #B18904;

               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px#444;">

               <p> sed do eiusmodtempor incididunt ut labore et doloremagna

                  aliqua. Ut enim ad minim veniam, quis nostrudexercitation

                  ullamco laboris nisiut aliquip ex ea commodo consequat.

               </p>

            </div>

         </div>

 

         <div class="row">

            <div class="col-md-6" style="background-color: #B18904;

               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px#444;">

               <p>quis nostrudexercitation ullamco laboris nisi ut

                  aliquip ex eacommodo consequat.

               </p>

            </div>  

            <div class="col-md-6" style="background-color: #B18904;

               box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px#444;">

               <p>Lorem ipsum dolor sit amet, consectetur adipisicingelit,

                  sed do eiusmodtempor incididunt ut labore et doloremagna

                  aliqua. Ut enim ad minim.</p>

            </div>

         </div>

 

      </div>

 

   </div>

 

</div>

Column ordering

Another nice feature of Bootstrap grid system is that you can easily write the columns in an order, and show them in another one. You can easily change the order of built-in grid columns with .col-md-push-* and .col-md-pull-* modifier classes where * range from 1 to 11.

In the following example we have two-columnslayout with left column being the narrowest and acting as sidebar. We will swap the order of these columns using .col-md-push-* and .col-md-pull-* classes.

<div class="container">

 

   <h1>Hello, world!</h1>

 

   <div class="row">

      <p>Before Ordering</p>

      <div class="col-md-4" style="background-color: #dedef8;

         box-shadow: inset 1px -1px1px #444, inset -1px 1px 1px #444;">

         I am on left

      </div>

      <div class="col-md-8" style="background-color: #dedef8;

         box-shadow: inset 1px -1px1px #444, inset -1px 1px 1px #444;">

         I am on right

      </div>

   </div><br>

   <div class="row">

      <p>After Ordering</p>

      <div class="col-md-4 col-md-push-8"

         style="background-color: #dedef8;

         box-shadow: inset 1px -1px1px #444,

         inset -1px 1px 1px #444;">

         I was on left

      </div>

      <div class="col-md-8 col-md-pull-4"

         style="background-color: #dedef8;

         box-shadow: inset 1px -1px1px #444,

         inset -1px 1px 1px #444;">

         I was on right

      </div>

   </div>

 

</div>

 

ليست هناك تعليقات:

إرسال تعليق