Commit b84bb4e2 authored by Thomas McDonald's avatar Thomas McDonald

Merge branch 'v4' into force-expanded

parents 0ef0825d 317c667d
...@@ -468,7 +468,8 @@ module.exports = function (grunt) { ...@@ -468,7 +468,8 @@ module.exports = function (grunt) {
(function (sassCompilerName) { (function (sassCompilerName) {
require('./grunt/bs-sass-compile/' + sassCompilerName + '.js')(grunt); require('./grunt/bs-sass-compile/' + sassCompilerName + '.js')(grunt);
})(process.env.TWBS_SASS || 'libsass'); })(process.env.TWBS_SASS || 'libsass');
grunt.registerTask('sass-compile', ['sass:core', 'sass:extras', 'sass:docs']); // grunt.registerTask('sass-compile', ['sass:core', 'sass:extras', 'sass:docs']);
grunt.registerTask('sass-compile', ['sass:core', 'sass:docs']);
grunt.registerTask('dist-css', ['sass-compile', 'postcss:core', 'autoprefixer:core', 'usebanner', 'csscomb:dist', 'cssmin:core', 'cssmin:docs']); grunt.registerTask('dist-css', ['sass-compile', 'postcss:core', 'autoprefixer:core', 'usebanner', 'csscomb:dist', 'cssmin:core', 'cssmin:docs']);
......
...@@ -22,6 +22,7 @@ exclude: [assets/less/] ...@@ -22,6 +22,7 @@ exclude: [assets/less/]
current_version: 4.0.0-alpha current_version: 4.0.0-alpha
repo: https://github.com/twbs/bootstrap repo: https://github.com/twbs/bootstrap
sass_repo: https://github.com/twbs/bootstrap-sass sass_repo: https://github.com/twbs/bootstrap-sass
slack: https://bootstrap-slack.herokuapp.com
download: download:
source: https://github.com/twbs/bootstrap/archive/v3.3.5.zip source: https://github.com/twbs/bootstrap/archive/v3.3.5.zip
......
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
/*!
* Bootstrap v4.0.0-alpha (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/.container,.container-fluid{margin-right:auto;margin-left:auto}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container-fluid:after,.container:after,.row:after{clear:both}.container,.container-fluid{padding-right:.75rem;padding-left:.75rem}.row{margin-right:-.75rem;margin-left:-.75rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.75rem;padding-left:.75rem}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:34em){.container{max-width:34rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:48em){.container{max-width:45rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:62em){.container{max-width:60rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:75em){.container{max-width:72.25rem}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}
/*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
/*!
* Bootstrap v4.0.0-alpha (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active {
outline: 0;
}
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"], input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-box-sizing: content-box;
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
padding: .35em .625em .75em;
margin: 0 2px;
border: 1px solid #c0c0c0;
}
legend {
padding: 0;
border: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
html {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
*,
*:before,
*:after {
-webkit-box-sizing: inherit;
box-sizing: inherit;
}
@-moz-viewport {
width: device-width;
}
@-ms-viewport {
width: device-width;
}
@-webkit-viewport {
width: device-width;
}
@viewport {
width: device-width;
}
html {
font-size: 16px;
-webkit-tap-highlight-color: transparent;
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 1rem;
line-height: 1.5;
color: #373a3c;
background-color: #fff;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: .5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #818a91;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: bold;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
a {
color: #0275d8;
text-decoration: none;
}
a:focus,
a:hover {
color: #014c8c;
text-decoration: underline;
}
a:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
}
[role="button"] {
cursor: pointer;
}
table {
background-color: transparent;
}
caption {
padding-top: .75rem;
padding-bottom: .75rem;
color: #818a91;
text-align: left;
caption-side: bottom;
}
th {
text-align: left;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
input,
button,
select,
textarea {
margin: 0;
line-height: inherit;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
}
input[type="search"] {
-webkit-appearance: none;
}
output {
display: inline-block;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
This diff was suppressed by a .gitattributes entry.
/*!
* Bootstrap v4.0.0-alpha (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */a,table{background-color:transparent}address,dl,ol,p,ul{margin-bottom:1rem}b,dt,optgroup,strong{font-weight:700}pre,textarea{overflow:auto}caption,th{text-align:left}fieldset,legend,td,th{padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,legend,main,menu,nav,section,summary{display:block}label,output{display:inline-block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{color:#0275d8;text-decoration:none}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}address,legend{line-height:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{resize:vertical}table{border-spacing:0;border-collapse:collapse}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}@viewport{width:device-width}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}dl,ol,p,ul{margin-top:0}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dd,label,legend{margin-bottom:.5rem}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}pre{margin-top:0;margin-bottom:1rem}[role=button]{cursor:pointer}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;caption-side:bottom}button,input,select,textarea{margin:0;line-height:inherit}fieldset{min-width:0;margin:0;border:0}legend{border:0;width:100%;font-size:1.5rem}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff was suppressed by a .gitattributes entry.
- title: Getting started - title: Getting started
pages: pages:
- title: Overview # - title: Overview
# - title: Download
# - title: Contents
# - title: JavaScript
# - title: Compiling
# - title: Customize
# - title: Flexbox
# - title: Support
# - title: Accessibility
- title: Introduction
- title: Download - title: Download
- title: Contents - title: Browsers & devices
- title: JavaScript - title: Options
- title: Compiling - title: Build tools
- title: Customize - title: Best practices
- title: Flexbox
- title: Support
- title: Accessibility
- title: Layout - title: Layout
pages: pages:
...@@ -19,13 +25,22 @@ ...@@ -19,13 +25,22 @@
- title: Media - title: Media
- title: Responsive utilities - title: Responsive utilities
- title: Components - title: Content
pages: pages:
- title: Reboot - title: Reboot
- title: Typography - title: Typography
- title: Images
- title: Code - title: Code
- title: Tables - title: Tables
- title: Images
- title: Figures
- title: Components
pages:
# - title: Reboot
# - title: Typography
# - title: Images
# - title: Code
# - title: Tables
- title: Buttons - title: Buttons
- title: Button group - title: Button group
- title: Button dropdown - title: Button dropdown
...@@ -77,6 +92,8 @@ ...@@ -77,6 +92,8 @@
- title: About - title: About
pages: pages:
# - title: JavaScript
# - title: Accessibility
- title: History - title: History
- title: Team - title: Team
- title: Brand - title: Brand
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
<ul class="nav bd-sidenav"> <ul class="nav bd-sidenav">
{% for doc in group.pages %} {% for doc in group.pages %}
{% assign slug = doc.title | downcase | replace: ' ', '-' %} {% assign slug = doc.title | downcase | replace: ' ', '-' | replace:'-&-','-' %}
{% assign active = nil %} {% assign active = nil %}
{% if page.url contains slug %} {% if page.url contains slug %}
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
{% endif %} {% endif %}
<li class="{{ active }}"> <li class="{{ active }}">
<a href="{{ site.baseurl }}/{{ group.title | downcase | replace: ' ', '-' }}/{{ doc.title | downcase | replace: ' ', '-' }}"> <a href="{{ site.baseurl }}/{{ group.title | downcase | replace: ' ', '-' }}/{{ doc.title | downcase | replace: ' ', '-' | replace:'-&-','-' }}">
{{ doc.title }} {{ doc.title }}
</a> </a>
......
<header class="navbar navbar-sm navbar-inverse navbar-fixed-top bd-navbar" role="banner"> <header class="navbar navbar-sm navbar-inverse navbar-static-top bd-navbar" role="banner">
<nav class="nav navbar-nav"> <nav class="nav navbar-nav">
<a class="nav-item nav-link" href="{{ site.baseurl }}/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Bootstrap');">Bootstrap</a> <a class="nav-item nav-link" href="{{ site.baseurl }}/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Bootstrap');">Bootstrap</a>
<a class="nav-item nav-link" href="{{ site.baseurl }}/getting-started/overview/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Docs');">Documentation</a> <a class="nav-item nav-link" href="{{ site.baseurl }}/getting-started/overview/" onclick="ga('send', 'event', 'Navbar', 'Community links', 'Docs');">Documentation</a>
......
{% if page.group == "getting-started" %} {% if page.group == "getting-started" %}
<h1>Getting started</h1> <h1>Getting started</h1>
<p class="lead"> <p class="lead">
An overview of Bootstrap, how to download and use, basic templates and examples, and more. An overview of Bootstrap, including how to download and use it, some basic templates and examples, and more.
</p> </p>
{% elsif page.group == "layout" %} {% elsif page.group == "layout" %}
<h1>Layout</h1> <h1>Layout</h1>
......
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
...@@ -10,12 +10,16 @@ ...@@ -10,12 +10,16 @@
overflow: hidden; // clearfix overflow: hidden; // clearfix
font-size: .8rem !important; font-size: .8rem !important;
line-height: 1rem !important; line-height: 1rem !important;
color: $gray !important; color: $bd-purple-light !important;
text-align: left; text-align: left;
background: #f5f5f5 !important; background: darken($bd-purple, 10%) !important;
border: 0 !important; border: 0 !important;
} }
.bd-masthead .carbonad {
background: $bd-graphite !important;
}
.carbonad-img { .carbonad-img {
margin: 0 !important; margin: 0 !important;
} }
...@@ -27,7 +31,7 @@ ...@@ -27,7 +31,7 @@
width: auto !important; width: auto !important;
height: auto !important; height: auto !important;
margin-left: 145px !important; margin-left: 145px !important;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif !important; font-family: inherit !important;
} }
.carbonad-text { .carbonad-text {
...@@ -41,10 +45,10 @@ ...@@ -41,10 +45,10 @@
.carbonad-text a, .carbonad-text a,
.carbonad-tag a { .carbonad-tag a {
color: $gray !important; color: #fff !important;
&:hover { &:hover {
color: $brand-primary !important; color: #fff !important;
} }
} }
......
...@@ -2,9 +2,8 @@ ...@@ -2,9 +2,8 @@
// //
// Custom buttons for the docs. // Custom buttons for the docs.
.btn-outline { .btn-bs {
color: $bd-purple; color: $bd-purple;
background-color: transparent;
border-color: $bd-purple; border-color: $bd-purple;
&:hover, &:hover,
...@@ -16,17 +15,31 @@ ...@@ -16,17 +15,31 @@
} }
} }
.btn-outline-inverse { // .btn-outline {
color: #fff; // color: $bd-purple;
background-color: transparent; // background-color: transparent;
border-color: $bd-purple-light; // border-color: $bd-purple;
//
&:hover, // &:hover,
&:focus, // &:focus,
&:active { // &:active {
color: $bd-purple; // color: #fff;
text-shadow: none; // background-color:$bd-purple;
background-color: #fff; // border-color: $bd-purple;
border-color: #fff; // }
} // }
} //
// .btn-outline-inverse {
// color: #fff;
// background-color: transparent;
// border-color: $bd-purple-light;
//
// &:hover,
// &:focus,
// &:active {
// color: $bd-purple;
// text-shadow: none;
// background-color: #fff;
// border-color: #fff;
// }
// }
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
.bd-navbar { .bd-navbar {
padding: .25rem; padding: .25rem;
margin-bottom: 0;
background-color: $bd-graphite; background-color: $bd-graphite;
.nav-link { .nav-link {
......
.bd-docs {
padding-top: 3.65rem;
}
// Custom container // Custom container
// //
// Doesn't use the default `.container` styles for easier modifications. // Doesn't use the default `.container` styles for easier modifications.
.bd-container { .bd-content {
position: relative; // position: relative;
max-width: 62rem; // max-width: 62rem;
padding: 0 1rem 1rem; // padding: 0 1rem 1rem;
margin-right: auto; // margin-right: auto;
margin-left: auto; // margin-left: auto;
@include media-breakpoint-up(md) { // @include media-breakpoint-up(md) {
padding: 2rem; // padding: 2rem;
} // }
//
@include media-breakpoint-up(lg) { // @include media-breakpoint-up(lg) {
padding: 4rem; // padding: 4rem;
//
.carbonad { // .carbonad {
float: right !important; // float: right !important;
margin: .5rem 0 1rem 2rem !important; // margin: .5rem 0 1rem 2rem !important;
} // }
} // }
> table { > table {
display: block; display: block;
...@@ -47,6 +42,10 @@ ...@@ -47,6 +42,10 @@
vertical-align: top; vertical-align: top;
// border-top: 1px solid $table-border-color; // border-top: 1px solid $table-border-color;
border: 1px solid $table-border-color; border: 1px solid $table-border-color;
> p:last-child {
margin-bottom: 0;
}
} }
} }
} }
......
...@@ -48,12 +48,25 @@ The `.btn` classes are designed to be used with the `<button>` element. However, ...@@ -48,12 +48,25 @@ The `.btn` classes are designed to be used with the `<button>` element. However,
When using button classes on `<a>` elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a `role="button"` to appropriately convey their purpose to assistive technologies such as screen readers. When using button classes on `<a>` elements that are used to trigger in-page functionality (like collapsing content), rather than linking to new pages or sections within the current page, these links should be given a `role="button"` to appropriately convey their purpose to assistive technologies such as screen readers.
{% example html %} {% example html %}
<a class="btn btn-secondary" href="#" role="button">Link</a> <a class="btn btn-primary" href="#" role="button">Link</a>
<button class="btn btn-secondary" type="submit">Button</button> <button class="btn btn-primary" type="submit">Button</button>
<input class="btn btn-secondary" type="button" value="Input"> <input class="btn btn-primary" type="button" value="Input">
<input class="btn btn-secondary" type="submit" value="Submit"> <input class="btn btn-primary" type="submit" value="Submit">
{% endexample %} {% endexample %}
## Outline buttons
In need of a button, but not the hefty background colors they bring? Add the `.btn-outline` modifier class to remove all background images and colors on any button.
{% example html %}
<button type="button" class="btn btn-primary btn-outline">Primary</button>
<button type="button" class="btn btn-secondary btn-outline">Secondary</button>
<button type="button" class="btn btn-success btn-outline">Success</button>
<button type="button" class="btn btn-warning btn-outline">Warning</button>
<button type="button" class="btn btn-danger btn-outline">Danger</button>
{% endexample %}
## Sizes ## Sizes
Fancy larger or smaller buttons? Add `.btn-lg`, `.btn-sm`, or `.btn-xs` for additional sizes. Fancy larger or smaller buttons? Add `.btn-lg`, `.btn-sm`, or `.btn-xs` for additional sizes.
......
...@@ -15,7 +15,7 @@ Bootstrap provides several form control styles, layout options, and custom compo ...@@ -15,7 +15,7 @@ Bootstrap provides several form control styles, layout options, and custom compo
Bootstrap's form controls expand on [our Rebooted form styles](/components/reboot/#forms) with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices. The example form below demonstrates common HTML form elements that receive updated styles from Bootstrap with additional classes. Bootstrap's form controls expand on [our Rebooted form styles](/components/reboot/#forms) with classes. Use these classes to opt into their customized displays for a more consistent rendering across browsers and devices. The example form below demonstrates common HTML form elements that receive updated styles from Bootstrap with additional classes.
Remember, since Bootstrap utilizies the HTML5 doctype, **all inputs must have a `type` attribute** for proper rendering. Remember, since Bootstrap utilizes the HTML5 doctype, **all inputs must have a `type` attribute**.
{% example html %} {% example html %}
<form> <form>
...@@ -79,7 +79,7 @@ Remember, since Bootstrap utilizies the HTML5 doctype, **all inputs must have a ...@@ -79,7 +79,7 @@ Remember, since Bootstrap utilizies the HTML5 doctype, **all inputs must have a
<input type="checkbox"> Check me out <input type="checkbox"> Check me out
</label> </label>
</div> </div>
<button type="submit" class="btn btn-secondary">Submit</button> <button type="submit" class="btn btn-primary">Submit</button>
</form> </form>
{% endexample %} {% endexample %}
...@@ -425,16 +425,6 @@ When you need to place plain text next to a form label within a form, use the `. ...@@ -425,16 +425,6 @@ When you need to place plain text next to a form label within a form, use the `.
</form> </form>
{% endexample %} {% endexample %}
## Focus state
We remove the default `outline` styles on some form controls and apply a `box-shadow` in its place for `:focus`. Shown below is a custom input that only **demonstrates** the `:focus` state on an `<input>` with `.form-control`.
<div class="bd-example">
<form>
<input class="form-control" id="focusedInput" type="text" value="Demonstrative focus state">
</form>
</div>
## Disabled states ## Disabled states
Add the `disabled` boolean attribute on an input to prevent user interactions. Disabled inputs appear lighter and add a `not-allowed` cursor. Add the `disabled` boolean attribute on an input to prevent user interactions. Disabled inputs appear lighter and add a `not-allowed` cursor.
...@@ -534,6 +524,7 @@ Block level help text for form controls. ...@@ -534,6 +524,7 @@ Block level help text for form controls.
Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add `.has-warning`, `.has-error`, or `.has-success` to the parent element. Any `.control-label`, `.form-control`, and `.help-block` within that element will receive the validation styles. Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add `.has-warning`, `.has-error`, or `.has-success` to the parent element. Any `.control-label`, `.form-control`, and `.help-block` within that element will receive the validation styles.
{% comment %}
{% callout warning %} {% callout warning %}
#### Conveying validation state to assistive technologies and colorblind users #### Conveying validation state to assistive technologies and colorblind users
...@@ -541,20 +532,22 @@ Using these validation styles to denote the state of a form control only provide ...@@ -541,20 +532,22 @@ Using these validation styles to denote the state of a form control only provide
Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's `<label>` text itself (as is the case in the following code example), include a [Glyphicon](../components/#glyphicons) (with appropriate alternative text using the `.sr-only` class - see the [Glyphicon examples](../components/#glyphicons-examples)), or by providing an additional [help text](#forms-help-text) block. Specifically for assistive technologies, invalid form controls can also be assigned an `aria-invalid="true"` attribute. Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's `<label>` text itself (as is the case in the following code example), include a [Glyphicon](../components/#glyphicons) (with appropriate alternative text using the `.sr-only` class - see the [Glyphicon examples](../components/#glyphicons-examples)), or by providing an additional [help text](#forms-help-text) block. Specifically for assistive technologies, invalid form controls can also be assigned an `aria-invalid="true"` attribute.
{% endcallout %} {% endcallout %}
{% endcomment %}
{% example html %} {% example html %}
<div class="form-group has-success"> <div class="form-group has-success">
<label class="control-label" for="inputSuccess1">Input with success</label> <label class="control-label" for="inputSuccess1">Input with success</label>
<input type="text" class="form-control" id="inputSuccess1"> <input type="text" class="form-control form-control-success" id="inputSuccess1">
</div> </div>
<div class="form-group has-warning"> <div class="form-group has-warning">
<label class="control-label" for="inputWarning1">Input with warning</label> <label class="control-label" for="inputWarning1">Input with warning</label>
<input type="text" class="form-control" id="inputWarning1"> <input type="text" class="form-control form-control-warning" id="inputWarning1">
</div> </div>
<div class="form-group has-error"> <div class="form-group has-error">
<label class="control-label" for="inputError1">Input with error</label> <label class="control-label" for="inputError1">Input with error</label>
<input type="text" class="form-control" id="inputError1"> <input type="text" class="form-control form-control-error" id="inputError1">
</div> </div>
<div class="has-success"> <div class="has-success">
<div class="checkbox"> <div class="checkbox">
<label> <label>
...@@ -581,100 +574,6 @@ Ensure that an alternative indication of state is also provided. For instance, y ...@@ -581,100 +574,6 @@ Ensure that an alternative indication of state is also provided. For instance, y
</div> </div>
{% endexample %} {% endexample %}
You can also add optional feedback icons with the addition of `.has-feedback` and the right icon.
{% callout warning %}
#### Icons, labels, and input groups
Manual positioning of feedback icons is required for inputs without a label and for [input groups](../components#input-groups) with an add-on on the right. You are strongly encouraged to provide labels for all inputs for accessibility reasons. If you wish to prevent labels from being displayed, hide them with the `sr-only` class. If you must do without labels, adjust the `top` value of the feedback icon. For input groups, adjust the `right` value to an appropriate pixel value depending on the width of your addon.
{% endcallout %}
{% example html %}
<div class="form-group has-success has-feedback">
<label class="control-label" for="inputSuccess2">Input with success</label>
<input type="text" class="form-control" id="inputSuccess2" aria-describedby="inputSuccess2Status">
<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
<span id="inputSuccess2Status" class="sr-only">(success)</span>
</div>
<div class="form-group has-warning has-feedback">
<label class="control-label" for="inputWarning2">Input with warning</label>
<input type="text" class="form-control" id="inputWarning2" aria-describedby="inputWarning2Status">
<span class="glyphicon glyphicon-warning-sign form-control-feedback" aria-hidden="true"></span>
<span id="inputWarning2Status" class="sr-only">(warning)</span>
</div>
<div class="form-group has-error has-feedback">
<label class="control-label" for="inputError2">Input with error</label>
<input type="text" class="form-control" id="inputError2" aria-describedby="inputError2Status">
<span class="glyphicon glyphicon-remove form-control-feedback" aria-hidden="true"></span>
<span id="inputError2Status" class="sr-only">(error)</span>
</div>
<div class="form-group has-success has-feedback">
<label class="control-label" for="inputGroupSuccess1">Input group with success</label>
<div class="input-group">
<span class="input-group-addon">@</span>
<input type="text" class="form-control" id="inputGroupSuccess1" aria-describedby="inputGroupSuccess1Status">
</div>
<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
<span id="inputGroupSuccess1Status" class="sr-only">(success)</span>
</div>
{% endexample %}
{% example html %}
<form class="form-horizontal">
<div class="form-group has-success has-feedback">
<label class="control-label col-sm-3" for="inputSuccess3">Input with success</label>
<div class="col-sm-9">
<input type="text" class="form-control" id="inputSuccess3">
<span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
</div>
<br>
<div class="form-group has-success has-feedback">
<label class="control-label col-sm-3" for="inputGroupSuccess2">Input group with success</label>
<div class="col-sm-9">
<div class="input-group">
<span class="input-group-addon">@</span>
<input type="text" class="form-control" id="inputGroupSuccess2" aria-describedby="inputGroupSuccess2Status">
</div>
<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
<span id="inputGroupSuccess2Status" class="sr-only">(success)</span>
</div>
</div>
</form>
{% endexample %}
{% example html %}
<form class="form-inline">
<div class="form-group has-success has-feedback">
<label class="control-label" for="inputSuccess4">Input with success</label>
<input type="text" class="form-control" id="inputSuccess4">
<span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
</form>
{% endexample %}
{% example html %}
<div class="form-group has-success has-feedback">
<label class="control-label sr-only" for="inputGroupSuccess4">Input group with success</label>
<div class="input-group">
<span class="input-group-addon">@</span>
<input type="text" class="form-control" id="inputGroupSuccess4" aria-describedby="inputGroupSuccess4Status">
</div>
<span class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true"></span>
<span id="inputGroupSuccess4Status" class="sr-only">(success)</span>
</div>
{% endexample %}
For form controls with no visible label, add the `.sr-only` class on the label. Bootstrap will automatically adjust the position of the icon once it's been added.
{% example html %}
<div class="form-group has-success has-feedback">
<label class="control-label sr-only" for="inputSuccess5">Hidden label</label>
<input type="text" class="form-control" id="inputSuccess5">
<span class="glyphicon glyphicon-ok form-control-feedback"></span>
</div>
{% endexample %}
## Custom forms ## Custom forms
For even more customization and cross browser consistency, use our completely custom form elements to replace the browser defaults. They're built on top of semantic and accessible markup, so they're solid replacements any default form control. For even more customization and cross browser consistency, use our completely custom form elements to replace the browser defaults. They're built on top of semantic and accessible markup, so they're solid replacements any default form control.
...@@ -703,7 +602,7 @@ In the checked states, we use **base64 embedded SVG icons** from [Open Iconic](h ...@@ -703,7 +602,7 @@ In the checked states, we use **base64 embedded SVG icons** from [Open Iconic](h
</label> </label>
{% endexample %} {% endexample %}
Custom checkboxes can also utilize the `:indeterminate` pseudo class. Custom checkboxes can also utilize the `:indeterminate` pseudo class when manually set via JavaScript (there is no available HTML attribute for specifying it).
<div class="bd-example bd-example-indeterminate"> <div class="bd-example bd-example-indeterminate">
<label class="c-input c-checkbox"> <label class="c-input c-checkbox">
...@@ -713,7 +612,7 @@ Custom checkboxes can also utilize the `:indeterminate` pseudo class. ...@@ -713,7 +612,7 @@ Custom checkboxes can also utilize the `:indeterminate` pseudo class.
</label> </label>
</div> </div>
**Heads up!** You'll need to set this state manually via JavaScript as there is no available HTML attribute for specifying it. If you're using jQuery, something like this should suffice: If you're using jQuery, something like this should suffice:
{% highlight js %} {% highlight js %}
$('.your-checkbox').prop('indeterminate', true) $('.your-checkbox').prop('indeterminate', true)
......
...@@ -78,3 +78,14 @@ Align images with the [helper float classes](/components/helpers) or [text align ...@@ -78,3 +78,14 @@ Align images with the [helper float classes](/components/helpers) or [text align
<img src="..." class="img-rounded" alt="..."> <img src="..." class="img-rounded" alt="...">
</div> </div>
{% endhighlight %} {% endhighlight %}
## Figures
Use the included `.figure` and `.figure-caption` classes to provide some baseline styles for the HTML5 `<figure>` and `<figcaption>` elements. As a bonus, immediate children images are automatically responsive.
{% example html %}
<figure class="figure">
<img data-src="holder.js/400x300" class="img-rounded" alt="A generic square placeholder image with rounded corners in a figure.">
<figcaption class="figure-caption">A caption for the above image.</figcaption>
</figure>
{% endexample %}
...@@ -129,5 +129,4 @@ Add nearly any HTML within, even for linked list groups like the one below. ...@@ -129,5 +129,4 @@ Add nearly any HTML within, even for linked list groups like the one below.
<p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p> <p class="list-group-item-text">Donec id elit non mi porta gravida at eget metus. Maecenas sed diam eget risus varius blandit.</p>
</a> </a>
</div> </div>
</div>
{% endexample %} {% endexample %}
...@@ -4,7 +4,7 @@ title: Popovers ...@@ -4,7 +4,7 @@ title: Popovers
group: components group: components
--- ---
Add small overlays of content, like those found in iOS, to any element for housing secondary information. Add small overlay content, like those found in iOS, to any element for housing secondary information.
## Contents ## Contents
...@@ -23,6 +23,8 @@ Things to know when using the popover plugin: ...@@ -23,6 +23,8 @@ Things to know when using the popover plugin:
- Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element. - Popovers for `.disabled` or `disabled` elements must be triggered on a wrapper element.
- When triggered from hyperlinks that span multiple lines, popovers will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior. - When triggered from hyperlinks that span multiple lines, popovers will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior.
Got all that? Great, let's see how they work with some examples.
## Example: Enable popovers everywhere ## Example: Enable popovers everywhere
One way to initialize all popovers on a page would be to select them by their `data-toggle` attribute: One way to initialize all popovers on a page would be to select them by their `data-toggle` attribute:
...@@ -35,6 +37,8 @@ $(function () { ...@@ -35,6 +37,8 @@ $(function () {
## Example: Using the `container` option ## Example: Using the `container` option
When you have some styles on a parent element that interfere with a popover, you'll want to specify a custom `container` so that the popover's HTML appears within that element instead.
{% highlight js %} {% highlight js %}
$(function () { $(function () {
$('.example-popover').popover( $('.example-popover').popover(
......
...@@ -4,7 +4,7 @@ title: Tooltips ...@@ -4,7 +4,7 @@ title: Tooltips
group: components group: components
--- ---
Inspired by the excellent jQuery.tipsy plugin written by Jason Frame; Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage. Inspired by the excellent Tipsy jQuery plugin written by Jason Frame. Tooltips are an updated version, which don't rely on images, use CSS3 for animations, and data-attributes for local title storage.
## Contents ## Contents
...@@ -22,6 +22,8 @@ Things to know when using the popover plugin: ...@@ -22,6 +22,8 @@ Things to know when using the popover plugin:
- Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element. - Tooltips for `.disabled` or `disabled` elements must be triggered on a wrapper element.
- When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior. - When triggered from hyperlinks that span multiple lines, tooltips will be centered. Use `white-space: nowrap;` on your `<a>`s to avoid this behavior.
Got all that? Great, let's see how they work with some examples.
## Example: Enable popovers everywhere ## Example: Enable popovers everywhere
One way to initialize all tooltips on a page would be to select them by their `data-toggle` attribute: One way to initialize all tooltips on a page would be to select them by their `data-toggle` attribute:
......
...@@ -102,6 +102,30 @@ Create lighter, secondary text in any heading with a generic `<small>` tag or th ...@@ -102,6 +102,30 @@ Create lighter, secondary text in any heading with a generic `<small>` tag or th
<h6>h6. Bootstrap heading <small>Secondary text</small></h6> <h6>h6. Bootstrap heading <small>Secondary text</small></h6>
{% endhighlight %} {% endhighlight %}
## Display headings
Traditional heading elements are designed to work best in the meat of your page content. When you need a heading to stand out, consider using a **display heading**—a larger, slightly more opinionated heading style.
<div class="bd-example bd-example-type">
<table class="table">
<tbody>
<tr>
<td><h1 class="display-4">Display 4</h1></td>
</tr>
<tr>
<td><h1 class="display-3">Display 3</h1></td>
</tr>
<tr>
<td><h1 class="display-2">Display 2</h1></td>
</tr>
<tr>
<td><h1 class="display-1">Display 1</h1></td>
</tr>
</tbody>
</table>
</div>
## Lead ## Lead
Make a paragraph stand out by adding `.lead`. Make a paragraph stand out by adding `.lead`.
......
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
/*!
* Bootstrap v4.0.0-alpha (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/.container,.container-fluid{margin-right:auto;margin-left:auto}.container-fluid:after,.container-fluid:before,.container:after,.container:before,.row:after,.row:before{display:table;content:" "}.container-fluid:after,.container:after,.row:after{clear:both}.container,.container-fluid{padding-right:.75rem;padding-left:.75rem}.row{margin-right:-.75rem;margin-left:-.75rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:.75rem;padding-left:.75rem}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-1{width:8.333333%}.col-xs-2{width:16.666667%}.col-xs-3{width:25%}.col-xs-4{width:33.333333%}.col-xs-5{width:41.666667%}.col-xs-6{width:50%}.col-xs-7{width:58.333333%}.col-xs-8{width:66.666667%}.col-xs-9{width:75%}.col-xs-10{width:83.333333%}.col-xs-11{width:91.666667%}.col-xs-12{width:100%}.col-xs-pull-0{right:auto}.col-xs-pull-1{right:8.333333%}.col-xs-pull-2{right:16.666667%}.col-xs-pull-3{right:25%}.col-xs-pull-4{right:33.333333%}.col-xs-pull-5{right:41.666667%}.col-xs-pull-6{right:50%}.col-xs-pull-7{right:58.333333%}.col-xs-pull-8{right:66.666667%}.col-xs-pull-9{right:75%}.col-xs-pull-10{right:83.333333%}.col-xs-pull-11{right:91.666667%}.col-xs-pull-12{right:100%}.col-xs-push-0{left:auto}.col-xs-push-1{left:8.333333%}.col-xs-push-2{left:16.666667%}.col-xs-push-3{left:25%}.col-xs-push-4{left:33.333333%}.col-xs-push-5{left:41.666667%}.col-xs-push-6{left:50%}.col-xs-push-7{left:58.333333%}.col-xs-push-8{left:66.666667%}.col-xs-push-9{left:75%}.col-xs-push-10{left:83.333333%}.col-xs-push-11{left:91.666667%}.col-xs-push-12{left:100%}.col-xs-offset-0{margin-left:0}.col-xs-offset-1{margin-left:8.333333%}.col-xs-offset-2{margin-left:16.666667%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-4{margin-left:33.333333%}.col-xs-offset-5{margin-left:41.666667%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-7{margin-left:58.333333%}.col-xs-offset-8{margin-left:66.666667%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-10{margin-left:83.333333%}.col-xs-offset-11{margin-left:91.666667%}.col-xs-offset-12{margin-left:100%}@media (min-width:34em){.container{max-width:34rem}.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-1{width:8.333333%}.col-sm-2{width:16.666667%}.col-sm-3{width:25%}.col-sm-4{width:33.333333%}.col-sm-5{width:41.666667%}.col-sm-6{width:50%}.col-sm-7{width:58.333333%}.col-sm-8{width:66.666667%}.col-sm-9{width:75%}.col-sm-10{width:83.333333%}.col-sm-11{width:91.666667%}.col-sm-12{width:100%}.col-sm-pull-0{right:auto}.col-sm-pull-1{right:8.333333%}.col-sm-pull-2{right:16.666667%}.col-sm-pull-3{right:25%}.col-sm-pull-4{right:33.333333%}.col-sm-pull-5{right:41.666667%}.col-sm-pull-6{right:50%}.col-sm-pull-7{right:58.333333%}.col-sm-pull-8{right:66.666667%}.col-sm-pull-9{right:75%}.col-sm-pull-10{right:83.333333%}.col-sm-pull-11{right:91.666667%}.col-sm-pull-12{right:100%}.col-sm-push-0{left:auto}.col-sm-push-1{left:8.333333%}.col-sm-push-2{left:16.666667%}.col-sm-push-3{left:25%}.col-sm-push-4{left:33.333333%}.col-sm-push-5{left:41.666667%}.col-sm-push-6{left:50%}.col-sm-push-7{left:58.333333%}.col-sm-push-8{left:66.666667%}.col-sm-push-9{left:75%}.col-sm-push-10{left:83.333333%}.col-sm-push-11{left:91.666667%}.col-sm-push-12{left:100%}.col-sm-offset-0{margin-left:0}.col-sm-offset-1{margin-left:8.333333%}.col-sm-offset-2{margin-left:16.666667%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-4{margin-left:33.333333%}.col-sm-offset-5{margin-left:41.666667%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-7{margin-left:58.333333%}.col-sm-offset-8{margin-left:66.666667%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-10{margin-left:83.333333%}.col-sm-offset-11{margin-left:91.666667%}.col-sm-offset-12{margin-left:100%}}@media (min-width:48em){.container{max-width:45rem}.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-1{width:8.333333%}.col-md-2{width:16.666667%}.col-md-3{width:25%}.col-md-4{width:33.333333%}.col-md-5{width:41.666667%}.col-md-6{width:50%}.col-md-7{width:58.333333%}.col-md-8{width:66.666667%}.col-md-9{width:75%}.col-md-10{width:83.333333%}.col-md-11{width:91.666667%}.col-md-12{width:100%}.col-md-pull-0{right:auto}.col-md-pull-1{right:8.333333%}.col-md-pull-2{right:16.666667%}.col-md-pull-3{right:25%}.col-md-pull-4{right:33.333333%}.col-md-pull-5{right:41.666667%}.col-md-pull-6{right:50%}.col-md-pull-7{right:58.333333%}.col-md-pull-8{right:66.666667%}.col-md-pull-9{right:75%}.col-md-pull-10{right:83.333333%}.col-md-pull-11{right:91.666667%}.col-md-pull-12{right:100%}.col-md-push-0{left:auto}.col-md-push-1{left:8.333333%}.col-md-push-2{left:16.666667%}.col-md-push-3{left:25%}.col-md-push-4{left:33.333333%}.col-md-push-5{left:41.666667%}.col-md-push-6{left:50%}.col-md-push-7{left:58.333333%}.col-md-push-8{left:66.666667%}.col-md-push-9{left:75%}.col-md-push-10{left:83.333333%}.col-md-push-11{left:91.666667%}.col-md-push-12{left:100%}.col-md-offset-0{margin-left:0}.col-md-offset-1{margin-left:8.333333%}.col-md-offset-2{margin-left:16.666667%}.col-md-offset-3{margin-left:25%}.col-md-offset-4{margin-left:33.333333%}.col-md-offset-5{margin-left:41.666667%}.col-md-offset-6{margin-left:50%}.col-md-offset-7{margin-left:58.333333%}.col-md-offset-8{margin-left:66.666667%}.col-md-offset-9{margin-left:75%}.col-md-offset-10{margin-left:83.333333%}.col-md-offset-11{margin-left:91.666667%}.col-md-offset-12{margin-left:100%}}@media (min-width:62em){.container{max-width:60rem}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-1{width:8.333333%}.col-lg-2{width:16.666667%}.col-lg-3{width:25%}.col-lg-4{width:33.333333%}.col-lg-5{width:41.666667%}.col-lg-6{width:50%}.col-lg-7{width:58.333333%}.col-lg-8{width:66.666667%}.col-lg-9{width:75%}.col-lg-10{width:83.333333%}.col-lg-11{width:91.666667%}.col-lg-12{width:100%}.col-lg-pull-0{right:auto}.col-lg-pull-1{right:8.333333%}.col-lg-pull-2{right:16.666667%}.col-lg-pull-3{right:25%}.col-lg-pull-4{right:33.333333%}.col-lg-pull-5{right:41.666667%}.col-lg-pull-6{right:50%}.col-lg-pull-7{right:58.333333%}.col-lg-pull-8{right:66.666667%}.col-lg-pull-9{right:75%}.col-lg-pull-10{right:83.333333%}.col-lg-pull-11{right:91.666667%}.col-lg-pull-12{right:100%}.col-lg-push-0{left:auto}.col-lg-push-1{left:8.333333%}.col-lg-push-2{left:16.666667%}.col-lg-push-3{left:25%}.col-lg-push-4{left:33.333333%}.col-lg-push-5{left:41.666667%}.col-lg-push-6{left:50%}.col-lg-push-7{left:58.333333%}.col-lg-push-8{left:66.666667%}.col-lg-push-9{left:75%}.col-lg-push-10{left:83.333333%}.col-lg-push-11{left:91.666667%}.col-lg-push-12{left:100%}.col-lg-offset-0{margin-left:0}.col-lg-offset-1{margin-left:8.333333%}.col-lg-offset-2{margin-left:16.666667%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-4{margin-left:33.333333%}.col-lg-offset-5{margin-left:41.666667%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-7{margin-left:58.333333%}.col-lg-offset-8{margin-left:66.666667%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-10{margin-left:83.333333%}.col-lg-offset-11{margin-left:91.666667%}.col-lg-offset-12{margin-left:100%}}@media (min-width:75em){.container{max-width:72.25rem}.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9{float:left}.col-xl-1{width:8.333333%}.col-xl-2{width:16.666667%}.col-xl-3{width:25%}.col-xl-4{width:33.333333%}.col-xl-5{width:41.666667%}.col-xl-6{width:50%}.col-xl-7{width:58.333333%}.col-xl-8{width:66.666667%}.col-xl-9{width:75%}.col-xl-10{width:83.333333%}.col-xl-11{width:91.666667%}.col-xl-12{width:100%}.col-xl-pull-0{right:auto}.col-xl-pull-1{right:8.333333%}.col-xl-pull-2{right:16.666667%}.col-xl-pull-3{right:25%}.col-xl-pull-4{right:33.333333%}.col-xl-pull-5{right:41.666667%}.col-xl-pull-6{right:50%}.col-xl-pull-7{right:58.333333%}.col-xl-pull-8{right:66.666667%}.col-xl-pull-9{right:75%}.col-xl-pull-10{right:83.333333%}.col-xl-pull-11{right:91.666667%}.col-xl-pull-12{right:100%}.col-xl-push-0{left:auto}.col-xl-push-1{left:8.333333%}.col-xl-push-2{left:16.666667%}.col-xl-push-3{left:25%}.col-xl-push-4{left:33.333333%}.col-xl-push-5{left:41.666667%}.col-xl-push-6{left:50%}.col-xl-push-7{left:58.333333%}.col-xl-push-8{left:66.666667%}.col-xl-push-9{left:75%}.col-xl-push-10{left:83.333333%}.col-xl-push-11{left:91.666667%}.col-xl-push-12{left:100%}.col-xl-offset-0{margin-left:0}.col-xl-offset-1{margin-left:8.333333%}.col-xl-offset-2{margin-left:16.666667%}.col-xl-offset-3{margin-left:25%}.col-xl-offset-4{margin-left:33.333333%}.col-xl-offset-5{margin-left:41.666667%}.col-xl-offset-6{margin-left:50%}.col-xl-offset-7{margin-left:58.333333%}.col-xl-offset-8{margin-left:66.666667%}.col-xl-offset-9{margin-left:75%}.col-xl-offset-10{margin-left:83.333333%}.col-xl-offset-11{margin-left:91.666667%}.col-xl-offset-12{margin-left:100%}}
/*# sourceMappingURL=bootstrap-grid.min.css.map */
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
/*!
* Bootstrap v4.0.0-alpha (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
body {
margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
audio,
canvas,
progress,
video {
display: inline-block;
vertical-align: baseline;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden],
template {
display: none;
}
a {
background-color: transparent;
}
a:active {
outline: 0;
}
a:hover {
outline: 0;
}
abbr[title] {
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
}
dfn {
font-style: italic;
}
h1 {
margin: .67em 0;
font-size: 2em;
}
mark {
color: #000;
background: #ff0;
}
small {
font-size: 80%;
}
sub,
sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
sup {
top: -.5em;
}
sub {
bottom: -.25em;
}
img {
border: 0;
}
svg:not(:root) {
overflow: hidden;
}
figure {
margin: 1em 40px;
}
hr {
height: 0;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
pre {
overflow: auto;
}
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
margin: 0;
font: inherit;
color: inherit;
}
button {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
html input[type="button"], input[type="reset"],
input[type="submit"] {
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
html input[disabled] {
cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
padding: 0;
border: 0;
}
input {
line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
-webkit-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
input[type="search"] {
-webkit-box-sizing: content-box;
box-sizing: content-box;
-webkit-appearance: textfield;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
fieldset {
padding: .35em .625em .75em;
margin: 0 2px;
border: 1px solid #c0c0c0;
}
legend {
padding: 0;
border: 0;
}
textarea {
overflow: auto;
}
optgroup {
font-weight: bold;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td,
th {
padding: 0;
}
html {
-webkit-box-sizing: border-box;
box-sizing: border-box;
}
*,
*:before,
*:after {
-webkit-box-sizing: inherit;
box-sizing: inherit;
}
@-moz-viewport {
width: device-width;
}
@-ms-viewport {
width: device-width;
}
@-webkit-viewport {
width: device-width;
}
@viewport {
width: device-width;
}
html {
font-size: 16px;
-webkit-tap-highlight-color: transparent;
}
body {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 1rem;
line-height: 1.5;
color: #373a3c;
background-color: #fff;
}
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: .5rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title],
abbr[data-original-title] {
cursor: help;
border-bottom: 1px dotted #818a91;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: bold;
}
dd {
margin-bottom: .5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
a {
color: #0275d8;
text-decoration: none;
}
a:focus,
a:hover {
color: #014c8c;
text-decoration: underline;
}
a:focus {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
pre {
margin-top: 0;
margin-bottom: 1rem;
}
figure {
margin: 0 0 1rem;
}
img {
vertical-align: middle;
}
[role="button"] {
cursor: pointer;
}
table {
background-color: transparent;
}
caption {
padding-top: .75rem;
padding-bottom: .75rem;
color: #818a91;
text-align: left;
caption-side: bottom;
}
th {
text-align: left;
}
label {
display: inline-block;
margin-bottom: .5rem;
}
input,
button,
select,
textarea {
margin: 0;
line-height: inherit;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
display: block;
width: 100%;
padding: 0;
margin-bottom: .5rem;
font-size: 1.5rem;
line-height: inherit;
}
input[type="search"] {
-webkit-appearance: none;
}
output {
display: inline-block;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
This diff was suppressed by a .gitattributes entry.
/*!
* Bootstrap v4.0.0-alpha (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */a,table{background-color:transparent}address,dl,ol,p,ul{margin-bottom:1rem}b,dt,optgroup,strong{font-weight:700}pre,textarea{overflow:auto}caption,th{text-align:left}fieldset,legend,td,th{padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,legend,main,menu,nav,section,summary{display:block}label,output{display:inline-block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{color:#0275d8;text-decoration:none}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0;vertical-align:middle}svg:not(:root){overflow:hidden}hr{height:0;-webkit-box-sizing:content-box;box-sizing:content-box}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}address,legend{line-height:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}textarea{resize:vertical}table{border-spacing:0;border-collapse:collapse}html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-box-sizing:border-box;box-sizing:border-box;font-size:16px;-webkit-tap-highlight-color:transparent}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}@-ms-viewport{width:device-width}@viewport{width:device-width}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1rem;line-height:1.5;color:#373a3c;background-color:#fff}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}dl,ol,p,ul{margin-top:0}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #818a91}address{font-style:normal}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dd,label,legend{margin-bottom:.5rem}dd{margin-left:0}blockquote,figure{margin:0 0 1rem}a:focus,a:hover{color:#014c8c;text-decoration:underline}a:focus{outline:dotted thin;outline:-webkit-focus-ring-color auto 5px;outline-offset:-2px}pre{margin-top:0;margin-bottom:1rem}[role=button]{cursor:pointer}caption{padding-top:.75rem;padding-bottom:.75rem;color:#818a91;caption-side:bottom}button,input,select,textarea{margin:0;line-height:inherit}fieldset{min-width:0;margin:0;border:0}legend{border:0;width:100%;font-size:1.5rem}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
\ No newline at end of file
This diff was suppressed by a .gitattributes entry.
This diff is collapsed.
This diff was suppressed by a .gitattributes entry.
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff was suppressed by a .gitattributes entry.
--- ---
layout: page layout: page
title: Supported platforms title: Browsers and devices
group: getting-started group: getting-started
--- ---
Bootstrap is built to work best with the latest techniques. As such, older desktop and mobile browsers may display differently, but should remain fully functional. Bootstrap supports a wide variety of modern browsers and devices, and some older ones. See which exact ones below, as well as detailed information on known quirks and bugs.
## Contents ## Contents
...@@ -15,6 +15,10 @@ Bootstrap is built to work best with the latest techniques. As such, older deskt ...@@ -15,6 +15,10 @@ Bootstrap is built to work best with the latest techniques. As such, older deskt
Bootstrap supports the **latest, stable releases** of all major browsers and platforms. On Windows, **we support Internet Explorer 9-11**. More specific support information is provided below. Bootstrap supports the **latest, stable releases** of all major browsers and platforms. On Windows, **we support Internet Explorer 9-11**. More specific support information is provided below.
### Mobile devices
Generally speaking, Bootstrap supports the latest versions of each major platform's default browsers.
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-bordered table-striped"> <table class="table table-bordered table-striped">
<thead> <thead>
...@@ -22,7 +26,6 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla ...@@ -22,7 +26,6 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla
<td></td> <td></td>
<th>Chrome</th> <th>Chrome</th>
<th>Firefox</th> <th>Firefox</th>
<th>Internet Explorer</th>
<th>Opera</th> <th>Opera</th>
<th>Safari</th> <th>Safari</th>
<th>Android Browser &amp; WebView</th> <th>Android Browser &amp; WebView</th>
...@@ -33,10 +36,9 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla ...@@ -33,10 +36,9 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla
<th scope="row">Android</th> <th scope="row">Android</th>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-muted" rowspan="3" style="vertical-align: middle;">N/A</td>
<td class="text-danger">Not supported</td> <td class="text-danger">Not supported</td>
<td class="text-muted">N/A</td> <td class="text-muted">N/A</td>
<td class="text-success">Android v5.0+<br>supported</td> <td class="text-success">Android v5.0+ supported</td>
</tr> </tr>
<tr> <tr>
<th scope="row">iOS</th> <th scope="row">iOS</th>
...@@ -46,13 +48,34 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla ...@@ -46,13 +48,34 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-muted">N/A</td> <td class="text-muted">N/A</td>
</tr> </tr>
</tbody>
</table>
</div>
### Desktop browsers
Similarly, the latest versions of most desktop browsers are supported.
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<td></td>
<th>Chrome</th>
<th>Firefox</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari</th>
</tr>
</thead>
<tbody>
<tr> <tr>
<th scope="row">Mac OS X</th> <th scope="row">Mac</th>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-muted">N/A</td>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-muted">N/A</td>
</tr> </tr>
<tr> <tr>
<th scope="row">Windows</th> <th scope="row">Windows</th>
...@@ -61,7 +84,6 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla ...@@ -61,7 +84,6 @@ Bootstrap supports the **latest, stable releases** of all major browsers and pla
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-success">Supported</td> <td class="text-success">Supported</td>
<td class="text-danger">Not supported</td> <td class="text-danger">Not supported</td>
<td class="text-muted">N/A</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
...@@ -114,12 +136,14 @@ Visit [Can I use...](http://caniuse.com/) for details on browser support of CSS3 ...@@ -114,12 +136,14 @@ Visit [Can I use...](http://caniuse.com/) for details on browser support of CSS3
As of v4, Bootstrap no longer supports IE8. **If you require IE8 support, we recommend you use Bootstrap 3.** It's still supported by our team for bugfixes and documentation changes, but no new features will be added to it. As of v4, Bootstrap no longer supports IE8. **If you require IE8 support, we recommend you use Bootstrap 3.** It's still supported by our team for bugfixes and documentation changes, but no new features will be added to it.
Alternatively, you can add the some third party JavaScript to backfill support for the browser. You'll need the following: Alternatively, you may add some third party JavaScript to backfill support for IE8 to Bootstrap 4. You'll need the following:
* [The HTML5 shiv](http://en.wikipedia.org/wiki/HTML5_Shiv) * [The HTML5 shiv](http://en.wikipedia.org/wiki/HTML5_Shiv)
* [Respond.js](https://github.com/scottjehl/Respond) * [Respond.js](https://github.com/scottjehl/Respond)
* [Rem unit polyfill](https://github.com/chuckcarpenter/REM-unit-polyfill) * [Rem unit polyfill](https://github.com/chuckcarpenter/REM-unit-polyfill)
No support will be provided for this, though you may find some help from the community in [our Slack channel]({{ site.slack }}).
## IE Compatibility modes ## IE Compatibility modes
Bootstrap is not supported in the old Internet Explorer compatibility modes. To be sure you're using the latest rendering mode for IE, consider including the appropriate `<meta>` tag in your pages: Bootstrap is not supported in the old Internet Explorer compatibility modes. To be sure you're using the latest rendering mode for IE, consider including the appropriate `<meta>` tag in your pages:
......
...@@ -4,22 +4,11 @@ title: Contents ...@@ -4,22 +4,11 @@ title: Contents
group: getting-started group: getting-started
--- ---
Bootstrap can come in one of two forms, as precompiled or source code. Learn more about each form's contents and structure below. Bootstrap can come in one of two forms, as precompiled or source code. Learn more about each flavor's contents and structure below. Remember, no matter the implementation flavor, **Bootstrap's JavaScript plugins require jQuery**.
{% callout warning %}
#### jQuery required
Please note that **all JavaScript plugins require jQuery** to be included, as shown in the [starter template](../quick-start). [Consult our `bower.json`]({{ site.repo }}/blob/v{{ site.current_version }}/bower.json) to see which versions of jQuery are supported.
{% endcallout %}
## Contents
* Will be replaced with the ToC, excluding the "Contents" header
{:toc}
## Precompiled Bootstrap ## Precompiled Bootstrap
Once downloaded, unzip the compressed folder to see the structure of (the compiled) Bootstrap. You'll see something like this: Once downloaded, unzip the compressed folder and you'll see something like this:
<!-- NOTE: This info is intentionally duplicated in the README. Copy any changes made here over to the README too. --> <!-- NOTE: This info is intentionally duplicated in the README. Copy any changes made here over to the README too. -->
......
...@@ -4,58 +4,40 @@ title: Download ...@@ -4,58 +4,40 @@ title: Download
group: getting-started group: getting-started
--- ---
Bootstrap is available for download via ZIP file in two flavors: precompiled CSS and Javascript, and the complete source code with documentation. **Bootstrap v{{ site.current_version}}** is available for download in several ways, including some of your favorite package managers. Choose from the options below to snag just what you need.
## Contents <div class="row m-t-md">
<div class="col-sm-6">
{% markdown %}
### Compiled
Download just the compiled and minified CSS and JavaScript. Doesn't include any documentation or original source files.
* Will be replaced with the ToC, excluding the "Contents" header <a href="{{ site.download.dist }}" class="btn btn-bs btn-outline" onclick="ga('send', 'event', 'Getting started', 'Download', 'Download compiled');">Download Bootstrap</a>
{:toc} {% endmarkdown %}
## Custom builds
Need only a part of Bootstrap's CSS or JS? Use one of the custom builds to snag just what you need.
<div class="row">
<div class="col-sm-4">
<h3>Reboot</h3>
<p>Includes variables/mixins, Normalize, and Reboot. No JavaScript.</p>
<a class="btn btn-primary" href="#">Download</a>
</div>
<div class="col-sm-4">
<h3>Grid only</h3>
<p>Includes variables/mixins and our grid system. No JavaScript.</p>
<a class="btn btn-primary" href="#">Download</a>
</div> </div>
<div class="col-sm-4"> <div class="col-sm-6">
<h3>Flexbox</h3> {% markdown %}
<p>All of Bootstrap, with flexbox support enabled and <strong>lower browser support</strong>.</p> ### Source files
<a class="btn btn-primary" href="#">Download</a> Download everything: source Sass, JavaScript, and documentation files. **Requires a Sass compiler, [Autoprefixer](https://github.com/postcss/autoprefixer), and [some setup](../compiling).**
<a href="{{ site.download.source }}" class="btn btn-bs btn-outline" onclick="ga('send', 'event', 'Getting started', 'Download', 'Download source');">Download source</a>
{% endmarkdown %}
</div> </div>
</div> </div>
## Precompiled
Compiled and minified CSS and JavaScript. No docs or original source files are included.
<a href="{{ site.download.dist }}" class="btn btn-lg btn-outline" onclick="ga('send', 'event', 'Getting started', 'Download', 'Download compiled');">Download Bootstrap</a>
## Download source and docs
Source Sass, JavaScript, and documentation. **Requires a Sass compiler and [some setup](../compiling).**
<a href="{{ site.download.source }}" class="btn btn-lg btn-outline" onclick="ga('send', 'event', 'Getting started', 'Download', 'Download source');">Download source</a>
## Package managers ## Package managers
Pull in Bootstrap's **source files** into nearly any project with some of the most popular package managers. No matter the package manager, Bootstrap will **require a Sass compiler and [Autoprefixer](https://github.com/postcss/autoprefixer)** for a setup that matches our official compiled versions.
### Bower ### Bower
You can also install and manage Bootstrap's Sass, CSS, and JavaScript using [Bower](http://bower.io). Install and manage Bootstrap's Sass and JavaScript using [Bower](http://bower.io).
{% highlight bash %}$ bower install bootstrap{% endhighlight %} {% highlight bash %}$ bower install bootstrap{% endhighlight %}
### npm ### npm
Bootstrap is available as [an npm package](https://www.npmjs.org/package/bootstrap). Install it into your Node powered apps with: Install Bootstrap in your Node powered apps with [the npm package](https://www.npmjs.org/package/bootstrap):
{% highlight bash %}$ npm install bootstrap{% endhighlight %} {% highlight bash %}$ npm install bootstrap{% endhighlight %}
...@@ -74,12 +56,31 @@ $ meteor add twbs:bootstrap ...@@ -74,12 +56,31 @@ $ meteor add twbs:bootstrap
### Composer ### Composer
You can also install and manage Bootstrap's Less, CSS, JavaScript, and fonts using [Composer](https://getcomposer.org): You can also install and manage Bootstrap's Sass and JavaScript using [Composer](https://getcomposer.org):
{% highlight bash %} {% highlight bash %}
$ composer require twbs/bootstrap $ composer require twbs/bootstrap
{% endhighlight %} {% endhighlight %}
## Autoprefixer required
Bootstrap uses [Autoprefixer](https://github.com/postcss/autoprefixer) to deal with [CSS vendor prefixes](http://webdesign.about.com/od/css/a/css-vendor-prefixes.htm). If you're compiling Bootstrap from its source Sass and not using our Gruntfile, you'll need to integrate Autoprefixer into your build process yourself. If you're using precompiled Bootstrap or using our Gruntfile, you don't need to worry about this as Autoprefixer is already integrated into our Gruntfile. ## Custom builds
Need only a part of Bootstrap's CSS or JS? Use one of the custom builds to snag just what you need.
<div class="row">
<div class="col-sm-4">
<h3>Reboot</h3>
<p>Includes variables/mixins, Normalize, and Reboot. No JavaScript.</p>
<a class="btn btn-bs btn-outline" href="#">Download</a>
</div>
<div class="col-sm-4">
<h3>Grid only</h3>
<p>Includes variables/mixins and our grid system. No JavaScript.</p>
<a class="btn btn-bs btn-outline" href="#">Download</a>
</div>
<div class="col-sm-4">
<h3>Flexbox</h3>
<p>All of Bootstrap with flexbox enabled and <strong>lower browser support</strong>.</p>
<a class="btn btn-bs btn-outline" href="#">Download</a>
</div>
</div>
---
layout: page
title: Introduction
group: getting-started
---
Bootstrap is the world's most popular framework for building responsive, mobile-first sites and applications. Inside you'll find high quality HTML, CSS, and JavaScript to make starting any project easier than ever.
Here's how to quickly get started with the Bootstrap CDN and a template starter page.
## Quick start
Looking to quickly add Bootstrap to your project? Use the Bootstrap CDN, provided for free by the folks at MaxCDN. Using a package manager or need to download the source files? [Head to the downloads page.]({{ site.baseurl }}/getting-started/download)
Copy-paste the stylesheet `<link>` into your `<head>` before all other stylesheets to load our CSS.
{% highlight html %}
<link rel="stylesheet" href="{{ site.cdn.css }}">
{% endhighlight %}
Add our JavaScript plugins and jQuery near the end of your pages, right before the closing `</body>` tag. Be sure to place jQuery first as our code depends on it.
{% highlight html %}
<script src="{{ site.cdn.jquery }}"></script>
<script src="{{ site.cdn.js }}"></script>
{% endhighlight %}
And that's it—you're your way to a fully Bootstrapped site. If you're at all unsure about the general page structure, keep reading for an example page template.
## Starter template
Be sure to have your pages set up with the latest design and development standards. That means:
* Using an HTML5 doctype
* Forcing Internet Explorer to use its latest rendering mode ([read more]())
* And, utilizing the viewport meta tag.
Put it all together and your pages should look like this:
{% highlight html %}
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required meta tags always come first -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="{{ site.cdn.css }}">
</head>
<body>
<h1>Hello, world!</h1>
<!-- jQuery first, then Bootstrap JS. -->
<script src="{{ site.cdn.jquery }}"></script>
<script src="{{ site.cdn.js }}"></script>
</body>
</html>
{% endhighlight %}
That's all you need for overall page requirements. Visit the [Layout docs]({{ site.baseurl }}/layout/scaffolding) or [our official examples](../examples/) to start laying out your site's content and components.
--- ---
layout: page layout: page
title: Start using Bootstrap title: Quick start
group: getting-started group: getting-started
--- ---
Quickly add Bootstrap to your project via the Bootstrap CDN, graciously provided by the MaxCDN folks. Looking to quickly add Bootstrap to your project? Use the Bootstrap CDN, provided for free by the folks at MaxCDN. Using a package manager or need to download the source files? [Head to the downloads page.]({{ site.baseurl }}/getting-started/download)
## Include CSS and JS Copy-paste the stylesheet `<link>` into your `<head>` before all other stylesheets to load our CSS.
Copy-paste the stylesheet `<link>` into your `<head>` before all other stylesheets.
<div class="alert alert-warning">
<strong>Heads up!</strong> Much of this page will be inaccurate during the v4 alpha releases.
</div>
{% highlight html %} {% highlight html %}
<link rel="stylesheet" href="{{ site.cdn.css }}"> <link rel="stylesheet" href="{{ site.cdn.css }}">
{% endhighlight %} {% endhighlight %}
Then, add the Bootstrap JavaScript—and jQuery—near the end of your pages. It's best placed right before the closing `</body>` tag. Be sure to place jQuery first as our code depends on it. Add our JavaScript plugins and jQuery near the end of your pages, right before the closing `</body>` tag. Be sure to place jQuery first as our code depends on it.
{% highlight html %} {% highlight html %}
<script src="{{ site.cdn.jquery }}"></script> <script src="{{ site.cdn.jquery }}"></script>
<script src="{{ site.cdn.js }}"></script> <script src="{{ site.cdn.js }}"></script>
{% endhighlight %} {% endhighlight %}
And that's it—you're your way to a fully Bootstrapped site. If you're at all unsure about the general page structure, keep reading for an example page template.
## Page template ## Page template
Be sure to have your pages set up with the latest design and development standards. That means: Be sure to have your pages set up with the latest design and development standards. That means:
...@@ -40,16 +36,18 @@ Put it all together and your pages should look like this: ...@@ -40,16 +36,18 @@ Put it all together and your pages should look like this:
<html lang="en"> <html lang="en">
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="x-ua-compatible" content="ie=edge">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="{{ site.cdn.css }}"> <link rel="stylesheet" href="{{ site.cdn.css }}">
</head> </head>
<body> <body>
<h1>Hello, world!</h1> <h1>Hello, world!</h1>
<!-- jQuery first, then Bootstrap JS. -->
<script src="{{ site.cdn.jquery }}"></script> <script src="{{ site.cdn.jquery }}"></script>
<script src="{{ site.cdn.js }}"></script> <script src="{{ site.cdn.js }}"></script>
</body> </body>
</html> </html>
{% endhighlight %} {% endhighlight %}
And that's it. Happy Bootstrapping! That's all you need for overall page requirements. Visit the [Layout docs]({{ site.baseurl }}/layout/scaffolding) to start laying out your site's content before adding components.
...@@ -9,7 +9,7 @@ title: Bootstrap &middot; The world's most popular mobile-first and responsive f ...@@ -9,7 +9,7 @@ title: Bootstrap &middot; The world's most popular mobile-first and responsive f
<span class="bd-booticon outline">B</span> <span class="bd-booticon outline">B</span>
<p class="lead">Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web.</p> <p class="lead">Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web.</p>
<p class="lead"> <p class="lead">
<a href="getting-started#download" class="btn btn-outline-inverse btn-lg" onclick="ga('send', 'event', 'Jumbotron actions', 'Download', 'Download {{ site.current_version }}');">Download Bootstrap</a> <a href="{{ site.baseurl }}/getting-started/download" class="btn btn-outline-inverse btn-lg" onclick="ga('send', 'event', 'Jumbotron actions', 'Download', 'Download {{ site.current_version }}');">Download Bootstrap</a>
</p> </p>
<p class="version">Currently v{{ site.current_version }}</p> <p class="version">Currently v{{ site.current_version }}</p>
{% include ads.html %} {% include ads.html %}
......
...@@ -4,21 +4,27 @@ title: Grid system ...@@ -4,21 +4,27 @@ title: Grid system
group: layout group: layout
--- ---
Bootstrap includes a powerful mobile-first grid system for building layouts of all shapes and sizes based on a 12 column layout. Bootstrap includes a powerful mobile-first grid system for building layouts of all shapes and sizes based on a 12 column layout. There are multiple tiers, one for each [media query range]({{ site.baseurl }}/layout/media-queries/), made available via our predefined classes or semantic mixins.
There are multiple tiers for different device sizes, available via our predefined classes or semantic mixins. Here's how the grid system works:
- There are three major components—containers, rows, and columns.
- Containers—`.container` for fixed width or `.container-fluid` for full width—center your site's contents.
- Rows are horizontal groups of columns that clear floats (when not in [flexbox mode]({{ site.baseurl }}/getting-started/flexbox/)).
- Content should be placed within columns, and only columns may be immediate children of rows.
- You can use predefined grid classes or Sass mixins for more semantic markup.
## Contents ## Contents
* Will be replaced with the ToC, excluding the "Contents" header * Will be replaced with the ToC, excluding the "Contents" header
{:toc} {:toc}
### Quick start ## Quick start
- Example grid class - Example grid class
- Example mixins - Example mixins
### Introduction ## Introduction
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: 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:
...@@ -34,7 +40,7 @@ Grid systems are used for creating page layouts through a series of rows and col ...@@ -34,7 +40,7 @@ Grid systems are used for creating page layouts through a series of rows and col
Look to the examples for applying these principles to your code. Look to the examples for applying these principles to your code.
### Grid options ## Grid options
See how aspects of the Bootstrap grid system work across multiple devices with a handy table. See how aspects of the Bootstrap grid system work across multiple devices with a handy table.
...@@ -111,20 +117,33 @@ See how aspects of the Bootstrap grid system work across multiple devices with a ...@@ -111,20 +117,33 @@ See how aspects of the Bootstrap grid system work across multiple devices with a
</table> </table>
</div> </div>
### Semantic mixins ## Sass mixins
In addition to [prebuilt grid classes](#grid-example-basic) for fast layouts, Bootstrap includes Sass variables and mixins for quickly generating your own simple, semantic layouts. When using Bootstrap's source Sass files, you have the option of using Sass variables and mixins to create custom, semantic, and responsive page layouts. Our [prebuilt grid classes](#grid-example-basic) use these same variables and mixins to provide a whole suite of ready-to-use classes for fast responsive layouts.
#### Variables ### Variables
Variables determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below. Variables determine the number of columns, the gutter width, and the media query point at which to begin floating columns. We use these to generate the predefined grid classes documented above, as well as for the custom mixins listed below.
{% highlight scss %} {% highlight scss %}
$grid-breakpoints: (
// Extra small screen / phone
xs: 0,
// Small screen / phone
sm: 34em,
// Medium screen / tablet
md: 48em,
// Large screen / desktop
lg: 62em,
// Extra large screen / wide desktop
xl: 75em
) !default;
$grid-columns: 12; $grid-columns: 12;
$grid-gutter-width: 1.5rem; $grid-gutter-width: 1.5rem;
{% endhighlight %} {% endhighlight %}
#### Mixins ### Mixins
Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns. Mixins are used in conjunction with the grid variables to generate semantic CSS for individual grid columns.
...@@ -162,7 +181,7 @@ Mixins are used in conjunction with the grid variables to generate semantic CSS ...@@ -162,7 +181,7 @@ Mixins are used in conjunction with the grid variables to generate semantic CSS
} }
{% endhighlight %} {% endhighlight %}
#### Example usage ### Example usage
You can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between. You can modify the variables to your own custom values, or just use the mixins with their default values. Here's an example of using the default settings to create a two-column layout with a gap between.
......
...@@ -4,9 +4,9 @@ title: Media queries ...@@ -4,9 +4,9 @@ title: Media queries
group: layout group: layout
--- ---
Since Bootstrap is designed to be mobile-first, we employ media queries in our CSS to create responsive pages and components. Since Bootstrap is responsive and designed to be mobile-first, we employ media queries in our CSS to create responsive pages and components that scale to particular viewports and devices.
Media queries allow you to group rulesets by a handful of parameters, most notably viewport dimensions, to gracefully scale content across devices. Bootstrap mainly uses the following media query ranges in our source Sass files for key breakpoints in our layout, grid system, and components. Media queries allow you to group rulesets by a handful of parameters, most notably viewport dimensions, to gracefully scale content across devices. Bootstrap primarily uses the following media query ranges—we call them breakpoints—in our source Sass files for our layout, grid system, and components.
{% highlight scss %} {% highlight scss %}
/* Extra small devices (portrait phones, less than ???px) */ /* Extra small devices (portrait phones, less than ???px) */
...@@ -25,7 +25,8 @@ Media queries allow you to group rulesets by a handful of parameters, most notab ...@@ -25,7 +25,8 @@ Media queries allow you to group rulesets by a handful of parameters, most notab
@media (min-width: 75em) { ... } @media (min-width: 75em) { ... }
{% endhighlight %} {% endhighlight %}
These media queries are available via Sass mixins: Since we write our source CSS in Sass, all our media queries are available via Sass mixins:
{% highlight scss %} {% highlight scss %}
@include media-breakpoint-up(xs) { ... } @include media-breakpoint-up(xs) { ... }
@include media-breakpoint-up(sm) { ... } @include media-breakpoint-up(sm) { ... }
...@@ -42,6 +43,7 @@ These media queries are available via Sass mixins: ...@@ -42,6 +43,7 @@ These media queries are available via Sass mixins:
{% endhighlight %} {% endhighlight %}
We occasionally use media queries that go in the other direction (the given screen size *or smaller*): We occasionally use media queries that go in the other direction (the given screen size *or smaller*):
{% highlight scss %} {% highlight scss %}
/* Extra small devices (portrait phones, less than 34em) */ /* Extra small devices (portrait phones, less than 34em) */
@media (max-width: 33.9em) { ... } @media (max-width: 33.9em) { ... }
...@@ -59,7 +61,8 @@ We occasionally use media queries that go in the other direction (the given scre ...@@ -59,7 +61,8 @@ We occasionally use media queries that go in the other direction (the given scre
/* No media query since the extra-large breakpoint has no upper bound on its width */ /* No media query since the extra-large breakpoint has no upper bound on its width */
{% endhighlight %} {% endhighlight %}
These media queries are available via Sass mixins: Once again, these media queries are also available via Sass mixins:
{% highlight scss %} {% highlight scss %}
@include media-breakpoint-down(xs) { ... } @include media-breakpoint-down(xs) { ... }
@include media-breakpoint-down(sm) { ... } @include media-breakpoint-down(sm) { ... }
......
...@@ -4,7 +4,7 @@ title: Media ...@@ -4,7 +4,7 @@ title: Media
group: layout group: layout
--- ---
Abstract object styles for building custom components (like blog comments, Tweets, etc) that feature a left- or right-aligned image alongside textual content. Abstract object styles for building custom components (like blog comments, Tweets, etc) that feature a left- or right-aligned piece of content alongside textual content.
## Contents ## Contents
...@@ -155,15 +155,15 @@ With a bit of extra markup, you can use media inside list (useful for comment th ...@@ -155,15 +155,15 @@ With a bit of extra markup, you can use media inside list (useful for comment th
</div> </div>
</li> </li>
<li class="media"> <li class="media">
<div class="media-body">
<h4 class="media-heading">Media heading</h4>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
</div>
<div class="media-right"> <div class="media-right">
<a href="#"> <a href="#">
<img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image"> <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
</a> </a>
</div> </div>
<div class="media-body">
<h4 class="media-heading">Media heading</h4>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis.
</div>
</li> </li>
</ul> </ul>
{% endexample %} {% endexample %}
...@@ -82,6 +82,12 @@ fieldset[disabled] a.btn { ...@@ -82,6 +82,12 @@ fieldset[disabled] a.btn {
@include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border); @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
} }
// Remove all backgrounds
.btn-outline {
background-color: $body-bg;
background-image: transparent;
}
// //
// Link buttons // Link buttons
......
...@@ -267,64 +267,122 @@ input[type="checkbox"] { ...@@ -267,64 +267,122 @@ input[type="checkbox"] {
// //
// Apply contextual and semantic states to individual form controls. // Apply contextual and semantic states to individual form controls.
.has-feedback { $form-icon-success: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNoZWNrIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiM1Q0I4NUMiIGQ9Ik0yMzMuOCw2MTAuMWMtMTMuMywwLTI1LjktNi4yLTM0LTE2LjlMOTAuNSw0NDguOEM3Ni4zLDQzMCw4MCw0MDMuMyw5OC44LDM4OS4xYzE4LjgtMTQuMyw0NS41LTEwLjUsNTkuOCw4LjNsNzEuOSw5NWwyMjAuOS0yNTAuNWMxMi41LTIwLDM4LjgtMjYuMSw1OC44LTEzLjZjMjAsMTIuNCwyNi4xLDM4LjcsMTMuNiw1OC44TDI3MCw1OTBjLTcuNCwxMi0yMC4yLDE5LjQtMzQuMywyMC4xQzIzNS4xLDYxMC4xLDIzNC41LDYxMC4xLDIzMy44LDYxMC4xeiIvPjwvc3ZnPg==";
// Enable absolute positioning $form-icon-warning: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9Ildhcm5pbmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgNjEyIDc5MiIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgNjEyIDc5MiIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PHBhdGggZmlsbD0iI0YwQUQ0RSIgZD0iTTYwMyw2NDAuMmwtMjc4LjUtNTA5Yy0zLjgtNi42LTEwLjgtMTAuNi0xOC41LTEwLjZzLTE0LjcsNC4xLTE4LjUsMTAuNkw5LDY0MC4yYy0zLjcsNi41LTMuNiwxNC40LDAuMiwyMC44YzMuOCw2LjUsMTAuOCwxMC40LDE4LjMsMTAuNGg1NTcuMWM3LjUsMCwxNC41LTMuOSwxOC4zLTEwLjRDNjA2LjYsNjU0LjYsNjA2LjcsNjQ2LjYsNjAzLDY0MC4yeiBNMzM2LjYsNjEwLjJoLTYxLjJWNTQ5aDYxLjJWNjEwLjJ6IE0zMzYuNiw1MDMuMWgtNjEuMlYzMDQuMmg2MS4yVjUwMy4xeiIvPjwvc3ZnPg==";
position: relative; $form-icon-error: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkNyb3NzIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDYxMiA3OTIiIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDYxMiA3OTIiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxwYXRoIGZpbGw9IiNEOTUzNEYiIGQ9Ik00NDcsNTQ0LjRjLTE0LjQsMTQuNC0zNy42LDE0LjQtNTEuOSwwTDMwNiw0NTEuN2wtODkuMSw5Mi43Yy0xNC40LDE0LjQtMzcuNiwxNC40LTUxLjksMGMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlsOTIuNC05Ni40TDE2NSwyOTkuNmMtMTQuNC0xNC40LTE0LjQtMzcuNiwwLTUxLjlzMzcuNi0xNC40LDUxLjksMGw4OS4yLDkyLjdsODkuMS05Mi43YzE0LjQtMTQuNCwzNy42LTE0LjQsNTEuOSwwYzE0LjQsMTQuNCwxNC40LDM3LjYsMCw1MS45TDM1NC43LDM5Nmw5Mi40LDk2LjRDNDYxLjQsNTA2LjgsNDYxLjQsNTMwLDQ0Nyw1NDQuNHoiLz48L3N2Zz4=";
// Ensure icons don't overlap text
.form-control { .form-control-success,
padding-right: ($input-height * 1.25); .form-control-warning,
} .form-control-error {
} padding-right: ($padding-x * 3);
// Feedback icon background-position: center right ($input-height * .25);
.form-control-feedback { background-size: ($input-height * .65) ($input-height * .65);
position: absolute; background-repeat: no-repeat;
top: 0;
right: 0;
z-index: 2; // Ensure icon is above input groups
display: block;
width: $input-height;
height: $input-height;
line-height: $input-height;
text-align: center;
pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback {
width: $input-height-lg;
height: $input-height-lg;
line-height: $input-height-lg;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback {
width: $input-height-sm;
height: $input-height-sm;
line-height: $input-height-sm;
} }
// Form validation states // Form validation states
.has-success { .has-success {
@include form-control-validation($state-success-text, $state-success-text, $state-success-bg); @include form-control-validation(success, $brand-success);
.form-control-success {
background-image: url($form-icon-success);
}
} }
.has-warning { .has-warning {
@include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg); @include form-control-validation(warning, $brand-warning);
.form-control-warning {
background-image: url($form-icon-warning);
}
} }
.has-error { .has-error {
@include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg); @include form-control-validation(error, $brand-danger);
.form-control-error {
background-image: url($form-icon-error);
}
} }
// Reposition feedback icon if input has visible label above
.has-feedback label {
~ .form-control-feedback {
// TODO: redo this since we nuked the `$line-height-computed`
top: 0; // Height of the `label` and its margin
}
&.sr-only ~ .form-control-feedback {
top: 0; // .form-control-success {
} // background-image: url("#{$form-icon-success}");
} // border-color: $brand-success;
// }
//
// .form-control-warning {
// background-image: url("#{$form-icon-warning}");
// border-color: $brand-warning;
// }
//
// .form-control-error {
// background-image: url("#{$form-icon-danger}");
// border-color: $brand-danger;
// }
// .has-feedback {
// // Enable absolute positioning
// position: relative;
//
// // Ensure icons don't overlap text
// .form-control {
// padding-right: ($input-height * 1.25);
// }
// }
// // Feedback icon
// .form-control-feedback {
// position: absolute;
// top: 0;
// right: 0;
// z-index: 2; // Ensure icon is above input groups
// display: block;
// width: $input-height;
// height: $input-height;
// line-height: $input-height;
// text-align: center;
// pointer-events: none;
// }
// .input-lg + .form-control-feedback,
// .input-group-lg + .form-control-feedback {
// width: $input-height-lg;
// height: $input-height-lg;
// line-height: $input-height-lg;
// }
// .input-sm + .form-control-feedback,
// .input-group-sm + .form-control-feedback {
// width: $input-height-sm;
// height: $input-height-sm;
// line-height: $input-height-sm;
// }
//
// // Form validation states
// .has-success {
// @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
// }
// .has-warning {
// @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
// }
// .has-error {
// @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
// }
//
// // Reposition feedback icon if input has visible label above
// .has-feedback label {
//
// ~ .form-control-feedback {
// // TODO: redo this since we nuked the `$line-height-computed`
// top: 0; // Height of the `label` and its margin
// }
//
// &.sr-only ~ .form-control-feedback {
// top: 0;
// }
// }
// Help text // Help text
......
...@@ -52,6 +52,8 @@ ...@@ -52,6 +52,8 @@
a.list-group-item, a.list-group-item,
button.list-group-item { button.list-group-item {
width: 100%;
text-align: inherit;
color: $list-group-link-color; color: $list-group-link-color;
.list-group-item-heading { .list-group-item-heading {
......
...@@ -55,6 +55,24 @@ h6, .h6 { font-size: $font-size-h6; } ...@@ -55,6 +55,24 @@ h6, .h6 { font-size: $font-size-h6; }
font-weight: 300; font-weight: 300;
} }
// Type display classes
.display-1 {
font-size: $display1-size;
font-weight: $display1-weight;
}
.display-2 {
font-size: $display2-size;
font-weight: $display2-weight;
}
.display-3 {
font-size: $display3-size;
font-weight: $display3-weight;
}
.display-4 {
font-size: $display4-size;
font-weight: $display4-weight;
}
// //
// Horizontal rules // Horizontal rules
...@@ -169,3 +187,20 @@ mark, ...@@ -169,3 +187,20 @@ mark,
} }
} }
} }
//
// Figures
//
.figure {
> img {
@extend .img-responsive;
line-height: 1;
margin-bottom: ($spacer-y / 2);
}
}
.figure-caption {
font-size: 90%;
color: $gray-light;
}
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment