buttons.less 4.26 KB
Newer Older
1
2
3
//
// Buttons
// --------------------------------------------------
4

5
6

// Base styles
Mark Otto's avatar
Mark Otto committed
7
// --------------------------------------------------
8

Mark Otto's avatar
Mark Otto committed
9
// Core
10
11
.btn {
  display: inline-block;
12
  .ie7-inline-block();
13
  padding: 4px 10px 4px;
14
  margin-bottom: 0; // For input.btn
15
  font-size: @baseFontSize;
16
  line-height: @baseLineHeight;
Jacob Thornton's avatar
Jacob Thornton committed
17
  *line-height: 20px;
18
  color: @grayDark;
19
  text-align: center;
20
  text-shadow: 0 1px 1px rgba(255,255,255,.75);
21
  vertical-align: middle;
Jacob Thornton's avatar
Jacob Thornton committed
22
  cursor: pointer;
23
24
  .buttonBackground(@btnBackground, @btnBackgroundHighlight);
  border: 1px solid @btnBorder;
Jacob Thornton's avatar
Jacob Thornton committed
25
  *border: 0; // Remove the border to prevent IE7's black border on input:focus
26
  border-bottom-color: darken(@btnBorder, 10%);
27
  .border-radius(4px);
Jacob Thornton's avatar
Jacob Thornton committed
28
  .ie7-restore-left-whitespace(); // Give IE7 some love
29
  .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
Mark Otto's avatar
Mark Otto committed
30
}
31

Mark Otto's avatar
Mark Otto committed
32
33
34
35
36
// Hover state
.btn:hover {
  color: @grayDark;
  text-decoration: none;
  background-color: darken(@white, 10%);
37
  *background-color: darken(@white, 15%); /* Buttons in IE7 don't get borders, so darken on hover */
Mark Otto's avatar
Mark Otto committed
38
  background-position: 0 -15px;
39

Mark Otto's avatar
Mark Otto committed
40
41
42
43
  // transition is only when going to hover, otherwise the background
  // behind the gradient (there for IE<=9 fallback) gets mismatched
  .transition(background-position .1s linear);
}
44

Mark Otto's avatar
Mark Otto committed
45
46
47
48
// Focus state for keyboard and accessibility
.btn:focus {
  .tab-focus();
}
49

Mark Otto's avatar
Mark Otto committed
50
// Active state
51
.btn.active,
Mark Otto's avatar
Mark Otto committed
52
53
54
.btn:active {
  background-color: darken(@white, 10%);
  background-color: darken(@white, 15%) e("\9");
Jacob Thornton's avatar
Jacob Thornton committed
55
  background-image: none;
Mark Otto's avatar
Mark Otto committed
56
  outline: 0;
Jacob Thornton's avatar
Jacob Thornton committed
57
  .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)");
Mark Otto's avatar
Mark Otto committed
58
}
59

Mark Otto's avatar
Mark Otto committed
60
// Disabled state
61
.btn.disabled,
Mark Otto's avatar
Mark Otto committed
62
63
64
.btn[disabled] {
  cursor: default;
  background-color: darken(@white, 10%);
Jacob Thornton's avatar
Jacob Thornton committed
65
  background-image: none;
Mark Otto's avatar
Mark Otto committed
66
67
68
69
70
71
72
73
74
  .opacity(65);
  .box-shadow(none);
}


// Button Sizes
// --------------------------------------------------

// Large
75
.btn-large {
Mark Otto's avatar
Mark Otto committed
76
77
78
79
80
  padding: 9px 14px;
  font-size: @baseFontSize + 2px;
  line-height: normal;
  .border-radius(5px);
}
81
.btn-large [class^="icon-"] {
Mark Otto's avatar
Mark Otto committed
82
83
84
85
  margin-top: 1px;
}

// Small
86
.btn-small {
Mark Otto's avatar
Mark Otto committed
87
88
89
90
  padding: 5px 9px;
  font-size: @baseFontSize - 2px;
  line-height: @baseLineHeight - 2px;
}
91
.btn-small [class^="icon-"] {
Mark Otto's avatar
Mark Otto committed
92
93
94
  margin-top: -1px;
}

