_navbar.scss 5.57 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
// Contents
//
// Navbar
// Navbar brand
// Navbar nav
// Navbar text
// Navbar divider
// Responsive navbar
// Navbar position
// Navbar themes


// Navbar
Mark Otto's avatar
Mark Otto committed
14
15
16
17
18
19
//
// Provide a static navbar from which we expand to create full-width, fixed, and
// other navbar variations.

.navbar {
  position: relative;
20
  display: flex;
21
  flex-direction: column;
Mark Otto's avatar
Mark Otto committed
22
  padding: $navbar-padding-y $navbar-padding-x;
23
24
25
26
27
28
29

  @include media-breakpoint-down(nth(map-keys($grid-breakpoints), 1)) {
    > .container {
      margin-right: 0;
      margin-left: 0;
    }
  }
Mark Otto's avatar
Mark Otto committed
30
31
}

32

33
// Navbar brand
Mark Otto's avatar
Mark Otto committed
34
//
35
// Used for brand, project, or site names.
Mark Otto's avatar
Mark Otto committed
36
37

.navbar-brand {
38
  display: inline-block;
39
  align-self: flex-start;
Mark Otto's avatar
Mark Otto committed
40
41
  padding-top: .25rem;
  padding-bottom: .25rem;
Mark Otto's avatar
Mark Otto committed
42
  margin-right: $navbar-padding-x;
Mark Otto's avatar
Mark Otto committed
43
  font-size: $font-size-lg;
44
  line-height: inherit;
Mark Otto's avatar
Mark Otto committed
45
  white-space: nowrap;
Mark Otto's avatar
Mark Otto committed
46

Mark Otto's avatar
Mark Otto committed
47
48
  @include hover-focus {
    text-decoration: none;
Mark Otto's avatar
Mark Otto committed
49
  }
50
}
Mark Otto's avatar
Mark Otto committed
51

Mark Otto's avatar
Mark Otto committed
52

53
54
55
56
57
58
59
60
61
62
63
64
65
// Navbar nav
//
// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).

.navbar-nav {
  display: flex;
  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value
  padding-left: 0;
  margin-bottom: 0;
  list-style: none;

  .nav-link {
    padding-right: 0;
Mark Otto's avatar
linting    
Mark Otto committed
66
    padding-left: 0;
Mark Otto's avatar
Mark Otto committed
67
68
69
70
  }
}


71
72
73
74
75
76
77
78
79
80
81
// Navbar text
//
//

.navbar-text {
  display: inline-block;
  padding-top:    .425rem;
  padding-bottom: .425rem;
}


82
// Responsive navbar
Mark Otto's avatar
Mark Otto committed
83
//
84
85
// Custom styles for responsive collapsing and toggling of navbar contents.
// Powered by the collapse Bootstrap JavaScript plugin.
Mark Otto's avatar
Mark Otto committed
86

Quy's avatar
Quy committed
87
// Button for toggling the navbar when in its collapsed state
Mark Otto's avatar
Mark Otto committed
88
.navbar-toggler {
89
  align-self: flex-start; // Prevent toggler from growing to full width when it's the only visible navbar child
Mark Otto's avatar
Mark Otto committed
90
  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;
Mark Otto's avatar
Mark Otto committed
91
  font-size: $navbar-toggler-font-size;
Mark Otto's avatar
Mark Otto committed
92
  line-height: 1;
Mark Otto's avatar
Mark Otto committed
93
94
  background: transparent; // remove default button style
  border: $border-width solid transparent; // remove default button style
Mark Otto's avatar
Mark Otto committed
95
  @include border-radius($navbar-toggler-border-radius);
Mark Otto's avatar
Mark Otto committed
96

97
  @include hover-focus {
Mark Otto's avatar
Mark Otto committed
98
99
100
101
    text-decoration: none;
  }
}

Mark Otto's avatar
Mark Otto committed
102
103
104
105
106
107
108
// Keep as a separate element so folks can easily override it with another icon
// or image file as needed.
.navbar-toggler-icon {
  display: inline-block;
  width: 1.5em;
  height: 1.5em;
  vertical-align: middle;
Mark Otto's avatar
linting    
Mark Otto committed
109
  content: "";
Mark Otto's avatar
Mark Otto committed
110
111
112
113
  background: no-repeat center center;
  background-size: 100% 100%;
}

114
115
116
117
118
119
120
121
122
123
// Use `position` on the toggler to prevent it from being auto placed as a flex
// item and allow easy placement.
.navbar-toggler-left {
  position: absolute;
  left: $navbar-padding-x;
}
.navbar-toggler-right {
  position: absolute;
  right: $navbar-padding-x;
}
124

