_navbar.scss 5.53 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
129
130
// Generate series of `.navbar-toggleable-*` responsive classes for configuring
// where your navbar collapses.
.navbar-toggleable {
  @each $breakpoint in map-keys($grid-breakpoints) {
    $next: breakpoint-next($breakpoint, $grid-breakpoints);
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
Mark Otto's avatar
Mark Otto committed
131

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

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

      @include media-breakpoint-up($next) {
        flex-direction: row;
        flex-wrap: nowrap;
        align-items: center;

        .navbar-nav {
          flex-direction: row;

          .nav-link {
coder4life's avatar
coder4life committed
156
            padding: $navbar-link-padding;
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
          }
        }

        // 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
179
180
181
  }
}

182
183
184
185
186

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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