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

Breadcrumb

  1. Drupal Core 11.1.x

nav-primary-button.pcss.css

Button that expands second level nav when clicked.

File

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

View source
  1. /**
  2. * @file
  3. * Button that expands second level nav when clicked.
  4. */
  5. @import "../../base/media-queries.pcss.css";
  6. .primary-nav__button-toggle {
  7. position: relative;
  8. overflow: hidden;
  9. width: var(--sp2);
  10. height: var(--sp2);
  11. margin-block-start: var(--sp0-5); /* Visually align button with menu link text. */
  12. padding-block: 0;
  13. padding-inline-start: 0;
  14. padding-inline-end: 0;
  15. cursor: pointer;
  16. text-indent: -999px;
  17. border: 0;
  18. background: transparent;
  19. -webkit-appearance: none;
  20. &:focus {
  21. outline: auto 2px var(--color--primary-50);
  22. outline-offset: 2px;
  23. }
  24. & .icon--menu-toggle {
  25. position: absolute;
  26. /* stylelint-disable csstools/use-logical */
  27. top: 50%;
  28. left: 50%;
  29. /* stylelint-enable csstools/use-logical */
  30. width: 16px;
  31. height: 16px;
  32. transition: background-color 0.2s;
  33. transform: translate(-50%, -50%);
  34. border-radius: 2px;
  35. &::before,
  36. &::after {
  37. position: absolute;
  38. /* stylelint-disable csstools/use-logical */
  39. top: 50%;
  40. left: 50%;
  41. /* stylelint-enable csstools/use-logical */
  42. width: var(--sp);
  43. height: 0;
  44. content: "";
  45. transform: translate(-50%, -50%);
  46. /* Intentionally not using CSS logical properties. */
  47. border-top: solid 3px var(--color--primary-50);
  48. }
  49. &::after {
  50. transition: opacity 0.2s;
  51. transform: translate(-50%, -50%) rotate(90deg);
  52. }
  53. }
  54. &[aria-expanded="true"] .icon--menu-toggle::after {
  55. opacity: 0;
  56. }
  57. /* aria-hidden attribute is removed by JS. Button is non-functional
  58. until JS is enabled.
  59. */
  60. &[aria-hidden="true"] {
  61. pointer-events: none;
  62. }
  63. }
  64. body:not(.is-always-mobile-nav) {
  65. @media (--nav) {
  66. & .primary-nav__button-toggle {
  67. flex-shrink: 0;
  68. align-self: stretch;
  69. width: calc(var(--sp2) + 8px);
  70. height: auto;
  71. margin-block-start: 0;
  72. margin-inline-end: calc(-1 * var(--sp2));
  73. &:focus {
  74. border: 0;
  75. outline: 0;
  76. & .icon--menu-toggle {
  77. border: solid 2px var(--color--primary-40);
  78. }
  79. }
  80. &:active {
  81. /* Necessary for Safari. */
  82. color: currentColor;
  83. }
  84. &[aria-expanded="true"] .icon--menu-toggle::after {
  85. opacity: 0.8;
  86. }
  87. & .icon--menu-toggle {
  88. inset-inline-start: 3px;
  89. width: 18px;
  90. transform: translateY(-50%);
  91. border-radius: 4px;
  92. background-color: var(--color--white);
  93. &::before {
  94. content: none;
  95. }
  96. &::after {
  97. /* stylelint-disable csstools/use-logical */
  98. top: calc(50% - 2px);
  99. left: 3px;
  100. /* stylelint-enable csstools/use-logical */
  101. width: 8px;
  102. height: 8px;
  103. content: "";
  104. transform: translateY(-50%) rotate(45deg);
  105. opacity: 0.8;
  106. /* Intentionally not using CSS logical properties. */
  107. border-top: none;
  108. border-right: solid 2px currentColor;
  109. border-bottom: solid 2px currentColor;
  110. background: transparent;
  111. }
  112. }
  113. }
  114. }
  115. }
RSS feed
Powered by Drupal