top-navbar.scss 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329
  1. /* ========================================================================
  2. Component: top-navbar
  3. ========================================================================== */
  4. //
  5. // Horizontal top navbar
  6. // based on the bootstrap navbar styles and markup
  7. // ----------------------------------------------------
  8. $nav-header-wd: $aside-wd;
  9. $nav-header-wd-toggled: $aside-wd-collapsed;
  10. $nav-header-wd-toggled-text: $aside-wd-collapsed-text;
  11. $nav-top-bg: #6FB9DE;
  12. $nav-top-bg-start: $nav-top-bg;
  13. $nav-top-bg-end: $info-light;
  14. $nav-header-bg: transparent;
  15. $nav-top-item-mobile: $nav-top-bg;
  16. $nav-top-item-mobile-active: darken($nav-top-item-mobile, 20%);
  17. $nav-top-item-desktop: #fff;
  18. $nav-top-item-desktop-active: $nav-top-item-mobile-active;
  19. // Navbar top layout
  20. .topnavbar {
  21. -webkit-backface-visibility: hidden; /* fixes chrome jump */
  22. margin-bottom: 0;
  23. border-radius: 0;
  24. z-index: 1050;
  25. border: 0;
  26. padding: 0;
  27. min-height: $navbar-height;
  28. background-color: $nav-top-bg;
  29. @include gradient-x($nav-top-bg-start, $nav-top-bg-end); // // dont' allow stacked icons
  30. @include media-breakpoint-up(md) {
  31. .navbar-header {
  32. width: $nav-header-wd;
  33. text-align: center;
  34. .navbar-brand {
  35. width: 100%;
  36. }
  37. }
  38. }
  39. }
  40. // Navbar Mobile General styles
  41. // ------------------------------
  42. .topnavbar {
  43. position: relative;
  44. .navbar-header {
  45. background-color: $nav-header-bg;
  46. }
  47. .navbar-header {
  48. position: relative;
  49. z-index: 11;
  50. padding-left: 2rem;
  51. @include media-breakpoint-up(md) {
  52. padding-left: 0;
  53. } // Reset default to allow handle via different logo size
  54. .navbar-brand {
  55. padding: 0;
  56. } // Different Logo size depends on the navbar state
  57. .brand-logo,
  58. .brand-logo-collapsed {
  59. >img {
  60. margin: 0 auto;
  61. }
  62. }
  63. .brand-logo {
  64. display: block;
  65. padding: 10px 15px;
  66. }
  67. .brand-logo-collapsed {
  68. display: none;
  69. padding: 6px 15px;
  70. }
  71. }
  72. .dropdown {
  73. position: static; // allow header to be parent of dropdown
  74. .dropdown-menu {
  75. position: absolute;
  76. margin-top: 0; // close to header
  77. top: auto;
  78. left: 0;
  79. right: 0;
  80. }
  81. } // Top navbar dropdown on desktop
  82. @include media-breakpoint-up(sm) {
  83. .dropdown {
  84. position: relative;
  85. .dropdown-menu {
  86. // standard left alignment
  87. top: $navbar-height - 1;
  88. left: 0;
  89. right: auto;
  90. } // redefined since we don't used navbar-expand-* class
  91. .dropdown-menu-right {
  92. right: 0;
  93. left: auto;
  94. }
  95. }
  96. }
  97. .navbar-nav>.nav-item>.navbar-text {
  98. color: $nav-top-item-desktop;
  99. }
  100. .navbar-nav>.nav-item>.nav-link {
  101. padding: 1.1rem .95rem;
  102. font-size: .85rem;
  103. }
  104. .navbar-nav>.nav-item>.nav-link,
  105. .navbar-nav>.nav-item.show>.nav-link {
  106. color: $nav-top-item-desktop;
  107. &:hover,
  108. &:focus {
  109. color: $nav-top-item-desktop-active;
  110. }
  111. } // Navbar link active style
  112. .navbar-nav>.nav-item.active>.nav-link,
  113. .navbar-nav>.nav-item.show>.nav-link {
  114. &,
  115. &:hover,
  116. &:focus {
  117. display: inline-block;
  118. box-shadow: 0 -3px 0 rgba(0,0,0,.125) inset;
  119. background-color: transparent;
  120. @include transition(all .2s);
  121. }
  122. } // the button to toggle search
  123. .navbar-nav>li>[data-toggle='navbar-search'] {
  124. position: absolute;
  125. top: 0;
  126. right: 0;
  127. z-index: 20;
  128. font-size: 16px;
  129. line-height: $navbar-height;
  130. color: #fff;
  131. padding-top: 0;
  132. padding-bottom: 0;
  133. @include transition(color .3s ease);
  134. @include media-breakpoint-up(md) {
  135. color: $nav-top-item-desktop;
  136. }
  137. }
  138. @include media-breakpoint-down(sm) {
  139. .navbar-text {
  140. margin: 10px;
  141. }
  142. }
  143. }
  144. // Customize header for horizontal layout
  145. .layout-h {
  146. .topnavbar {
  147. // flex-flow: wrap;
  148. .navbar-header {
  149. display: flex;
  150. width: 100%;
  151. padding: 0;
  152. text-align: left;
  153. @include media-breakpoint-up(lg) {
  154. width: auto;
  155. }
  156. .navbar-brand {
  157. min-height: $navbar-height;
  158. }
  159. }
  160. .navbar-toggler {
  161. border: 0;
  162. margin-left: auto;
  163. .navbar-toggler-icon {
  164. $button-toggler-icon-color: rgba(255, 255, 255, 0.75);
  165. background-image: url("data:image/svg+xml;charset=utf8,<svg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'><path stroke='#{$button-toggler-icon-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/></svg>");
  166. }
  167. }
  168. // make menu full size
  169. .dropdown-menu {
  170. @include media-breakpoint-down(md) {
  171. left: 0 !important;
  172. right: 0 !important;
  173. }
  174. }
  175. .navbar-form {
  176. left: 0;
  177. }
  178. }
  179. }
  180. @include media-breakpoint-down(sm) {
  181. .sidebar-toggle {
  182. position: absolute !important;
  183. top: 2px;
  184. left: 0;
  185. z-index: 3001; // Add color only for the icon
  186. >em {
  187. color: white;
  188. }
  189. }
  190. }
  191. // Navbar Search Form
  192. // ------------------------------
  193. .topnavbar {
  194. .navbar-form {
  195. position: absolute;
  196. top: -100%;
  197. left: 0;
  198. right: 0;
  199. margin: 0;
  200. padding: 0;
  201. height: $navbar-height;
  202. z-index: 9001;
  203. transition: all .3s;
  204. border: 0;
  205. border-bottom: 1px solid #e1e2e3;
  206. .form-group {
  207. height: 100%;
  208. width: 100%;
  209. }
  210. .form-control {
  211. height: 100%;
  212. border: 0;
  213. border-radius: 0;
  214. width: 100%;
  215. }
  216. &.open {
  217. top: 0;
  218. } // re locate and center feedback
  219. .navbar-form-close {
  220. position: absolute;
  221. height: 30px;
  222. cursor: pointer;
  223. top: 50%;
  224. right: 0;
  225. margin-top: -15px;
  226. line-height: 30px;
  227. margin-right: 10px;
  228. color: #c1c2c3;
  229. font-size: 1.5em;
  230. pointer-events: auto; // make icon clickable
  231. }
  232. }
  233. @include media-breakpoint-up(sm) {
  234. .navbar-form {
  235. left: $nav-header-wd;
  236. }
  237. }
  238. }
  239. // Navbar Desktop styles
  240. // ------------------------------
  241. @include media-breakpoint-up(lg) {
  242. // Navbar top styles
  243. .topnavbar {
  244. .navbar-nav>.nav-item.show>.nav-link {
  245. &,
  246. &:hover,
  247. &:focus {
  248. box-shadow: 0 -3px 0 darken($nav-top-bg, 6%) inset;
  249. @include transition(all .2s);
  250. }
  251. }
  252. } // .topnavbar
  253. }
  254. @include media-breakpoint-up(md) {
  255. .aside-collapsed {
  256. .topnavbar {
  257. .navbar-header {
  258. .brand-logo {
  259. display: none;
  260. }
  261. .brand-logo-collapsed {
  262. display: block;
  263. }
  264. }
  265. .navbar-header {
  266. width: $nav-header-wd-toggled;
  267. }
  268. .navbar-form {
  269. left: $nav-header-wd-toggled;
  270. }
  271. }
  272. }
  273. }
  274. // Header on aside collapsed with Text
  275. @include media-breakpoint-up(md) {
  276. .aside-collapsed-text {
  277. .topnavbar {
  278. .navbar-header {
  279. .brand-logo {
  280. display: none;
  281. }
  282. .brand-logo-collapsed {
  283. display: block;
  284. }
  285. }
  286. .navbar-header {
  287. width: $nav-header-wd-toggled-text;
  288. }
  289. .navbar-form {
  290. left: $nav-header-wd-toggled-text;
  291. }
  292. }
  293. }
  294. }