Skip to content
Snippets Groups Projects
header.sass 7.15 KiB
Newer Older
alexisben's avatar
alexisben committed
header#document-header
    background: $header-background
alexisben's avatar
alexisben committed
    border-bottom: $header-border-bottom-width solid var(--color-border)
alexisben's avatar
alexisben committed
    color: $header-color
    position: fixed
    left: 0
    top: 0
    transition: transform $header-sticky-transition, background $header-sticky-transition
    width: 100%
alexisben's avatar
alexisben committed
    z-index: $zindex-header
    @include media-breakpoint-down(desktop)
alexisben's avatar
alexisben committed
        border-bottom: 0
Olivia206's avatar
Olivia206 committed
        width: 100%
alexisben's avatar
alexisben committed
    .dropdown-menu
        transition: background $header-sticky-transition
    &.is-sticky, html.has-menu-opened &
        background: $header-sticky-background
        color: $header-sticky-color
        .menu
            a,
            a:hover,
            a:focus,
            span
        @if $header-sticky-invert-logo
            .logo
                img, .logo-text
                    filter: invert(1)
        @include media-breakpoint-up(desktop)
            .dropdown-menu
                background: $header-sticky-dropdown-background
                color: $header-sticky-dropdown-color
    &.is-sticky
            color: $header-sticky-color
    html.is-scrolling-down:not(.has-menu-opened, .has-modal-opened) &
        @include media-breakpoint-down(desktop)
            transform: translateY(-100%)
        @include media-breakpoint-up(desktop)
            &:not(:hover)
alexisben's avatar
alexisben committed
                transform: translateY(-100%)
alexisben's avatar
alexisben committed
    .logo
alexisben's avatar
alexisben committed
        @extend %logo
Olivia206's avatar
Olivia206 committed
        color: $header-color
alexisben's avatar
alexisben committed
        img
alexisben's avatar
alexisben committed
            height: $header-logo-height
            @if $header-sticky-invert-logo
                transition: filter $header-sticky-transition
            @include media-breakpoint-up(desktop)
alexisben's avatar
alexisben committed
                height: $header-logo-height-desktop
Olivia Simonet's avatar
Olivia Simonet committed

    // Top menu
    .upper-menu
        background: $header-upper-menu-background
        border-bottom: $header-upper-menu-border-bottom-width solid var(--color-border)
        transition: background $header-sticky-transition
        z-index: $zindex-header
        &, a
            color: $header-upper-menu-color
Olivia Simonet's avatar
Olivia Simonet committed
        ul
            @include list-reset
            @include meta
            display: flex
            gap: $spacing-3
            width: 100%
            @include media-breakpoint-up(desktop)
                align-items: baseline
                justify-content: center
                gap: $spacing-5
            // horizontal scroll for mobile
            @include media-breakpoint-down(desktop)
                height: $header-upper-menu-mobile-height
                overflow-x: auto
                scrollbar-width: none
                &::-webkit-scrollbar
                    display: none
        @include media-breakpoint-down(desktop)
            background: transparent
            border-top: $header-upper-menu-border-bottom-width solid var(--color-border)
            color: $header-upper-menu-sticky-color
Olivia Simonet's avatar
Olivia Simonet committed
            display: none
            position: absolute
            top: var(--header-height)
            transition-delay: 0.3
            .container
                padding-left: 0
                padding-right: 0
                ul
                    padding-left: var(--grid-gutter)
                    padding-right: var(--grid-gutter)
            html.has-menu-opened &
                background: $header-upper-menu-sticky-background
                display: block
        .nav-level-1
            a
                text-decoration: none
Olivia Simonet's avatar
Olivia Simonet committed
                line-height: 1
                border: none
Olivia Simonet's avatar
Olivia Simonet committed
                @include media-breakpoint-down(desktop)
                    height: 100%
Olivia Simonet's avatar
Olivia Simonet committed
                    display: block
                    white-space: nowrap
