bootstrap notes
bootstrap notes
Audience
This tutorial has been prepared for anyone who has a basic knowledge of
HTML and CSS and has an urge to develop websites. After completing this
tutorial you will find yourself at a moderate level of expertise in developing
web projects using Twitter Bootstrap.
i
Bootstrap
Table of Contents
About the Tutorial ····································································································································i
Audience···················································································································································i
Prerequisites·············································································································································i
Table of Contents····································································································································· ii
File structure············································································································································3
HTML5 doctype······································································································································ 19
Normalize ··············································································································································20
Containers ············································································································································· 20
Headings ················································································································································ 22
Emphasis ··············································································································································· 23
Abbreviations ········································································································································ 24
Addresses ·············································································································································· 24
Blockquotes ··········································································································································· 25
Lists ······················································································································································· 26
Form Layout··········································································································································· 39
Button Tags············································································································································ 57
Carets ···················································································································································· 59
Clearfix ··················································································································································60
Print Classes··········································································································································· 62
Usage····················································································································································· 64
Options ·················································································································································· 67
Nesting ·················································································································································· 72
Button Addons······································································································································· 83
Dropdowns ············································································································································ 91
Usage··················································································································································· 149
Usage··················································································································································· 157
Usage··················································································································································· 162
Usage··················································································································································· 172
Usage··················································································································································· 180
Usage··················································································································································· 187
Usage··················································································································································· 194
Usage··················································································································································· 200
Usage··················································································································································· 206
Usage··················································································································································· 215
Usage··················································································································································· 222
Easy to get started: With just the knowledge of HTML and CSS anyone can get
started with Bootstrap. Also the Bootstrap official site has a good documentation.
Provides a clean and uniform solution for building an interface for developers.
It contains beautiful and functional built-in components which are easy to
customize.
1
Bootstrap
2
2. Bootstrap ─ Environment Setup
It is very easy to setup and start using Bootstrap. This chapter will explain how to download
and setup Bootstrap. We will also discuss the Bootstrap file structure, and demonstrate its
usage with an example.
Download Bootstrap
You can download the latest version of Bootstrap from http://getbootstrap.com/. When
you click on this link, you will get to see a screen as below:
Download Source: Clicking this, you can get the latest Bootstrap LESS
and JavaScript source code directly from GitHub.
If you work with Bootstrap's uncompiled source code, you need to compile the LESS files
to produce usable CSS files. For compiling LESS files into CSS, Bootstrap officially supports
only Recess, which is Twitter's CSS hinter based on less.js.
For better understanding and ease of use, we shall use precompiled version of Bootstrap
throughout the tutorial. As the files are complied and minified, you don't have to bother
every time including separate files for individual functionality. At the time of writing this
tutorial the latest version (Bootstrap 3) was downloaded.
File structure
Precompiled Bootstrap
Once the compiled version Bootstrap is downloaded, extract the ZIP file, and you will see
the following file/directory structure:.
3
Bootstrap
As you can see, there are compiled CSS and JS (bootstrap.*), as well as compiled and
minified CSS and JS (bootstrap.min.*). Fonts from Glyphicons are included, as it is the
optional Bootstrap theme.
The files under less/, js/, and fonts/ are the source code for Bootstrap CSS, JS,
and icon fonts (respectively).
The dist/ folder includes everything listed in the precompiled download section
above.
docs-assets/, examples/, and all *.html files are Bootstrap documentation.
HTML Template
A basic HTML template using Bootstrap would look like this:
<!DOCTYPE html>
<html>
<head>
<title>Bootstrap 101 Template</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- Bootstrap -->
<link href="css/bootstrap.min.css" rel="stylesheet">
Bootstrap
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries
-->
<!-- WARNING: Respond.js doesn't work if you view the page
via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/
html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.3.0/
respond.min.js"></script>
<![endif]-->
</head>
<body>
<h1>Hello, world!</h1>
Here you can see the jquery.js, bootstrap.min.js and bootstrap.min.css files that are
included to make a normal HTM file to the Bootstrapped Template. Just make sure to
include jQuery library before you include Bootstrap library.
More details about each of the elements in this above piece of code will be discussed in
the chapter Bootstrap CSS Overview.
This template structure is already included as part of the Try it (online compiler) tool.
Hence in all the examples (in the following chapters) of this tutorial you will only see the
contents of the <body> element. Once you click on the Try it option available at the top
right corner of example, and you will see the entire code.
Example
Now let's try an example using the above template. Try the following example using Try
it option available at the top right corner of the below sample code box on our website:
<h1>Hello, world!</h1>
In all the subsequent chapters we have used dummy text from the site
http://www.lipsum.com/.
5
In this chapter, we shall discuss the Bootstrap Grid System.
What is a Grid?
As put by Wikipedia:
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 the 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 in simple words, grids in web design organize and structure content, makes the
websites easy to scan and reduces the cognitive load on users.
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.
Progressive Enhancement
Content should be placed within the columns, and only columns may be the
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 the 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 the
viewport size. Following media queries are used in LESS files to create the key breakpoints
in the Bootstrap grid system.
Occasionally these are expanded to include a max-width to limit CSS to a narrower set
of devices.
Media queries have two parts, a device specification and then a size rule. In the above
case, the following rule is set:
Bootstrap
For all devices no matter what kind with min-width: @screen-sm-min, if the width of the
screen gets smaller than @screen-sm-max, then do something.
Grid Options
The following table summarizes aspects of how Bootstrap grid system works across
multiple devices:
Max
container None (auto) 750px 970px 1170px
width
Class
.col-xs- .col-sm- .col-md- .col-lg-
prefix
# of
12 12 12 12
columns
Max
column Auto 60px 78px 95px
width
Column
Yes Yes Yes Yes
ordering
<div class="container">
<div class="row">
<div class="col-*-*"></div>
<div class="col-*-*"></div>
</div>
<div class="row">...</div>
</div>
<div class="container">....
Example: Stacked-to-horizontal
Let us see a simple grid example with simple layout: two columns, two paragraphs per
column. (Here styling for each column is used. You can avoid it.)
<div class="container">
<h1>Hello, world!</h1>
<div class="row">
</div>
<p> Neque porro quisquam est, qui dolorem ipsum quia dolor sit
amet, consectetur, adipisci velit, sed quia non numquam eius
modi tempora incidunt ut labore et dolore magnam aliquam quaerat
voluptatem.
</p>
</div>
</div>
Details
<div class="container">...</div> element is added to ensure proper centering
and maximum width for layout.
Once container is added, next you need to think in terms of rows. Add <div
class="row">...</div> and columns <div class="col-md-6"></div> inside
the rows.
Every row in the grid is made up of 12 units and you can define the desired size
of your columns using those units. In our example we have two columns each made
of 6 units wide i.e 6+6=12.
But at large, your design could really be better as a 33%/66%. So what we’re going to
do is, set it up to change the column widths at the breakpoint:
Now Bootstrap is going to say “at the medium size, I look at classes with md in them
and use those. At the large size, I look at classes with the word lg in them and use those.
In this case, our 2 divs will go from a 50%/50% split and then up to a 33%/66%. Check
it out in the following example. (Here styling for each column is used. You can avoid it.)
<div class="container">
<h1>Hello, world!</h1>
<div class="row">
<p> Neque porro quisquam est, qui dolorem ipsum quia dolor sit
amet, consectetur, adipisci velit, sed quia non numquam eius
modi tempora incidunt ut labore et dolore magnam aliquam quaerat
voluptatem.
</p>
</div>
</div>
Now this gives us 3 different column layouts at each point. On a phone, it will be 75% on
the left, and 25% on the right. On a tablet, it will be 50%/50% again, and on a large
viewport, it will be 33%/66%. Three different layouts for each of the three responsive
sizes. Check it out in the following example. (Here styling for each column is used. You
can avoid it.)
<div class="container">
<h1>Hello, world!</h1>
<div class="row">
<p> Neque porro quisquam est, qui dolorem ipsum quia dolor sit
amet, consectetur, adipisci velit, sed quia non numquam eius
modi tempora incidunt ut labore et dolore magnam aliquam quaerat
voluptatem.
</p>
</div>
</div>
13
Bootstrap
<div class="container">
<div class="row" >
<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 sit amet, 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 sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut
14
Bootstrap
inset 1px -1px 1px #444, inset -1px 1px 1px #444;">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut 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>
</div>
15
Bootstrap
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">
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
eiusmod tempor incididunt ut labore et dolore magna
aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
nisi ut aliquip ex ea commodo consequat.
</p> </div>
</div>
16
Bootstrap
<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 nostrud
exercitation ullamco laboris nisi ut
aliquip ex ea commodo 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 adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna 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 * rangefrom
1 to11.
In the following example we have two columns layout with left column being thenarrowest
and acting as a 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">
17
Bootstrap
<p>Before Ordering</p>
<div class="col-md-4" style="background-color: #dedef8;
box-shadow: inset 1px -1px 1px #444, inset -1px 1px 1px #444;"> I am on
left
</div>
<div class="col-md-8" style="background-color: #dedef8;
box-shadow: inset 1px -1px 1px #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 -1px 1px #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 -1px 1px #444, inset -1px 1px 1px
#444;">
I was on right </div>
</div>
</div>
18
4. Bootstrap ─ CSS Overview
HTML5 doctype
Bootstrap makes use of certain HTML elements and CSS properties that require the use
of the HTML5 doctype. Hence, include the below piece of code for HTML5 doctype at the
beginning of all your projects using Bootstrap.
<!DOCTYPE html>
<html>
....
</html>
Mobile First
Since Bootstrap 3 has been launched, Bootstrap has become ‘mobile first’. It means mobile
first styles can be found throughout the entire library instead of them in separate files. You
need to add the viewport meta tag to the <head> element, to ensure proper rendering
and touch zooming on mobile devices.
width property controls the width of the device. Setting it to device-width will make
sure that it is rendered across various devices (mobiles, desktops, tablets...) properly.
initial-scale=1.0 ensures that when loaded, your web page will be rendered at a
1:1 scale, and no zooming will be applied out of the box.
Add user-scalable=no to the content attribute, to disable zooming capabilities on mobile
devices as shown below. Users are only able to scroll and not zoom with this change, and
results in your site feeling a bit more like a native application.
Responsive Images
Bootstrap 3 allows you to make the images responsive by adding a class .img- responsive
to the <img> tag. This class applies max-width: 100%; and height: auto; to the image
so that it scales nicely to the parent element.
If you intend to use LESS code, you may find all these within scaffolding.less.
Normalize
Bootstrap uses Normalize to establish cross browser consistency.
Normalize.css is a modern, HTML5-ready alternative to CSS resets. It is a small CSS file
that provides better cross-browser consistency in the default styling of HTML elements.
Containers
Use class .container to wrap a page's content and easily center the content's as shown
below.
<div class="container">
...
</div>
.container {
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
Note that, due to padding and fixed widths, containers are not nestable by default.
Bootstrap
.container {
width: 750px;
}
}
Here you can see that CSS has media-queries for containers with width. This helps for
applying responsiveness and within those the container class is modified accordingly to
render the grid system properly.
21
5. Bootstrap ─ Typography
Bootstrap uses Helvetica Neue, Helvetica, Arial, and sans-serif in its default font stack.
Using typography feature of Bootstrap you can create headings, paragraphs, lists and other
inline elements. Let see learn each one of these in the following sections.
Headings
All HTML headings (h1 to h6) are styled in Bootstrap. An example is shown below:
The above code segment with Bootstrap will produce following result:
Inline Subheadings
To add an inline subheading to any of the headings, simply add <small> around any of
the elements or add .small class and you will get smaller text in a lighter color as shown
in the example below:
22
Bootstrap
The above code segment with Bootstrap will produce the following result:
<h2>Lead Example</h2>
<p class="lead">This is an example paragraph demonstrating the use of lead
body copy. This is an example paragraph demonstrating the use of lead body
copy.This is an example paragraph demonstrating the use of lead body copy.This
is an example paragraph demonstrating the use of lead body copy.This is an
example paragraph demonstrating the use of lead body copy.</p>
Emphasis
HTML's default emphasis tags such as <small>, sets text at 85% the size of the parent,
<strong> emphasizes a text with heavier font-weight, and <em> emphasizes a text
in italics.
Bootstrap offers a few classes that can be used to provide emphasis on texts as seen
in the following example:
Bootstrap