125
126
127
128
// Generate series of `.navbar-toggleable-*` responsive classes for configuring
// where your navbar collapses.
.navbar-toggleable {
  @each $breakpoint in map-keys($grid-breakpoints) {
129
    $previous: breakpoint-previous($breakpoint, $grid-breakpoints);
130
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
Mark Otto's avatar
Mark Otto committed
131

132
    &#{$infix} {
133
      @include media-breakpoint-down($previous) {
134
135
136
137
138
139
140
141
142
143
144
145
146
        .navbar-nav {
          .dropdown-menu {
            position: static;
            float: none;
          }
        }

        > .container {
          padding-right: 0;
          padding-left: 0;
        }
      }

147
      @include media-breakpoint-up($breakpoint) {
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;

        .navbar-nav {
          flex-direction: row;

          .nav-link {
            padding-right: .5rem;
            padding-left: .5rem;
          }
        }

        // For nesting containers, have to redeclare for alignment purposes
        > .container {
          display: flex;
          flex-wrap: nowrap;
          align-items: center;
        }

        // scss-lint:disable ImportantRule
        .navbar-collapse {
          display: flex !important;
          width: 100%;
        }
        // scss-lint:enable ImportantRule

        .navbar-toggler {
          display: none;
        }
      }
    }
Mark Otto's avatar
Mark Otto committed
180
181
182
  }
}

183
184
185
186
187

// Navbar themes
//
// Styles for switching between navbars with light or dark background.

188
189
// Dark links against a light background
.navbar-light {
190
191
  .navbar-brand,
  .navbar-toggler {
192
    color: $navbar-light-active-color;
Chris Rebert's avatar
Chris Rebert committed
193

194
    @include hover-focus {
195
      color: $navbar-light-active-color;
Mark Otto's avatar
Mark Otto committed
196
197
198
    }
  }

199
200
201
  .navbar-nav {
    .nav-link {
      color: $navbar-light-color;
Mark Otto's avatar
Mark Otto committed
202

203
204
205
      @include hover-focus {
        color: $navbar-light-hover-color;
      }
206
207
208
209

      &.disabled {
        color: $navbar-light-disabled-color;
      }
210
    }
Mark Otto's avatar
Mark Otto committed
211

212
213
214
215
    .open > .nav-link,
    .active > .nav-link,
    .nav-link.open,
    .nav-link.active {
216
      color: $navbar-light-active-color;
217
218
    }
  }
Mark Otto's avatar
Mark Otto committed
219

220
  .navbar-toggler {
221
    border-color: $navbar-light-toggler-border;
222
223
  }

Mark Otto's avatar
Mark Otto committed
224
225
226
227
  .navbar-toggler-icon {
    background-image: $navbar-light-toggler-bg;
  }

228
229
230
  .navbar-text {
    color: $navbar-light-color;
  }
231
232
233
}

// White links against a dark background
234
.navbar-inverse {
235
236
  .navbar-brand,
  .navbar-toggler {
237
    color: $navbar-inverse-active-color;
Mark Otto's avatar
Mark Otto committed
238

239
    @include hover-focus {
240
      color: $navbar-inverse-active-color;
Mark Otto's avatar
Mark Otto committed
241
242
243
244
    }
  }

  .navbar-nav {
Mark Otto's avatar
Mark Otto committed
245
    .nav-link {
246
      color: $navbar-inverse-color;
Mark Otto's avatar
Mark Otto committed
247

248
      @include hover-focus {
249
        color: $navbar-inverse-hover-color;
Mark Otto's avatar
Mark Otto committed
250
      }
251
252

      &.disabled {
253
        color: $navbar-inverse-disabled-color;
254
      }
Mark Otto's avatar
Mark Otto committed
255
    }
Mark Otto's avatar
Mark Otto committed
256

Mark Otto's avatar
Mark Otto committed
257
258
259
260
    .open > .nav-link,
    .active > .nav-link,
    .nav-link.open,
    .nav-link.active {
261
      color: $navbar-inverse-active-color;
Mark Otto's avatar
Mark Otto committed
262
263
    }
  }
Mark Otto's avatar
Mark Otto committed
264

265
  .navbar-toggler {
266
    border-color: $navbar-inverse-toggler-border;
267
268
  }

Mark Otto's avatar
Mark Otto committed
269
270
271
272
  .navbar-toggler-icon {
    background-image: $navbar-inverse-toggler-bg;
  }

273
  .navbar-text {
274
    color: $navbar-inverse-color;
275
  }
Mark Otto's avatar
Mark Otto committed
276
}