Olivia Simonet's avatar
Olivia Simonet committed
                    @include media-breakpoint-up(desktop)
                        padding: $header-upper-menu-padding-y 0
                // apply active style to active page (default) or active site
                $upper-menu-active-selector: '.active'
                @if $header-upper-menu-active-style-for-sites
                    $upper-menu-active-selector: ':not([href*="https://"], [href*="http://"])'
                a#{$upper-menu-active-selector}
                    box-shadow: $header-upper-menu-active-box-shadow
alexisben's avatar
alexisben committed
    @include media-breakpoint-down(desktop)
        &.has-upper-menu
            .menu
                padding-top: $header-upper-menu-mobile-height
alexisben's avatar
alexisben committed
        html.has-menu-opened &
alexisben's avatar
alexisben committed
            nav
alexisben's avatar
alexisben committed
                padding-bottom: 0
Olivia Simonet's avatar
Olivia Simonet committed
    &.is-sticky
        .upper-menu
            background: $header-upper-menu-sticky-background
            &, a
                color: $header-upper-menu-sticky-color
alexisben's avatar
alexisben committed
// TODO : Est-ce au bon endroit ?
body
    &::after
        @include inset(0)
        background-color: $body-overlay-color
        content: ""
        pointer-events: none
        position: fixed
        opacity: 0
        transition: opacity $header-transition
        z-index: $zindex-body-overlay

    html.has-menu-opened &,
alexisben's avatar
alexisben committed
    html.has-modal-opened &,
alexisben's avatar
alexisben committed
    html.has-offcanvas-opened &
alexisben's avatar
alexisben committed
        overflow: hidden
        height: 100%
        min-height: -webkit-fill-available
alexisben's avatar
alexisben committed
        &::after
            display: block
            opacity: 1
            pointer-events: inherit
alexisben's avatar
alexisben committed
    html.has-offcanvas-opened &
alexisben's avatar
alexisben committed
        &::after
            background-color: $toc-overlay-color
alexisben's avatar
alexisben committed
            z-index: $zindex-header + 1
alexisben's avatar
alexisben committed
    html.has-modal-opened &
        &::after
            z-index: $zindex-modal - 1
alexisben's avatar
alexisben committed
    html.is-animating:not(.has-menu-opened) &
        &::after
            display: block
            opacity: 0

alexisben's avatar
alexisben committed
header#document-header
alexisben's avatar
alexisben committed
        padding-bottom: $header-nav-padding-y
        padding-top: $header-nav-padding-y
alexisben's avatar
alexisben committed
        @include media-breakpoint-up(desktop)
            padding-bottom: $header-nav-padding-y-desktop
            padding-top: $header-nav-padding-y-desktop
        > .container
alexisben's avatar
alexisben committed
            align-items: center
            display: flex
            flex-wrap: wrap
            justify-content: space-between
alexisben's avatar
alexisben committed
        .header-button
alexisben's avatar
alexisben committed
            @include button-reset
            border: 0
            color: inherit
            display: none
alexisben's avatar
alexisben committed
            padding: 0
            position: relative
alexisben's avatar
alexisben committed
            line-height: 1
alexisben's avatar
alexisben committed
            &:focus
                box-shadow: none
            &:focus-visible
                outline-color: gray
                outline-offset: 5px
                outline-style: dashed
                outline-width: 1px
Olivia206's avatar
Olivia206 committed
            @include media-breakpoint-down(desktop)
                display: flex
                align-items: center
alexisben's avatar
alexisben committed
            span:first-of-type
                @include meta
alexisben's avatar
alexisben committed
                font-size: pxToRem(14)
                text-transform: uppercase
alexisben's avatar
alexisben committed
            span:last-of-type
                background: none
                @include icon-block(menu-line, before)
alexisben's avatar
alexisben committed
                    vertical-align: baseline
alexisben's avatar
alexisben committed
                    margin-right: $icon-burger-margin-right
alexisben's avatar
alexisben committed
            &[aria-expanded="true"]
                span:last-of-type
                    &::before
                        content: map-get($icons, "close-line")
alexisben's avatar
alexisben committed
                        margin-right: $icon-close-margin-right