input-groups.less 3.97 KB
Newer Older
Mark Otto's avatar
Mark Otto committed
1
2
3
4
5
6
7
//
// Input groups
// --------------------------------------------------

// Base styles
// -------------------------
.input-group {
8
  position: relative; // For dropdowns
Mark Otto's avatar
Mark Otto committed
9
10
11
12
  display: table;
  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table

  // Undo padding and float of grid classes
13
  &[class*="col-"] {
Mark Otto's avatar
Mark Otto committed
14
15
16
17
18
19
    float: none;
    padding-left: 0;
    padding-right: 0;
  }

  .form-control {
20
21
22
23
24
    // IE9 fubars the placeholder attribute in text inputs and the arrows on
    // select elements in input groups. To fix it, we float the input. Details:
    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
    float: left;

Mark Otto's avatar
Mark Otto committed
25
26
27
28
29
    width: 100%;
    margin-bottom: 0;
  }
}

30
31
32
33
34
35
// Sizing options
//
// Remix the default form control sizing classes into new ones for easier
// manipulation.

.input-group-lg > .form-control,
36
37
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn { .input-lg(); }
38
.input-group-sm > .form-control,
39
.input-group-sm > .input-group-addon,
40
.input-group-sm > .input-group-btn > .btn { .input-sm(); }
41
42


Mark Otto's avatar
Mark Otto committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Display as table-cell
// -------------------------
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;

  &:not(:first-child):not(:last-child) {
    border-radius: 0;
  }
}
// Addon and addon wrapper for buttons
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle; // Match the inputs
}

// Text input groups
// -------------------------
.input-group-addon {
  padding: @padding-base-vertical @padding-base-horizontal;
  font-size: @font-size-base;
  font-weight: normal;
geedmo's avatar
geedmo committed
68
  line-height: 1;
69
  color: @input-color;
Mark Otto's avatar
Mark Otto committed
70
  text-align: center;
71
  background-color: @input-group-addon-bg;
Mark Otto's avatar
Mark Otto committed
72
73
74
75
  border: 1px solid @input-group-addon-border-color;
  border-radius: @border-radius-base;

  // Sizing
76
  &.input-sm {
Mark Otto's avatar
Mark Otto committed
77
78
79
80
    padding: @padding-small-vertical @padding-small-horizontal;
    font-size: @font-size-small;
    border-radius: @border-radius-small;
  }
81
  &.input-lg {
Mark Otto's avatar
Mark Otto committed
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
    padding: @padding-large-vertical @padding-large-horizontal;
    font-size: @font-size-large;
    border-radius: @border-radius-large;
  }

  // Nuke default margins from checkboxes and radios to vertically center within.
  input[type="radio"],
  input[type="checkbox"] {
    margin-top: 0;
  }
}

// Reset rounded corners
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
98
.input-group-btn:first-child > .btn-group > .btn,
Mark Otto's avatar
Mark Otto committed
99
.input-group-btn:first-child > .dropdown-toggle,
100
101
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
Mark Otto's avatar
Mark Otto committed
102
103
104
105
106
107
108
109
  .border-right-radius(0);
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
110
.input-group-btn:last-child > .btn-group > .btn,
Mark Otto's avatar
Mark Otto committed
111
.input-group-btn:last-child > .dropdown-toggle,
112
113
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
Mark Otto's avatar
Mark Otto committed
114
115
116
117
118
119
120
121
122
123
  .border-left-radius(0);
}
.input-group-addon:last-child {
  border-left: 0;
}

// Button input groups
// -------------------------
.input-group-btn {
  position: relative;
124
125
  // Jankily prevent input button groups from wrapping with `white-space` and
  // `font-size` in combination with `inline-block` on buttons.
126
  font-size: 0;
Mark Otto's avatar
Mark Otto committed
127
  white-space: nowrap;
128

129
130
  // Negative margin for spacing, position for bringing hovered/focused/actived
  // element above the siblings.
Zlatan Vasović's avatar
Zlatan Vasović committed
131
132
133
  > .btn {
    position: relative;
    + .btn {
134
      margin-left: -1px;
Zlatan Vasović's avatar
Zlatan Vasović committed
135
136
137
    }
    // Bring the "active" button to the front
    &:hover,
138
    &:focus,
Zlatan Vasović's avatar
Zlatan Vasović committed
139
140
141
    &:active {
      z-index: 2;
    }
Mark Otto's avatar
Mark Otto committed
142
  }
143
144

  // Negative margin to only have a 1px border between the two
145
146
147
148
149
  &:first-child {
    > .btn,
    > .btn-group {
      margin-right: -1px;
    }
150
  }
151
152
153
154
155
  &:last-child {
    > .btn,
    > .btn-group {
      margin-left: -1px;
    }
156
  }
Mark Otto's avatar
Mark Otto committed
157
}