Skip to content
Snippets Groups Projects
nav.sass 6.6 KiB
Newer Older
@keyframes showIn
    0%
        opacity: 0
    100%
        opacity: 1
    0%
        opacity: 0

alexisben's avatar
alexisben committed
.menu
Olivia206's avatar
Olivia206 committed
    @include media-breakpoint-down(md)
        -webkit-flex-basis: 100vw
        display: none
        flex-basis: 100vw
        margin-top: 1.875rem
        max-height: 70vh
        overflow: auto
alexisben's avatar
alexisben committed
    a,
    a:focus,
    a:active
Olivia206's avatar
Olivia206 committed
        @include link($header-color)
    span
        color: $header-color
alexisben's avatar
alexisben committed
    ul
        list-style: none
        margin: 0
        padding: 0
    a,
    span
        font-size: px2rem(18)
        line-height: px2rem(26)
alexisben's avatar
alexisben committed
        cursor: pointer
        transition: text-decoration 0.15s
        &:not(:hover)
            text-decoration-color: transparent
        &[aria-expanded]
alexisben's avatar
alexisben committed
            @include icon(caret, after)
alexisben's avatar
alexisben committed
                font-size: px2rem(6)
                margin-left: px2rem(5)
                transition: transform  0.15s
            &[aria-expanded="true"]
                &::after
                    transform: rotate(180deg)

Olivia206's avatar
Olivia206 committed
        @include media-breakpoint-up(md)
            a:hover,
            a:focus
                color: $header-hover-color
alexisben's avatar
alexisben committed

    .dropdown-menu
        display: none
        background: $header-dropdown-background
alexisben's avatar
alexisben committed
        @include media-breakpoint-down(md)
            padding-bottom: $spacing1
Olivia206's avatar
Olivia206 committed
        @include media-breakpoint-up(md)
alexisben's avatar
alexisben committed
            padding: $spacing1
Olivia206's avatar
Olivia206 committed
            position: absolute
        a
            color: $header-dropdown-color 
alexisben's avatar
alexisben committed
            &:hover,
            &:focus
                text-decoration-color: $header-dropdown-color
alexisben's avatar
alexisben committed

    .nav-level-1
        display: flex
alexisben's avatar
alexisben committed
        > li
alexisben's avatar
alexisben committed
            > a, span
alexisben's avatar
alexisben committed
                display: block
                padding: calc(#{$spacing0} * 0.5) $spacing0
alexisben's avatar
alexisben committed
            &:last-child 
                a, span
                    padding-right: 0
alexisben's avatar
alexisben committed
        li.has-children
alexisben's avatar
alexisben committed
            [aria-expanded="true"] + .dropdown-menu
alexisben's avatar
alexisben committed
                display: block
                animation-duration: $header-dropdown-transition
                animation-fill-mode: both
                animation-name: showIn
alexisben's avatar
alexisben committed

    .nav-level-2
        > li
alexisben's avatar
alexisben committed
            > a,
            > span
alexisben's avatar
alexisben committed
                font-size: px2rem(16)
                line-height: px2rem(26)
                @include media-breakpoint-up(lg)
                    font-size: px2rem(18)

    .nav-level-3
alexisben's avatar
alexisben committed
        display: block
alexisben's avatar
alexisben committed
        a,
        span
            font-size: px2rem(14)
alexisben's avatar
alexisben committed

alexisben's avatar
alexisben committed
    @include media-breakpoint-up(md)
        @if $header-dropdown-full
            .dropdown-menu
                inset: 100% 0 auto 0
            .nav-level-2
                @include container
                @include grid(4, md)
        @else 
            .dropdown-menu
                padding-bottom: calc(#{$spacing0}/2)
alexisben's avatar
alexisben committed
                padding-left: $spacing0
                padding-top: calc(#{$spacing0}/2)
alexisben's avatar
alexisben committed
                padding-right: $spacing0
            .nav-level-2
                > li > a
                    padding-bottom: calc(#{$spacing0}/2)
                    padding-top: calc(#{$spacing0}/2)
alexisben's avatar
alexisben committed
                    display: block

    @include media-breakpoint-down(md)
        &.is-opened
            display: block
alexisben's avatar
alexisben committed
        a, span
            text-decoration: none
        .nav-level-1
            display: block
            li 
                a, span
                    padding: 1rem 0
            > li:not(:last-child) 
                border-bottom: 1px solid #adb5bd
            li.has-children
                [role="button"]
                    align-items: center
                    display: flex
                    justify-content: space-between
                    @include icon("caret-bottom", after)
                    &::after
                        font-size: .375rem
                        line-height: 1
                .dropdown-menu
                    display: none
                    padding-top: 0
                [aria-expanded=true] + .dropdown-menu
                    display: block
alexisben's avatar
alexisben committed
        .dropdown-menu
            padding-left: 0

        .nav-level-2
            @include grid(1)
alexisben's avatar
alexisben committed

alexisben's avatar
alexisben committed
// TODO : Est-ce au bon endroit ?
alexisben's avatar
alexisben committed
        @include inset(0)
        background-color: $body-overlay-color
        content: ""
alexisben's avatar
alexisben committed
        pointer-events: none
        position: fixed
alexisben's avatar
alexisben committed
        opacity: 0
        visibility: hidden
        transition: opacity $header-transition
        z-index: $zindex-body-overlay
alexisben's avatar
alexisben committed

    html.has-menu-opened &
        &::after
            display: block
alexisben's avatar
alexisben committed
            opacity: 1
            pointer-events: inherit
            visibility: inherit

    html.is-animating:not(.has-menu-opened) &
        &::after
            display: block
            visibility: inherit
            opacity: 0
alexisben's avatar
alexisben committed
header[role="banner"]
    nav[role="navigation"]
        padding-bottom: $header-nav-padding-y
        padding-top: $header-nav-padding-y
        .container
            align-items: center
            display: flex
            flex-wrap: wrap
            justify-content: space-between
        button[type="button"]
            @include button-reset
            display: none
            border: 0
            color: $body-color
            padding: 0
            position: relative
            @include media-breakpoint-down(md)
                display: flex
                align-items: center
            &:focus
                box-shadow: none
            &:focus-visible
                outline-color: gray
                outline-offset: 5px
                outline-style: dashed
                outline-width: 1px
            span:first-of-type
                font-size: px2rem(14)
                text-transform: uppercase
            span:last-of-type
                @include icon("burger", before)
                background: none
                height: calc(1.063rem + .3125rem * 2)
                padding: px2rem(5) 0 px2rem(5) px2rem(5)
                width: calc(1.5rem + .3125rem)
                &::before
                    font-size: px2rem(17)
                    vertical-align: top
            &[aria-expanded="true"]
                span:last-of-type
                    &::before
                        content: map-get($icons, "close")


alexisben's avatar
alexisben committed
.share
    display: flex
    list-style: none
    margin: 0
    padding: 0

    li:not(:last-child)
        margin-right: 1rem

    a
        font-size: px2rem(13)
        text-decoration: none
alexisben's avatar
alexisben committed
        padding: $spacing0
        &::before
            font-size: px2rem(13)
alexisben's avatar
alexisben committed
        &:hover
            opacity: 0.7
        &::after
            content: none

    span
        display: none
        vertical-align: middle

alexisben's avatar
alexisben committed

[aria-expanded="false"] + .dropdown-menu
    display: none
[aria-expanded="true"] + .dropdown-menu
    display: block
    animation-duration: 0.3s
    animation-fill-mode: both
    animation-name: showIn