aboutsummaryrefslogtreecommitdiff
path: root/less
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2013-08-17 22:39:07 -0700
committerMark Otto <[email protected]>2013-08-17 22:39:07 -0700
commit18766db63423e9151d1be4de061016b7a53ff8a1 (patch)
tree07c1170429e6e22caba90d72948460f379d989e3 /less
parent5e31478a91e62fc022ba0141acf27937c9dd7719 (diff)
parent04a73ebe42b8beb9567220fe31cc11057badf40f (diff)
downloadbootstrap-18766db63423e9151d1be4de061016b7a53ff8a1.tar.xz
bootstrap-18766db63423e9151d1be4de061016b7a53ff8a1.zip
Merge branch '3.0.0-wip' into bs3_homepage
Conflicts: dist/css/bootstrap.min.css
Diffstat (limited to 'less')
-rw-r--r--less/bootstrap.less37
-rw-r--r--less/grid.less4
-rw-r--r--less/jumbotron.less15
-rw-r--r--less/mixins.less24
-rw-r--r--less/navbar.less39
-rw-r--r--less/navs.less2
-rw-r--r--less/panels.less1
-rw-r--r--less/responsive-utilities.less48
-rw-r--r--less/theme.less232
-rw-r--r--less/variables.less29
10 files changed, 342 insertions, 89 deletions
diff --git a/less/bootstrap.less b/less/bootstrap.less
index accfb92e4..635e0256c 100644
--- a/less/bootstrap.less
+++ b/less/bootstrap.less
@@ -21,43 +21,38 @@
@import "type.less";
@import "code.less";
@import "grid.less";
-
@import "tables.less";
@import "forms.less";
@import "buttons.less";
-// Components: common
+// Components
@import "component-animations.less";
-@import "input-groups.less";
@import "dropdowns.less";
-@import "list-group.less";
-@import "panels.less";
-@import "wells.less";
-@import "close.less";
-
-// Components: Nav
+@import "button-groups.less";
+@import "input-groups.less";
@import "navs.less";
@import "navbar.less";
-@import "button-groups.less";
@import "breadcrumbs.less";
@import "pagination.less";
@import "pager.less";
+@import "labels.less";
+@import "badges.less";
+@import "jumbotron.less";
+@import "thumbnails.less";
+@import "alerts.less";
+@import "progress-bars.less";
+@import "media.less";
+@import "list-group.less";
+@import "panels.less";
+@import "wells.less";
+@import "close.less";
-// Components: Popovers
+// Components w/ JavaScript
@import "modals.less";
@import "tooltip.less";
@import "popovers.less";
-
-// Components: Misc
-@import "alerts.less";
-@import "thumbnails.less";
-@import "media.less";
-@import "labels.less";
-@import "badges.less";
-@import "progress-bars.less";
@import "carousel.less";
-@import "jumbotron.less";
// Utility classes
-@import "utilities.less"; // Has to be last to override when necessary
+@import "utilities.less";
@import "responsive-utilities.less";
diff --git a/less/grid.less b/less/grid.less
index e3684e5ae..c77f455f3 100644
--- a/less/grid.less
+++ b/less/grid.less
@@ -272,9 +272,9 @@
// Note that `.col-lg-12` doesn't get floated on purpose—there's no need since
// it's full-width.
-@media (min-width: @screen-large-desktop) {
+@media (min-width: @screen-lg-desktop) {
.container {
- max-width: @container-large-desktop;
+ max-width: @container-lg-desktop;
}
.col-lg-1,
diff --git a/less/jumbotron.less b/less/jumbotron.less
index ca51b481a..bb5a71fb5 100644
--- a/less/jumbotron.less
+++ b/less/jumbotron.less
@@ -11,6 +11,7 @@
line-height: (@line-height-base * 1.5);
color: @jumbotron-lead-color;
background-color: @jumbotron-bg;
+
h1 {
line-height: 1;
color: @jumbotron-heading-color;
@@ -19,9 +20,19 @@
line-height: 1.4;
}
+ .container & {
+ border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
+ }
+
@media screen and (min-width: @screen-tablet) {
- padding: 50px 60px;
- border-radius: @border-radius-large; // Only round corners at higher resolutions
+ padding-top: 50px;
+ padding-bottom: 50px;
+
+ .container & {
+ padding-left: 60px;
+ padding-right: 60px;
+ }
+
h1 {
font-size: (@font-size-base * 4.5);
}
diff --git a/less/mixins.less b/less/mixins.less
index de21668b7..c4d1de5ff 100644
--- a/less/mixins.less
+++ b/less/mixins.less
@@ -558,7 +558,7 @@
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
- @media (min-width: @screen-small) {
+ @media (min-width: @screen-sm) {
float: left;
width: percentage((@columns / @grid-columns));
}
@@ -566,17 +566,17 @@
// Generate the small column offsets
.make-sm-column-offset(@columns) {
- @media (min-width: @screen-small) {
+ @media (min-width: @screen-sm) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-sm-column-push(@columns) {
- @media (min-width: @screen-small) {
+ @media (min-width: @screen-sm) {
left: percentage((@columns / @grid-columns));
}
}
.make-sm-column-pull(@columns) {
- @media (min-width: @screen-small) {
+ @media (min-width: @screen-sm) {
right: percentage((@columns / @grid-columns));
}
}
@@ -591,7 +591,7 @@
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
- @media (min-width: @screen-medium) {
+ @media (min-width: @screen-md) {
float: left;
width: percentage((@columns / @grid-columns));
}
@@ -599,17 +599,17 @@
// Generate the large column offsets
.make-md-column-offset(@columns) {
- @media (min-width: @screen-medium) {
+ @media (min-width: @screen-md) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-md-column-push(@columns) {
- @media (min-width: @screen-medium) {
+ @media (min-width: @screen-md) {
left: percentage((@columns / @grid-columns));
}
}
.make-md-column-pull(@columns) {
- @media (min-width: @screen-medium) {
+ @media (min-width: @screen-md) {
right: percentage((@columns / @grid-columns));
}
}
@@ -624,7 +624,7 @@
padding-right: (@gutter / 2);
// Calculate width based on number of columns available
- @media (min-width: @screen-large) {
+ @media (min-width: @screen-lg) {
float: left;
width: percentage((@columns / @grid-columns));
}
@@ -632,17 +632,17 @@
// Generate the large column offsets
.make-lg-column-offset(@columns) {
- @media (min-width: @screen-large) {
+ @media (min-width: @screen-lg) {
margin-left: percentage((@columns / @grid-columns));
}
}
.make-lg-column-push(@columns) {
- @media (min-width: @screen-large) {
+ @media (min-width: @screen-lg) {
left: percentage((@columns / @grid-columns));
}
}
.make-lg-column-pull(@columns) {
- @media (min-width: @screen-large) {
+ @media (min-width: @screen-lg) {
right: percentage((@columns / @grid-columns));
}
}
diff --git a/less/navbar.less b/less/navbar.less
index 2141c5255..44def9f11 100644
--- a/less/navbar.less
+++ b/less/navbar.less
@@ -30,8 +30,6 @@
// styling of responsive aspects.
.navbar-header {
- padding-left: @navbar-padding-horizontal;
- padding-right: @navbar-padding-horizontal;
.clearfix();
@media (min-width: @grid-float-breakpoint) {
@@ -66,8 +64,6 @@
@media (min-width: @grid-float-breakpoint) {
width: auto;
- padding-right: 0;
- padding-left: 0;
border-top: 0;
box-shadow: none;
@@ -85,6 +81,22 @@
}
+// Both navbar header and collapse
+//
+// When a container is present, change the behavior of the header and collapse.
+
+.container > .navbar-header,
+.container > .navbar-collapse {
+ margin-right: -@navbar-padding-horizontal;
+ margin-left: -@navbar-padding-horizontal;
+
+ @media (min-width: @grid-float-breakpoint) {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+
+
//
// Navbar alignment options
//
@@ -130,8 +142,7 @@
.navbar-brand {
float: left;
- padding-top: @navbar-padding-vertical;
- padding-bottom: @navbar-padding-vertical;
+ padding: @navbar-padding-vertical @navbar-padding-horizontal;
font-size: @font-size-large;
line-height: @line-height-computed;
color: @navbar-brand-color;
@@ -141,6 +152,12 @@
text-decoration: none;
background-color: @navbar-brand-hover-bg;
}
+
+ @media (min-width: @grid-float-breakpoint) {
+ .navbar > .container & {
+ margin-left: -@navbar-padding-horizontal;
+ }
+ }
}
@@ -152,6 +169,7 @@
.navbar-toggle {
position: relative;
float: right;
+ margin-right: @navbar-padding-horizontal;
padding: 9px 10px;
.navbar-vertical-align(34px);
background-color: transparent;
@@ -176,9 +194,6 @@
}
@media (min-width: @grid-float-breakpoint) {
- position: relative;
- top: auto;
- left: auto;
display: none;
}
}
@@ -220,7 +235,7 @@
}
}
- @media (max-width: @screen-phone-max) {
+ @media (max-width: @screen-xs-max) {
// Dropdowns get custom display when collapsed
.open .dropdown-menu {
position: static;
@@ -315,7 +330,7 @@
.form-inline();
.form-group {
- @media (max-width: @screen-phone-max) {
+ @media (max-width: @screen-xs-max) {
margin-bottom: 5px;
}
}
@@ -516,7 +531,7 @@
}
}
- @media (max-width: @screen-phone-max) {
+ @media (max-width: @screen-xs-max) {
// Dropdowns get custom display
.open .dropdown-menu {
> .dropdown-header {
diff --git a/less/navs.less b/less/navs.less
index abee86dcc..6002a8cdd 100644
--- a/less/navs.less
+++ b/less/navs.less
@@ -162,7 +162,7 @@
}
}
- @media (min-width: @screen-small) {
+ @media (min-width: @screen-sm) {
> li {
display: table-cell;
width: 1%;
diff --git a/less/panels.less b/less/panels.less
index 5cd04b3db..9d1b21389 100644
--- a/less/panels.less
+++ b/less/panels.less
@@ -15,6 +15,7 @@
// Panel contents
.panel-body {
padding: 15px;
+ .clearfix();
}
// List groups in panels
diff --git a/less/responsive-utilities.less b/less/responsive-utilities.less
index 529152032..062d6820c 100644
--- a/less/responsive-utilities.less
+++ b/less/responsive-utilities.less
@@ -37,98 +37,98 @@
.visible-xs {
.responsive-visibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-invisibility();
}
}
.visible-sm {
.responsive-invisibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-visibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-invisibility();
}
}
.visible-md {
.responsive-invisibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-visibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-invisibility();
}
}
.visible-lg {
.responsive-invisibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-visibility();
}
}
.hidden-xs {
.responsive-invisibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-visibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-visibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-visibility();
}
}
.hidden-sm {
.responsive-visibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-visibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-visibility();
}
}
.hidden-md {
.responsive-visibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-visibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-invisibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-visibility();
}
}
.hidden-lg {
.responsive-visibility();
- @media (min-width: @screen-tablet) and (max-width: @screen-tablet-max) {
+ @media (min-width: @screen-sm) and (max-width: @screen-sm-max) {
.responsive-visibility();
}
- @media (min-width: @screen-desktop) and (max-width: @screen-desktop-max) {
+ @media (min-width: @screen-md) and (max-width: @screen-md-max) {
.responsive-visibility();
}
- @media (min-width: @screen-large-desktop) {
+ @media (min-width: @screen-lg) {
.responsive-invisibility();
}
}
diff --git a/less/theme.less b/less/theme.less
new file mode 100644
index 000000000..52e2d239a
--- /dev/null
+++ b/less/theme.less
@@ -0,0 +1,232 @@
+
+//
+// Load core variables and mixins
+// --------------------------------------------------
+
+@import "variables.less";
+@import "mixins.less";
+
+
+
+//
+// Buttons
+// --------------------------------------------------
+
+// Common styles
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+ text-shadow: 0 -1px 0 rgba(0,0,0,.2);
+ @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
+ .box-shadow(@shadow);
+
+ // Reset the shadow
+ &:active,
+ &.active {
+ .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
+ }
+}
+
+// Mixin for generating new styles
+.btn-styles(@btn-color: #555;) {
+ #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 10%));
+ border-color: darken(@btn-color, 12%);
+
+ &:active,
+ &.active {
+ background-color: darken(@btn-color, 10%);
+ border-color: darken(@btn-color, 12%);
+ }
+}
+
+// Common styles
+.btn {
+ // Remove the gradient for the pressed/active state
+ &:active,
+ &.active {
+ background-image: none;
+ }
+}
+
+// Apply the mixin to the buttons
+.btn-default { .btn-styles(@btn-default-bg;); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
+.btn-primary { .btn-styles(@btn-primary-bg); }
+.btn-success { .btn-styles(@btn-success-bg); }
+.btn-warning { .btn-styles(@btn-warning-bg); }
+.btn-danger { .btn-styles(@btn-danger-bg); }
+.btn-info { .btn-styles(@btn-info-bg); }
+
+
+
+//
+// Images
+// --------------------------------------------------
+
+.thumbnail,
+.img-thumbnail {
+ .box-shadow(0 1px 2px rgba(0,0,0,.075));
+}
+
+
+
+//
+// Dropdowns
+// --------------------------------------------------
+
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus,
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));
+ background-color: darken(@dropdown-link-hover-bg, 5%);
+}
+
+
+
+//
+// Navbar
+// --------------------------------------------------
+
+// Basic navbar
+.navbar {
+ #gradient > .vertical(@start-color: lighten(@navbar-bg, 10%); @end-color: @navbar-bg;);
+ border-radius: @border-radius-base;
+ @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
+ .box-shadow(@shadow);
+
+ .navbar-nav > .active > a {
+ background-color: @navbar-bg;
+ }
+}
+.navbar-brand,
+.navbar-nav > li > a {
+ text-shadow: 0 1px 0 rgba(255,255,255,.25);
+}
+
+// Inverted navbar
+.navbar-inverse {
+ #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg;);
+
+ .navbar-nav > .active > a {
+ background-color: @navbar-inverse-bg;
+ }
+
+ .navbar-brand,
+ .navbar-nav > li > a {
+ text-shadow: 0 -1px 0 rgba(0,0,0,.25);
+ }
+}
+
+// Undo rounded corners in static and fixed navbars
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ border-radius: 0;
+}
+
+
+
+//
+// Alerts
+// --------------------------------------------------
+
+// Common styles
+.alert {
+ text-shadow: 0 1px 0 rgba(255,255,255,.2);
+ @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
+ .box-shadow(@shadow);
+}
+
+// Mixin for generating new styles
+.alert-styles(@color) {
+ #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));
+ border-color: darken(@color, 15%);
+}
+
+// Apply the mixin to the alerts
+.alert { .alert-styles(@alert-bg); }
+.alert-success { .alert-styles(@alert-success-bg); }
+.alert-info { .alert-styles(@alert-info-bg); }
+.alert-danger { .alert-styles(@alert-danger-bg); }
+
+
+
+//
+// Progress bars
+// --------------------------------------------------
+
+// Give the progress background some depth
+.progress {
+ #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg;)
+}
+
+// Mixin for generating new styles
+.progress-bar-styles(@color) {
+ #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));
+}
+
+// Apply the mixin to the progress bars
+.progress-bar { .progress-bar-styles(@progress-bar-bg); }
+.progress-bar-success { .progress-bar-styles(@progress-bar-success-bg); }
+.progress-bar-info { .progress-bar-styles(@progress-bar-info-bg); }
+.progress-bar-warning { .progress-bar-styles(@progress-bar-warning-bg); }
+.progress-bar-danger { .progress-bar-styles(@progress-bar-danger-bg); }
+
+
+
+//
+// List groups
+// --------------------------------------------------
+
+.list-group {
+ border-radius: @border-radius-base;
+ .box-shadow(0 1px 2px rgba(0,0,0,.075));
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);
+ #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));
+ border-color: darken(@list-group-active-border, 7.5%);
+}
+
+
+
+//
+// Panels
+// --------------------------------------------------
+
+// Common styles
+.panel {
+ .box-shadow(0 1px 2px rgba(0,0,0,.05));
+}
+
+// Mixin for generating new styles
+.panel-heading-styles(@color) {
+ #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));
+}
+
+// Apply the mixin to the panel headings only
+.panel-heading { .panel-heading-styles(@panel-heading-bg); }
+.panel-primary > .panel-heading { .panel-heading-styles(@panel-primary-heading-bg); }
+.panel-success > .panel-heading { .panel-heading-styles(@panel-success-heading-bg); }
+.panel-info > .panel-heading { .panel-heading-styles(@panel-info-heading-bg); }
+.panel-warning > .panel-heading { .panel-heading-styles(@panel-warning-heading-bg); }
+.panel-danger > .panel-heading { .panel-heading-styles(@panel-danger-heading-bg); }
+
+
+
+//
+// Wells
+// --------------------------------------------------
+
+.well {
+ #gradient > .vertical(@start-color: darken(@well-bg, 5%); @end-color: @well-bg;);
+ border-color: darken(@well-bg, 10%);
+ @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
+ .box-shadow(@shadow);
+}
diff --git a/less/variables.less b/less/variables.less
index c3eeaaebc..a46ad4fb6 100644
--- a/less/variables.less
+++ b/less/variables.less
@@ -193,26 +193,25 @@
// --------------------------------------------------
// Extra small screen / phone
-@screen-xsmall: 480px;
-@screen-phone: @screen-xsmall;
+@screen-xs: 480px;
+@screen-phone: @screen-xs;
// Small screen / tablet
-@screen-small: 768px;
-@screen-tablet: @screen-small;
+@screen-sm: 768px;
+@screen-tablet: @screen-sm;
// Medium screen / desktop
-@screen-medium: 992px;
-@screen-desktop: @screen-medium;
+@screen-md: 992px;
+@screen-desktop: @screen-md;
// Large screen / wide desktop
-@screen-large: 1200px;
-@screen-large-desktop: @screen-large;
+@screen-lg: 1200px;
+@screen-lg-desktop: @screen-lg;
// So media queries don't overlap when required, provide a maximum
-@screen-phone-max: (@screen-small - 1);
-@screen-small-max: (@screen-medium - 1);
-@screen-tablet-max: (@screen-desktop - 1);
-@screen-desktop-max: (@screen-large-desktop - 1);
+@screen-xs-max: (@screen-sm - 1);
+@screen-sm-max: (@screen-md - 1);
+@screen-md-max: (@screen-lg - 1);
// Grid system
@@ -600,10 +599,10 @@
// --------------------------------------------------
// Small screen / tablet
-@container-tablet: ((720px + @grid-gutter-width));
+@container-tablet: ((720px + @grid-gutter-width));
// Medium screen / desktop
-@container-desktop: ((940px + @grid-gutter-width));
+@container-desktop: ((940px + @grid-gutter-width));
// Large screen / wide desktop
-@container-large-desktop: ((1140px + @grid-gutter-width));
+@container-lg-desktop: ((1140px + @grid-gutter-width));