tables.less 4.34 KB
Newer Older
1
//
2
3
// Tables
// --------------------------------------------------
Jacob Thornton's avatar
Jacob Thornton committed
4

5

6
7
table {
  max-width: 100%;
8
  background-color: @table-bg;
9
}
10
11
12
th {
  text-align: left;
}
13
14


15
// Baseline styles
Jacob Thornton's avatar
Jacob Thornton committed
16

17
.table {
Jacob Thornton's avatar
Jacob Thornton committed
18
  width: 100%;
19
  margin-bottom: @line-height-computed;
20
  // Cells
21
22
23
  > thead,
  > tbody,
  > tfoot {
24
25
26
    > tr {
      > th,
      > td {
27
        padding: @table-cell-padding;
28
29
30
31
32
        line-height: @line-height-base;
        vertical-align: top;
        border-top: 1px solid @table-border-color;
      }
    }
33
  }
34
  // Bottom align for column headings
35
  > thead > tr > th {
36
    vertical-align: bottom;
37
    border-bottom: 2px solid @table-border-color;
38
39
  }
  // Remove top border from thead by default
40
41
42
43
44
45
  > caption + thead,
  > colgroup + thead,
  > thead:first-child {
    > tr:first-child {
      > th,
      > td {
46
47
48
        border-top: 0;
      }
    }
49
50
  }
  // Account for multiple tbody instances
51
  > tbody + tbody {
52
    border-top: 2px solid @table-border-color;
53
  }
Mark Otto's avatar
Mark Otto committed
54
55
56

  // Nesting
  .table {
57
    background-color: @body-bg;
Mark Otto's avatar
Mark Otto committed
58
  }
59
60
}

61

62
// Condensed table w/ half padding
63

64
.table-condensed {
65
66
67
  > thead,
  > tbody,
  > tfoot {
68
69
70
    > tr {
      > th,
      > td {
71
        padding: @table-condensed-cell-padding;
72
73
      }
    }
74
  }
75
76
77
}


78
// Bordered version
79
80
//
// Add borders all around the table and between all the columns.
81

82
.table-bordered {
83
  border: 1px solid @table-border-color;
84
  > thead,
85
86
  > tbody,
  > tfoot {
87
88
89
    > tr {
      > th,
      > td {
90
        border: 1px solid @table-border-color;
91
      }
liuyl's avatar
liuyl committed
92
    }
93
  }
94
95
96
97
98
99
100
101
  > thead {
    > tr {
      > th,
      > td {
        border-bottom-width: 2px;
      }
    }
  }
Jacob Thornton's avatar
Jacob Thornton committed
102
103
}

104

105
// Zebra-striping
106
//
107
// Default zebra-stripe styles (alternating gray and transparent backgrounds)
108

109
.table-striped {
110
  > tbody {
111
112
113
114
115
    > tr:nth-child(odd) {
      > td,
      > th {
        background-color: @table-bg-accent;
      }
116
117
118
119
120
    }
  }
}


121
// Hover effect
122
//
123
// Placed here since it has to come after the potential zebra striping
124

125
.table-hover {
126
  > tbody {
127
128
129
130
131
    > tr:hover {
      > td,
      > th {
        background-color: @table-bg-hover;
      }
132
    }
133
134
135
  }
}

136

137
// Table cell sizing
138
//
139
// Reset default table behavior
140

boomsb's avatar
boomsb committed
141
table col[class*="col-"] {
142
143
144
  float: none;
  display: table-column;
}
145
table {
146
147
  td,
  th {
boomsb's avatar
boomsb committed
148
    &[class*="col-"] {
149
150
151
152
      float: none;
      display: table-cell;
    }
  }
153
154
}

155

156
// Table backgrounds
157
//
158
159
// Exact selectors below required to override `.table-striped` and prevent
// inheritance to nested tables.
160

161
162
163
.table > thead > tr,
.table > tbody > tr,
.table > tfoot > tr {
164
165
  > td.active,
  > th.active,
166
167
  &.active > td,
  &.active > th  {
168
    background-color: @table-bg-active;
169
  }
170
}
171

172
// Generate the contextual variants
ggam's avatar
ggam committed
173
174
175
.table-row-variant(success; @state-success-bg; @state-success-border);
.table-row-variant(danger; @state-danger-bg; @state-danger-border);
.table-row-variant(warning; @state-warning-bg; @state-warning-border);
176
177
178
179


// Responsive tables
//
180
// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
181
182
183
// by enabling horizontal scrolling. Only applies <768px. Everything above that
// will display normally.

184
@media (max-width: @screen-sm-min) {
185
186
187
188
189
  .table-responsive {
    width: 100%;
    margin-bottom: 15px;
    overflow-y: hidden;
    overflow-x: scroll;
190
    -ms-overflow-style: -ms-autohiding-scrollbar;
191
    border: 1px solid @table-border-color;
192
    -webkit-overflow-scrolling: touch;
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228

    // Tighten up spacing and give a background color
    > .table {
      margin-bottom: 0;

      // Ensure the content doesn't wrap
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th,
          > td {
            white-space: nowrap;
          }
        }
      }
    }

    // Special overrides for the bordered tables
    > .table-bordered {
      border: 0;

      // Nuke the appropriate borders so that the parent can handle them
      > thead,
      > tbody,
      > tfoot {
        > tr {
          > th:first-child,
          > td:first-child {
            border-left: 0;
          }
          > th:last-child,
          > td:last-child {
            border-right: 0;
          }
        }
229
230
231
232
233
234
235
      }

      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
      // chances are there will be only one `tr` in a `thead` and that would
      // remove the border altogether.
      > tbody,
      > tfoot {
236
237
238
239
240
241
242
        > tr:last-child {
          > th,
          > td {
            border-bottom: 0;
          }
        }
      }
243

244
245
246
    }
  }
}