mirror of
https://github.com/WordPress/WordPress.git
synced 2024-11-15 07:05:37 +01:00
232277586f
Fixes the issue of long submenu item titles that do not wrap by adding a `max-width: 20rem;` and removing `white-space: nowrap;`. Props kjellr, mukesh27, mohsinrasool, samful. Fixes #45866. Built from https://develop.svn.wordpress.org/trunk@48032 git-svn-id: http://core.svn.wordpress.org/trunk@47799 1a063a9b-81f0-0310-95a4-ce76da25c4cd
507 lines
8.5 KiB
SCSS
507 lines
8.5 KiB
SCSS
/** === Main menu === */
|
||
|
||
.main-navigation {
|
||
|
||
display: block;
|
||
margin-top: #{0.25 * $size__spacing-unit};
|
||
|
||
body.page & {
|
||
display: block;
|
||
}
|
||
|
||
> div {
|
||
display: inline;
|
||
}
|
||
|
||
/* Un-style buttons */
|
||
button {
|
||
display: inline-block;
|
||
border: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
font-family: $font__heading;
|
||
font-weight: 700;
|
||
line-height: $font__line-height-heading;
|
||
text-decoration: none;
|
||
background: transparent;
|
||
color: inherit;
|
||
cursor: pointer;
|
||
transition:
|
||
background 250ms ease-in-out,
|
||
transform 150ms ease;
|
||
-webkit-appearance: none;
|
||
-moz-appearance: none;
|
||
|
||
&:hover,
|
||
&:focus {
|
||
background: transparent;
|
||
}
|
||
|
||
&:focus {
|
||
outline: 1px solid transparent;
|
||
outline-offset: -4px;
|
||
}
|
||
|
||
&:active {
|
||
transform: scale(0.99);
|
||
}
|
||
}
|
||
|
||
.main-menu {
|
||
|
||
display: inline-block;
|
||
margin: 0;
|
||
padding: 0;
|
||
|
||
> li {
|
||
|
||
color: $color__link;
|
||
display: inline;
|
||
position: relative;
|
||
|
||
> a {
|
||
|
||
font-weight: 700;
|
||
color: $color__link;
|
||
margin-right: #{0.5 * $size__spacing-unit};
|
||
|
||
+ svg {
|
||
margin-right: #{0.5 * $size__spacing-unit};
|
||
}
|
||
|
||
&:hover,
|
||
&:hover + svg {
|
||
color: $color__link-hover;
|
||
}
|
||
}
|
||
|
||
&.menu-item-has-children {
|
||
|
||
display: inline-block;
|
||
position: inherit;
|
||
|
||
@include media(tablet) {
|
||
position: relative;
|
||
}
|
||
|
||
> a {
|
||
margin-right: #{0.125 * $size__spacing-unit};
|
||
}
|
||
|
||
& > a,
|
||
.menu-item-has-children > a {
|
||
|
||
&:after {
|
||
content: "";
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
.submenu-expand {
|
||
|
||
display: inline-block;
|
||
margin-right: #{0.25 * $size__spacing-unit};
|
||
|
||
/* Priority+ Menu */
|
||
&.main-menu-more-toggle {
|
||
|
||
position: relative;
|
||
height: 24px;
|
||
line-height: $font__line-height-heading;
|
||
width: 24px;
|
||
padding: 0;
|
||
margin-left: #{0.5 * $size__spacing-unit};
|
||
|
||
svg {
|
||
height: 24px;
|
||
width: 24px;
|
||
top: #{-0.125 * $size__spacing-unit};
|
||
vertical-align: text-bottom;
|
||
}
|
||
}
|
||
|
||
.wp-customizer-unloading &,
|
||
&.is-empty {
|
||
display: none;
|
||
}
|
||
|
||
svg {
|
||
position: relative;
|
||
top: 0.2rem;
|
||
}
|
||
}
|
||
}
|
||
|
||
&:last-child > a,
|
||
&:last-child.menu-item-has-children .submenu-expand {
|
||
margin-right: 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
.sub-menu {
|
||
|
||
background-color: $color__link;
|
||
color: $color__background-body;
|
||
list-style: none;
|
||
padding-left: 0;
|
||
|
||
position: absolute;
|
||
opacity: 0;
|
||
left: -9999px;
|
||
z-index: 99999;
|
||
|
||
@include media(tablet) {
|
||
width: auto;
|
||
min-width: -moz-max-content;
|
||
min-width: -webkit-max-content;
|
||
min-width: max-content;
|
||
}
|
||
|
||
> li {
|
||
|
||
display: block;
|
||
float: none;
|
||
position: relative;
|
||
|
||
&.menu-item-has-children {
|
||
|
||
.submenu-expand {
|
||
display: inline-block;
|
||
position: absolute;
|
||
width: calc( 24px + #{$size__spacing-unit} );
|
||
right: 0;
|
||
top: calc( .125 * #{$size__spacing-unit} );
|
||
bottom: 0;
|
||
color: white;
|
||
line-height: 1;
|
||
padding: calc( .5 * #{$size__spacing-unit} );
|
||
|
||
svg {
|
||
top: 0;
|
||
}
|
||
}
|
||
|
||
.submenu-expand {
|
||
margin-right: 0;
|
||
}
|
||
|
||
@include media(tablet) {
|
||
|
||
.menu-item-has-children > a {
|
||
|
||
&:after {
|
||
content: "\203a";
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
> a,
|
||
> .menu-item-link-return {
|
||
|
||
color: $color__background-body;
|
||
display: block;
|
||
line-height: $font__line-height-heading;
|
||
text-shadow: none;
|
||
padding: calc( .5 * #{$size__spacing-unit} ) calc( 24px + #{$size__spacing-unit} ) calc( .5 * #{$size__spacing-unit} ) $size__spacing-unit;
|
||
max-width: #{20 * $size__spacing-unit};
|
||
|
||
&:hover,
|
||
&:focus {
|
||
background: $color__link-hover;
|
||
|
||
&:after {
|
||
background: $color__link-hover;
|
||
}
|
||
}
|
||
}
|
||
|
||
> .menu-item-link-return {
|
||
width: 100%;
|
||
font-size: $font__size_base;
|
||
font-weight: normal;
|
||
text-align: left;
|
||
}
|
||
|
||
> a:empty {
|
||
display: none;
|
||
}
|
||
|
||
&.mobile-parent-nav-menu-item {
|
||
|
||
display: none;
|
||
font-size: $font__size-sm;
|
||
font-weight: normal;
|
||
|
||
svg {
|
||
position: relative;
|
||
top: 0.2rem;
|
||
margin-right: calc( .25 * #{$size__spacing-unit} );
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
/*
|
||
* Sub-menu styles
|
||
*
|
||
* :focus-within needs its own selector so other similar
|
||
* selectors don’t get ignored if a browser doesn’t recognize it
|
||
*/
|
||
.main-menu .menu-item-has-children:not(.off-canvas):focus-within > .sub-menu {
|
||
|
||
display: block;
|
||
left: 0;
|
||
margin-top: 0;
|
||
opacity: 1;
|
||
width: auto;
|
||
min-width: 100%;
|
||
|
||
|
||
/* Non-mobile position */
|
||
@include media(tablet) {
|
||
display: block;
|
||
margin-top: 0;
|
||
opacity: 1;
|
||
position: absolute;
|
||
left: 0;
|
||
right: auto;
|
||
top: auto;
|
||
bottom: auto;
|
||
height: auto;
|
||
min-width: -moz-max-content;
|
||
min-width: -webkit-max-content;
|
||
min-width: max-content;
|
||
transform: none;
|
||
}
|
||
|
||
&.hidden-links {
|
||
left: 0;
|
||
width: 100%;
|
||
display: table;
|
||
position: absolute;
|
||
|
||
@include media(tablet) {
|
||
right: 0;
|
||
left: auto;
|
||
display: block;
|
||
width: max-content;
|
||
}
|
||
}
|
||
|
||
.submenu-expand {
|
||
display: none;
|
||
}
|
||
|
||
.sub-menu {
|
||
display: block;
|
||
margin-top: inherit;
|
||
position: relative;
|
||
width: 100%;
|
||
left: 0;
|
||
opacity: 1;
|
||
|
||
/* Non-mobile position */
|
||
@include media(tablet) {
|
||
float: none;
|
||
max-width: 100%;
|
||
}
|
||
}
|
||
|
||
/* Nested sub-menu dashes */
|
||
.sub-menu {
|
||
counter-reset: submenu;
|
||
}
|
||
|
||
.sub-menu > li > a::before {
|
||
font-family: $font__body;
|
||
font-weight: normal;
|
||
content: "\2013\00a0" counters(submenu, "\2013\00a0", none);
|
||
counter-increment: submenu
|
||
}
|
||
}
|
||
|
||
.main-menu .menu-item-has-children:not(.off-canvas):hover > .sub-menu,
|
||
.main-menu .menu-item-has-children:not(.off-canvas):focus > .sub-menu,
|
||
.main-menu .menu-item-has-children.is-focused:not(.off-canvas) > .sub-menu {
|
||
|
||
display: block;
|
||
left: 0;
|
||
margin-top: 0;
|
||
opacity: 1;
|
||
width: auto;
|
||
min-width: 100%;
|
||
|
||
|
||
/* Non-mobile position */
|
||
@include media(tablet) {
|
||
display: block;
|
||
float: none;
|
||
margin-top: 0;
|
||
opacity: 1;
|
||
position: absolute;
|
||
left: 0;
|
||
right: auto;
|
||
top: auto;
|
||
bottom: auto;
|
||
height: auto;
|
||
min-width: -moz-max-content;
|
||
min-width: -webkit-max-content;
|
||
min-width: max-content;
|
||
transform: none;
|
||
}
|
||
|
||
&.hidden-links {
|
||
left: 0;
|
||
width: 100%;
|
||
display: table;
|
||
position: absolute;
|
||
|
||
@include media(tablet) {
|
||
right: 0;
|
||
left: auto;
|
||
display: table;
|
||
width: max-content;
|
||
}
|
||
}
|
||
|
||
.submenu-expand {
|
||
display: none;
|
||
}
|
||
|
||
.sub-menu {
|
||
display: block;
|
||
margin-top: inherit;
|
||
position: relative;
|
||
width: 100%;
|
||
left: 0;
|
||
opacity: 1;
|
||
|
||
/* Non-mobile position */
|
||
@include media(tablet) {
|
||
float: none;
|
||
max-width: 100%;
|
||
}
|
||
}
|
||
|
||
/* Nested sub-menu dashes */
|
||
.sub-menu {
|
||
counter-reset: submenu;
|
||
}
|
||
|
||
.sub-menu > li > a::before {
|
||
font-family: $font__body;
|
||
font-weight: normal;
|
||
content: "\2013\00a0" counters(submenu, "\2013\00a0", none);
|
||
counter-increment: submenu
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Fade-in animation for top-level submenus
|
||
*/
|
||
.main-menu > .menu-item-has-children:not(.off-canvas):hover > .sub-menu {
|
||
animation: fade_in 0.1s forwards;
|
||
}
|
||
|
||
/**
|
||
* Off-canvas touch device styles
|
||
*/
|
||
.main-menu .menu-item-has-children.off-canvas .sub-menu {
|
||
|
||
.submenu-expand .svg-icon {
|
||
transform: rotate(270deg);
|
||
}
|
||
|
||
.sub-menu {
|
||
opacity: 0;
|
||
position: absolute;
|
||
z-index: 0;
|
||
transform: translateX(-100%);
|
||
}
|
||
|
||
li:hover,
|
||
li:focus,
|
||
li > a:hover,
|
||
li > a:focus {
|
||
background-color: transparent;
|
||
}
|
||
|
||
> li > a,
|
||
> li > .menu-item-link-return {
|
||
white-space: inherit;
|
||
}
|
||
|
||
&.expanded-true {
|
||
|
||
display: table;
|
||
margin-top: 0;
|
||
opacity: 1;
|
||
padding-left: 0;
|
||
|
||
/* Mobile position */
|
||
left: 0;
|
||
top: 0;
|
||
right: 0;
|
||
bottom: 0;
|
||
position: fixed;
|
||
z-index: 100000; /* Make sure appears above mobile admin bar */
|
||
width: 100vw;
|
||
height: 100vh;
|
||
max-width: 100vw;
|
||
transform: translateX(+100%);
|
||
animation: slide_in_right 0.3s forwards;
|
||
|
||
> .mobile-parent-nav-menu-item {
|
||
display: block;
|
||
}
|
||
|
||
/* Prevent menu from being blocked by admin bar */
|
||
.admin-bar & {
|
||
top: 46px;
|
||
height: calc( 100vh - 46px );
|
||
|
||
.sub-menu.expanded-true {
|
||
top: 0;
|
||
}
|
||
|
||
/* WP core breakpoint */
|
||
@media only screen and ( min-width: 782px ) {
|
||
top: 32px;
|
||
height: calc( 100vh - 32px );
|
||
|
||
.sub-menu.expanded-true {
|
||
top: 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
// Hide duplicate menu-more-link when re-loading a menu in the customizer
|
||
.main-menu-more {
|
||
&:nth-child(n+3) {
|
||
display: none;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/* Menu animation */
|
||
|
||
@keyframes slide_in_right {
|
||
100% {
|
||
transform: translateX(0%);
|
||
}
|
||
}
|
||
|
||
@keyframes fade_in {
|
||
from {
|
||
opacity: 0;
|
||
}
|
||
to {
|
||
opacity: 1;
|
||
}
|
||
}
|