Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x

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-block-end: var(--sp0-5);
  17. }
  18. .primary-nav__menu-item:last-child {
  19. margin-block-end: 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% - var(--sp3));
  30. }
  31. .primary-nav__menu-link {
  32. flex-grow: 1;
  33. -webkit-text-decoration: none;
  34. text-decoration: none;
  35. color: var(--color-text-neutral-loud);
  36. font-size: 1.75rem;
  37. font-weight: bold;
  38. line-height: var(--sp2);
  39. }
  40. .primary-nav__menu-link:hover {
  41. color: inherit;
  42. }
  43. .primary-nav__menu-link:focus {
  44. outline: auto 2px var(--color--primary-50);
  45. outline-offset: 2px;
  46. }
  47. .primary-nav__menu-link--nolink {
  48. padding-block: var(--sp0-5);
  49. padding-inline-start: 0;
  50. padding-inline-end: 0;
  51. color: var(--color-text-neutral-soft);
  52. font-weight: normal;
  53. }
  54. .primary-nav__menu-link--button {
  55. position: relative;
  56. padding-block: 0;
  57. padding-inline-start: 0;
  58. padding-inline-end: 0;
  59. cursor: pointer;
  60. text-align: start;
  61. border: 0;
  62. background: transparent;
  63. /* Plus icon for mobile navigation. */
  64. }
  65. .primary-nav__menu-link--button.primary-nav__menu-link--has-children {
  66. padding-inline-end: var(--sp3); /* Ensure text does not overlap icon. */
  67. }
  68. .primary-nav__menu-link--button.primary-nav__menu-link--has-children::before,
  69. .primary-nav__menu-link--button.primary-nav__menu-link--has-children::after {
  70. position: absolute;
  71. inset-inline-end: 0.5625rem;
  72. inset-block-start: calc(var(--sp0-5) + 1.0625rem); /* Visually align button with menu link text. */
  73. width: 1.125rem;
  74. height: 0;
  75. content: "";
  76. /* Intentionally not using CSS logical properties. */
  77. border-top: solid 3px var(--color--primary-50);
  78. }
  79. .primary-nav__menu-link--button.primary-nav__menu-link--has-children::after {
  80. transition: opacity 0.2s;
  81. transform: rotate(90deg);
  82. }
  83. .primary-nav__menu-link--button.primary-nav__menu-link--has-children[aria-expanded="true"]::after {
  84. opacity: 0;
  85. }
  86. .primary-nav__menu-link-inner {
  87. position: relative;
  88. display: inline-flex;
  89. align-items: center;
  90. padding-block: var(--sp0-5);
  91. padding-inline-start: 0;
  92. padding-inline-end: 0;
  93. }
  94. .primary-nav__menu-link-inner::after {
  95. position: absolute;
  96. inset-block-end: 0;
  97. inset-inline-start: 0;
  98. width: 100%;
  99. height: 0;
  100. content: "";
  101. transition: transform 0.2s;
  102. transform: scaleX(0);
  103. transform-origin: left;
  104. /* Intentionally not using CSS logical properties. */
  105. border-top: solid 5px var(--color--primary-50);
  106. }
  107. .primary-nav__menu-link:hover .primary-nav__menu-link-inner::after {
  108. transform: scaleX(1);
  109. }
  110. /*
  111. Top level specific styles.
  112. */
  113. .primary-nav__menu--level-1 {
  114. margin-block: 0;
  115. margin-inline-start: 0;
  116. margin-inline-end: 0;
  117. padding-block: 0;
  118. padding-inline-start: 0;
  119. padding-inline-end: 0;
  120. }
  121. .primary-nav__menu-link--level-1 {
  122. position: relative;
  123. display: flex;
  124. letter-spacing: -1px;
  125. }
  126. /*
  127. Secondary menu specific styles.
  128. */
  129. .primary-nav__menu--level-2 {
  130. visibility: hidden;
  131. overflow: hidden;
  132. flex-basis: 100%;
  133. max-height: 0;
  134. margin-block: 0;
  135. margin-inline-start: calc(-1 * var(--sp));
  136. padding-inline-start: var(--sp2-5);
  137. transition:
  138. opacity 0.2s,
  139. visibility 0.2s,
  140. max-height 0.2s;
  141. opacity: 0;
  142. border-inline-start: solid var(--sp) var(--color--primary-50);
  143. }
  144. .primary-nav__menu--level-2.is-active-menu-parent {
  145. visibility: visible;
  146. max-height: none;
  147. margin-block-start: var(--sp1-5);
  148. opacity: 1;
  149. }
  150. .primary-nav__menu--level-2 .primary-nav__menu-item--level-2:first-child {
  151. padding-block-start: var(--sp0-25);
  152. }
  153. .primary-nav__menu--level-2 .primary-nav__menu-item--level-2:last-child {
  154. padding-block-end: var(--sp0-25);
  155. }
  156. @media (min-width: 43.75rem) {
  157. .primary-nav__menu--level-2 {
  158. margin-inline-start: calc(-1 * var(--sp3));
  159. padding-inline-start: var(--sp3);
  160. }
  161. }
  162. /*
  163. * Olivero doesn't officially support nested tertiary submenus, but this
  164. * ensures that it doesn't break all the way.
  165. *
  166. * @see https://www.drupal.org/project/drupal/issues/3221399
  167. */
  168. .primary-nav__menu--level-2 .primary-nav__menu-item--has-children {
  169. display: block;
  170. }
  171. .primary-nav__menu-link--level-2 {
  172. font-size: 1rem;
  173. font-weight: normal;
  174. line-height: var(--sp);
  175. }
  176. html:not(.js) .primary-nav__menu--level-2 {
  177. visibility: visible;
  178. max-height: none;
  179. opacity: 1;
  180. }
  181. [dir="rtl"] .primary-nav__menu-link-inner::after {
  182. transform-origin: right;
  183. }
RSS feed
Powered by Drupal