Mark Otto's avatar
Mark Otto committed
95
96
97
98
99
100
101
// Mini
.btn-mini {
  padding: 2px 6px;
  font-size: @baseFontSize - 2px;
  line-height: @baseLineHeight - 4px;
}

Mark Otto's avatar
Mark Otto committed
102
103
104
105
106
107

// Alternate buttons
// --------------------------------------------------

// Set text color
// -------------------------
108
109
110
111
112
113
114
115
116
.btn-primary,
.btn-primary:hover,
.btn-warning,
.btn-warning:hover,
.btn-danger,
.btn-danger:hover,
.btn-success,
.btn-success:hover,
.btn-info,
Simon's avatar
Simon committed
117
.btn-info:hover,
118
119
.btn-inverse,
.btn-inverse:hover {
Mark Otto's avatar
Mark Otto committed
120
  color: @white;
Jacob Thornton's avatar
Jacob Thornton committed
121
  text-shadow: 0 -1px 0 rgba(0,0,0,.25);
Mark Otto's avatar
Mark Otto committed
122
123
}
// Provide *some* extra contrast for those who can get it
124
125
126
127
.btn-primary.active,
.btn-warning.active,
.btn-danger.active,
.btn-success.active,
Simon's avatar
Simon committed
128
.btn-info.active,
Mark Otto's avatar
Mark Otto committed
129
.btn-inverse.active {
Mark Otto's avatar
Mark Otto committed
130
131
132
133
134
  color: rgba(255,255,255,.75);
}

// Set the backgrounds
// -------------------------
135
.btn {
136
137
138
  // reset here as of 2.0.3 due to Recess property order
  border-color: #ccc;
  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);
139
}
140
.btn-primary {
141
  .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
142
}
Mark Otto's avatar
Mark Otto committed
143
// Warning appears are orange
144
.btn-warning {
145
  .buttonBackground(@btnWarningBackground, @btnWarningBackgroundHighlight);
Mark Otto's avatar
Mark Otto committed
146
147
}
// Danger and error appear as red
148
.btn-danger {
149
  .buttonBackground(@btnDangerBackground, @btnDangerBackgroundHighlight);
Mark Otto's avatar
Mark Otto committed
150
151
}
// Success appears as green
152
.btn-success {
153
  .buttonBackground(@btnSuccessBackground, @btnSuccessBackgroundHighlight);
Mark Otto's avatar
Mark Otto committed
154
155
}
// Info appears as a neutral blue
156
.btn-info {
157
  .buttonBackground(@btnInfoBackground, @btnInfoBackgroundHighlight);
Mark Otto's avatar
Mark Otto committed
158
}
159
160
// Inverse appears as dark gray
.btn-inverse {
161
  .buttonBackground(@btnInverseBackground, @btnInverseBackgroundHighlight);
Simon's avatar
Simon committed
162
}
Mark Otto's avatar
Mark Otto committed
163
164
165
166


// Cross-browser Jank
// --------------------------------------------------
167
168

button.btn,
169
input[type="submit"].btn {
Mark Otto's avatar
Mark Otto committed
170
171

  // Firefox 3.6 only I believe
172
  &::-moz-focus-inner {
173
    padding: 0;
Mark Otto's avatar
Mark Otto committed
174
    border: 0;
175
  }
176
177
178
179

  // IE7 has some default padding on button controls
  *padding-top: 2px;
  *padding-bottom: 2px;
180
  &.btn-large {
181
182
183
    *padding-top: 7px;
    *padding-bottom: 7px;
  }
184
  &.btn-small {
185
186
187
    *padding-top: 3px;
    *padding-bottom: 3px;
  }
Mark Otto's avatar
Mark Otto committed
188
189
190
191
  &.btn-mini {
    *padding-top: 1px;
    *padding-bottom: 1px;
  }
192
}