navbar.sass 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356
  1. $navbar-background-color: $white !default
  2. $navbar-height: 3.25rem !default
  3. $navbar-fixed-z: 30 !default
  4. $navbar-item-color: $grey-dark !default
  5. $navbar-item-hover-color: $black !default
  6. $navbar-item-hover-background-color: $background !default
  7. $navbar-item-active-color: $black !default
  8. $navbar-item-active-background-color: transparent !default
  9. $navbar-item-img-max-height: 1.75rem !default
  10. $navbar-tab-hover-background-color: transparent !default
  11. $navbar-tab-hover-border-bottom-color: $link !default
  12. $navbar-tab-active-color: $link !default
  13. $navbar-tab-active-background-color: transparent !default
  14. $navbar-tab-active-border-bottom-color: $link !default
  15. $navbar-tab-active-border-bottom-style: solid !default
  16. $navbar-tab-active-border-bottom-width: 3px !default
  17. $navbar-dropdown-background-color: $white !default
  18. $navbar-dropdown-border-top: 1px solid $border !default
  19. $navbar-dropdown-offset: -4px !default
  20. $navbar-dropdown-arrow: $link !default
  21. $navbar-dropdown-radius: $radius-large !default
  22. $navbar-dropdown-z: 20 !default
  23. $navbar-dropdown-boxed-radius: $radius-large !default
  24. $navbar-dropdown-boxed-shadow: 0 8px 8px rgba($black, 0.1), 0 0 0 1px rgba($black, 0.1) !default
  25. $navbar-dropdown-item-hover-color: $black !default
  26. $navbar-dropdown-item-hover-background-color: $background !default
  27. $navbar-dropdown-item-active-color: $link !default
  28. $navbar-dropdown-item-active-background-color: $background !default
  29. $navbar-divider-background-color: $border !default
  30. =navbar-fixed
  31. left: 0
  32. position: fixed
  33. right: 0
  34. z-index: $navbar-fixed-z
  35. =navbar-fixed-html
  36. left: 0
  37. position: fixed
  38. right: 0
  39. .navbar
  40. background-color: $navbar-background-color
  41. min-height: $navbar-height
  42. position: relative
  43. @each $name, $pair in $colors
  44. $color: nth($pair, 1)
  45. $color-invert: nth($pair, 2)
  46. &.is-#{$name}
  47. background-color: $color
  48. color: $color-invert
  49. .navbar-brand
  50. & > .navbar-item,
  51. .navbar-link
  52. color: $color-invert
  53. & > a.navbar-item,
  54. .navbar-link
  55. &:hover,
  56. &.is-active
  57. background-color: darken($color, 5%)
  58. color: $color-invert
  59. .navbar-link
  60. &::after
  61. border-color: $color-invert
  62. +desktop
  63. .navbar-start,
  64. .navbar-end
  65. & > .navbar-item,
  66. .navbar-link
  67. color: $color-invert
  68. & > a.navbar-item,
  69. .navbar-link
  70. &:hover,
  71. &.is-active
  72. background-color: darken($color, 5%)
  73. color: $color-invert
  74. .navbar-link
  75. &::after
  76. border-color: $color-invert
  77. .navbar-item.has-dropdown:hover .navbar-link,
  78. .navbar-item.has-dropdown.is-active .navbar-link
  79. background-color: darken($color, 5%)
  80. color: $color-invert
  81. .navbar-dropdown
  82. a.navbar-item
  83. &.is-active
  84. background-color: $color
  85. color: $color-invert
  86. & > .container
  87. align-items: stretch
  88. display: flex
  89. min-height: $navbar-height
  90. width: 100%
  91. &.has-shadow
  92. box-shadow: 0 2px 3px rgba($black, 0.1)
  93. &.is-fixed-bottom,
  94. &.is-fixed-top
  95. +navbar-fixed
  96. &.is-fixed-bottom
  97. bottom: 0
  98. &.is-fixed-top
  99. top: 0
  100. html.has-navbar-fixed-top
  101. padding-top: $navbar-height
  102. html.has-navbar-fixed-bottom
  103. padding-bottom: $navbar-height
  104. .navbar-brand,
  105. .navbar-tabs
  106. align-items: stretch
  107. display: flex
  108. flex-shrink: 0
  109. min-height: $navbar-height
  110. .navbar-tabs
  111. +overflow-touch
  112. max-width: 100vw
  113. overflow-x: auto
  114. overflow-y: hidden
  115. .navbar-burger
  116. +hamburger($navbar-height)
  117. margin-left: auto
  118. .navbar-menu
  119. display: none
  120. .navbar-item,
  121. .navbar-link
  122. color: $navbar-item-color
  123. display: block
  124. line-height: 1.5
  125. padding: 0.5rem 1rem
  126. position: relative
  127. a.navbar-item,
  128. .navbar-link
  129. &:hover,
  130. &.is-active
  131. background-color: $navbar-item-hover-background-color
  132. color: $navbar-item-hover-color
  133. .navbar-item
  134. flex-grow: 0
  135. flex-shrink: 0
  136. img
  137. max-height: $navbar-item-img-max-height
  138. &.has-dropdown
  139. padding: 0
  140. &.is-expanded
  141. flex-grow: 1
  142. flex-shrink: 1
  143. &.is-tab
  144. border-bottom: 1px solid transparent
  145. min-height: $navbar-height
  146. padding-bottom: calc(0.5rem - 1px)
  147. &:hover
  148. background-color: $navbar-tab-hover-background-color
  149. border-bottom-color: $navbar-tab-hover-border-bottom-color
  150. &.is-active
  151. background-color: $navbar-tab-active-background-color
  152. border-bottom-color: $navbar-tab-active-border-bottom-color
  153. border-bottom-style: $navbar-tab-active-border-bottom-style
  154. border-bottom-width: $navbar-tab-active-border-bottom-width
  155. color: $navbar-tab-active-color
  156. padding-bottom: calc(0.5rem - #{$navbar-tab-active-border-bottom-width})
  157. .navbar-content
  158. flex-grow: 1
  159. flex-shrink: 1
  160. .navbar-link
  161. padding-right: 2.5em
  162. .navbar-dropdown
  163. font-size: 0.875rem
  164. padding-bottom: 0.5rem
  165. padding-top: 0.5rem
  166. .navbar-item
  167. padding-left: 1.5rem
  168. padding-right: 1.5rem
  169. .navbar-divider
  170. background-color: $navbar-divider-background-color
  171. border: none
  172. display: none
  173. height: 1px
  174. margin: 0.5rem 0
  175. +touch
  176. .navbar > .container
  177. display: block
  178. .navbar-brand,
  179. .navbar-tabs
  180. .navbar-item
  181. align-items: center
  182. display: flex
  183. .navbar-menu
  184. background-color: $white
  185. box-shadow: 0 8px 16px rgba($black, 0.1)
  186. padding: 0.5rem 0
  187. &.is-active
  188. display: block
  189. // Fixed navbar
  190. .navbar
  191. &.is-fixed-bottom-touch,
  192. &.is-fixed-top-touch
  193. +navbar-fixed
  194. &.is-fixed-bottom-touch
  195. bottom: 0
  196. &.is-fixed-top-touch
  197. top: 0
  198. html.has-navbar-fixed-top-touch
  199. padding-top: $navbar-height
  200. html.has-navbar-fixed-bottom-touch
  201. padding-bottom: $navbar-height
  202. +desktop
  203. .navbar,
  204. .navbar-menu,
  205. .navbar-start,
  206. .navbar-end
  207. align-items: stretch
  208. display: flex
  209. .navbar
  210. min-height: $navbar-height
  211. &.is-transparent
  212. a.navbar-item,
  213. .navbar-link
  214. &:hover,
  215. &.is-active
  216. background-color: transparent !important
  217. .navbar-item.has-dropdown
  218. &.is-active,
  219. &.is-hoverable:hover
  220. .navbar-link
  221. background-color: transparent !important
  222. .navbar-dropdown
  223. a.navbar-item
  224. &:hover
  225. background-color: $navbar-dropdown-item-hover-background-color
  226. color: $navbar-dropdown-item-hover-color
  227. &.is-active
  228. background-color: $navbar-dropdown-item-active-background-color
  229. color: $navbar-dropdown-item-active-color
  230. .navbar-burger
  231. display: none
  232. .navbar-item,
  233. .navbar-link
  234. align-items: center
  235. display: flex
  236. .navbar-item
  237. &.has-dropdown
  238. align-items: stretch
  239. &.is-active,
  240. &.is-hoverable:hover
  241. .navbar-dropdown
  242. display: block
  243. &.is-boxed
  244. opacity: 1
  245. pointer-events: auto
  246. transform: translateY(0)
  247. .navbar-link
  248. &::after
  249. +arrow($navbar-dropdown-arrow)
  250. margin-top: -0.375em
  251. right: 1.125em
  252. top: 50%
  253. .navbar-menu
  254. flex-grow: 1
  255. flex-shrink: 0
  256. .navbar-start
  257. justify-content: flex-start
  258. margin-right: auto
  259. .navbar-end
  260. justify-content: flex-end
  261. margin-left: auto
  262. .navbar-dropdown
  263. background-color: $navbar-dropdown-background-color
  264. border-bottom-left-radius: $navbar-dropdown-radius
  265. border-bottom-right-radius: $navbar-dropdown-radius
  266. border-top: $navbar-dropdown-border-top
  267. box-shadow: 0 8px 8px rgba($black, 0.1)
  268. display: none
  269. font-size: 0.875rem
  270. left: 0
  271. min-width: 100%
  272. position: absolute
  273. top: 100%
  274. z-index: $navbar-dropdown-z
  275. .navbar-item
  276. padding: 0.375rem 1rem
  277. white-space: nowrap
  278. a.navbar-item
  279. padding-right: 3rem
  280. &:hover
  281. background-color: $navbar-dropdown-item-hover-background-color
  282. color: $navbar-dropdown-item-hover-color
  283. &.is-active
  284. background-color: $navbar-dropdown-item-active-background-color
  285. color: $navbar-dropdown-item-active-color
  286. &.is-boxed
  287. border-radius: $navbar-dropdown-boxed-radius
  288. border-top: none
  289. box-shadow: $navbar-dropdown-boxed-shadow
  290. display: block
  291. opacity: 0
  292. pointer-events: none
  293. top: calc(100% + (#{$navbar-dropdown-offset}))
  294. transform: translateY(-5px)
  295. transition-duration: $speed
  296. transition-property: opacity, transform
  297. &.is-right
  298. left: auto
  299. right: 0
  300. .navbar-divider
  301. display: block
  302. .navbar > .container,
  303. .container > .navbar
  304. .navbar-brand
  305. margin-left: -1rem
  306. .navbar-menu
  307. margin-right: -1rem
  308. // Fixed navbar
  309. .navbar
  310. &.is-fixed-bottom-desktop,
  311. &.is-fixed-top-desktop
  312. +navbar-fixed
  313. &.is-fixed-bottom-desktop
  314. bottom: 0
  315. &.is-fixed-top-desktop
  316. top: 0
  317. html.has-navbar-fixed-top-desktop
  318. padding-top: $navbar-height
  319. html.has-navbar-fixed-bottom-desktop
  320. padding-bottom: $navbar-height
  321. // Hover/Active states
  322. a.navbar-item,
  323. .navbar-link
  324. &.is-active
  325. color: $navbar-item-active-color
  326. &.is-active:not(:hover)
  327. background-color: $navbar-item-active-background-color
  328. .navbar-item.has-dropdown
  329. &:hover,
  330. &.is-active
  331. .navbar-link
  332. background-color: $navbar-item-hover-background-color