nav-primary.css

Nav Primary.

File

core/themes/olivero/css/components/navigation/nav-primary.css

View source
  1. /*
  2. * DO NOT EDIT THIS FILE.
  3. * See the following change record for more information,
  4. * https://www.drupal.org/node/3084859
  5. * @preserve
  6. */
  7. /**
  8. * @file
  9. * Nav Primary.
  10. */
  11. .primary-nav__menu {
  12. flex-wrap: wrap;
  13. list-style: none;
  14. }
  15. .primary-nav__menu-item {
  16. margin-bottom: 0.5625rem;
  17. }
  18. .primary-nav__menu-item:last-child {
  19. margin-bottom: 0;
  20. }
  21. .primary-nav__menu-item.primary-nav__menu-item--has-children {
  22. display: flex;
  23. flex-wrap: wrap;
  24. justify-content: space-between;
  25. }
  26. .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--link,
  27. .primary-nav__menu-item.primary-nav__menu-item--has-children .primary-nav__menu-link--nolink {
  28. /* Ensure that long text doesn't make the mobile expand button wrap. */
  29. flex-basis: calc(100% - 3.375rem);
  30. }
  31. .primary-nav__menu-link {
  32. flex-grow: 1;
  33. text-decoration: none;
  34. color: #0d1214;
  35. font-size: 1.75rem;
  36. font-weight: bold;
  37. line-height: 2.25rem;
  38. }
  39. .primary-nav__menu-link:hover {
  40. color: inherit;
  41. }
  42. .primary-nav__menu-link:focus {
  43. outline: auto 2px #2494db;
  44. outline-offset: 2px;
  45. }
  46. [dir="ltr"] .primary-nav__menu-link--nolink {
  47. padding-left: 0;
  48. }
  49. [dir="rtl"] .primary-nav__menu-link--nolink {
  50. padding-right: 0;
  51. }
  52. [dir="ltr"] .primary-nav__menu-link--nolink {
  53. padding-right: 0;
  54. }
  55. [dir="rtl"] .primary-nav__menu-link--nolink {
  56. padding-left: 0;
  57. }
  58. .primary-nav__menu-link--nolink {
  59. padding-top: 0.5625rem;
  60. padding-bottom: 0.5625rem;
  61. color: #6e7172;
  62. font-weight: normal;
  63. }
  64. [dir="ltr"] .primary-nav__menu-link--button {
  65. padding-left: 0;
  66. }
  67. [dir="rtl"] .primary-nav__menu-link--button {
  68. padding-right: 0;
  69. }
  70. [dir="ltr"] .primary-nav__menu-link--button {
  71. padding-right: 0;
  72. }
  73. [dir="rtl"] .primary-nav__menu-link--button {
  74. padding-left: 0;
  75. }
  76. [dir="ltr"] .primary-nav__menu-link--button {
  77. text-align: left;
  78. }
  79. [dir="rtl"] .primary-nav__menu-link--button {
  80. text-align: right;
  81. }
  82. .primary-nav__menu-link--button {
  83. position: relative;
  84. padding-top: 0;
  85. padding-bottom: 0;
  86. cursor: pointer;
  87. border: 0;
  88. background: transparent;
  89. /* Plus icon for mobile navigation. */
  90. }
  91. [dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
  92. padding-right: 3.375rem;
  93. }
  94. [dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
  95. padding-left: 3.375rem;
  96. }
  97. .primary-nav__menu-link--button.primary-nav__menu-link--has-children { /* Ensure text does not overlap icon. */
  98. }
  99. [dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
  100. [dir="ltr"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
  101. right: 0.5625rem;
  102. }
  103. [dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
  104. [dir="rtl"] .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
  105. left: 0.5625rem;
  106. }
  107. .primary-nav__menu-link--button.primary-nav__menu-link--has-children:before,
  108. .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
  109. position: absolute;
  110. top: 1.625rem; /* Visually align button with menu link text. */
  111. width: 1.125rem;
  112. height: 0;
  113. content: "";
  114. /* Intentionally not using CSS logical properties. */
  115. border-top: solid 3px #2494db;
  116. }
  117. .primary-nav__menu-link--button.primary-nav__menu-link--has-children:after {
  118. transition: opacity 0.2s;
  119. transform: rotate(90deg);
  120. }
  121. .primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]:after {
  122. opacity: 0;
  123. }
  124. [dir="ltr"] .primary-nav__menu-link-inner {
  125. padding-left: 0;
  126. }
  127. [dir="rtl"] .primary-nav__menu-link-inner {
  128. padding-right: 0;
  129. }
  130. [dir="ltr"] .primary-nav__menu-link-inner {
  131. padding-right: 0;
  132. }
  133. [dir="rtl"] .primary-nav__menu-link-inner {
  134. padding-left: 0;
  135. }
  136. .primary-nav__menu-link-inner {
  137. position: relative;
  138. display: inline-flex;
  139. align-items: center;
  140. padding-top: 0.5625rem;
  141. padding-bottom: 0.5625rem;
  142. }
  143. [dir="ltr"] .primary-nav__menu-link-inner:after {
  144. left: 0;
  145. }
  146. [dir="rtl"] .primary-nav__menu-link-inner:after {
  147. right: 0;
  148. }
  149. .primary-nav__menu-link-inner:after {
  150. position: absolute;
  151. bottom: 0;
  152. width: 100%;
  153. height: 0;
  154. content: "";
  155. transition: transform 0.2s;
  156. transform: scaleX(0);
  157. transform-origin: left;
  158. /* Intentionally not using CSS logical properties. */
  159. border-top: solid 5px #2494db;
  160. }
  161. .primary-nav__menu-link:hover .primary-nav__menu-link-inner:after {
  162. transform: scaleX(1);
  163. }
  164. /*
  165. Top level specific styles.
  166. */
  167. [dir="ltr"] .primary-nav__menu--level-1 {
  168. margin-left: 0;
  169. }
  170. [dir="rtl"] .primary-nav__menu--level-1 {
  171. margin-right: 0;
  172. }
  173. [dir="ltr"] .primary-nav__menu--level-1 {
  174. margin-right: 0;
  175. }
  176. [dir="rtl"] .primary-nav__menu--level-1 {
  177. margin-left: 0;
  178. }
  179. [dir="ltr"] .primary-nav__menu--level-1 {
  180. padding-left: 0;
  181. }
  182. [dir="rtl"] .primary-nav__menu--level-1 {
  183. padding-right: 0;
  184. }
  185. [dir="ltr"] .primary-nav__menu--level-1 {
  186. padding-right: 0;
  187. }
  188. [dir="rtl"] .primary-nav__menu--level-1 {
  189. padding-left: 0;
  190. }
  191. .primary-nav__menu--level-1 {
  192. margin-top: 0;
  193. margin-bottom: 0;
  194. padding-top: 0;
  195. padding-bottom: 0;
  196. }
  197. .primary-nav__menu-link--level-1 {
  198. position: relative;
  199. display: flex;
  200. letter-spacing: -1px;
  201. }
  202. /*
  203. Secondary menu specific styles.
  204. */
  205. [dir="ltr"] .primary-nav__menu--level-2 {
  206. margin-left: -1.125rem;
  207. }
  208. [dir="rtl"] .primary-nav__menu--level-2 {
  209. margin-right: -1.125rem;
  210. }
  211. [dir="ltr"] .primary-nav__menu--level-2 {
  212. padding-left: 2.8125rem;
  213. }
  214. [dir="rtl"] .primary-nav__menu--level-2 {
  215. padding-right: 2.8125rem;
  216. }
  217. [dir="ltr"] .primary-nav__menu--level-2 {
  218. border-left: solid 1.125rem #2494db;
  219. }
  220. [dir="rtl"] .primary-nav__menu--level-2 {
  221. border-right: solid 1.125rem #2494db;
  222. }
  223. .primary-nav__menu--level-2 {
  224. visibility: hidden;
  225. overflow: hidden;
  226. flex-basis: 100%;
  227. max-height: 0;
  228. margin-top: 0;
  229. margin-bottom: 0;
  230. transition: opacity 0.2s, visibility 0.2s, max-height 0.2s;
  231. opacity: 0;
  232. }
  233. .primary-nav__menu--level-2.is-active-menu-parent {
  234. visibility: visible;
  235. max-height: none;
  236. margin-top: 1.6875rem;
  237. opacity: 1;
  238. }
  239. @media (min-width: 43.75rem) {
  240. [dir="ltr"] .primary-nav__menu--level-2 {
  241. margin-left: -3.375rem;
  242. }
  243. [dir="rtl"] .primary-nav__menu--level-2 {
  244. margin-right: -3.375rem;
  245. }
  246. [dir="ltr"] .primary-nav__menu--level-2 {
  247. padding-left: 3.375rem;
  248. }
  249. [dir="rtl"] .primary-nav__menu--level-2 {
  250. padding-right: 3.375rem;
  251. }
  252. }
  253. /*
  254. * Olivero doesn't officially support nested tertiary submenus, but this
  255. * ensures that it doesn't break all the way.
  256. *
  257. * @see https://www.drupal.org/project/drupal/issues/3221399
  258. */
  259. .primary-nav__menu--level-2 .primary-nav__menu-item--has-children {
  260. display: block;
  261. }
  262. .primary-nav__menu-link--level-2 {
  263. font-size: 1rem;
  264. font-weight: normal;
  265. line-height: 1.125rem;
  266. }
  267. html:not(.js) .primary-nav__menu--level-2 {
  268. visibility: visible;
  269. max-height: none;
  270. opacity: 1;
  271. }
  272. [dir="rtl"] .primary-nav__menu-link-inner:after {
  273. transform-origin: right;
  274. }

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.