Skip to content
Snippets Groups Projects
timeline.sass 5.44 KiB
Newer Older
Arnaud Levy's avatar
Arnaud Levy committed
.block-timeline
    &--vertical
        .events
            position: relative
alexisben's avatar
alexisben committed
        .event
Arnaud Levy's avatar
Arnaud Levy committed
            position: relative
            &:not(:last-child)
                padding-bottom: $spacing2
Olivia206's avatar
Olivia206 committed
            &::before
Arnaud Levy's avatar
Arnaud Levy committed
                background: $color-text
Olivia206's avatar
Olivia206 committed
                border-radius: 50%
alexisben's avatar
alexisben committed
                content: ""
Olivia206's avatar
Olivia206 committed
                height: 9px
Arnaud Levy's avatar
Arnaud Levy committed
                left: calc(-#{$grid-gutter} / 2)
                margin-top: 0.5em
                position: absolute
Olivia206's avatar
Olivia206 committed
                width: 9px
Arnaud Levy's avatar
Arnaud Levy committed
                margin-left: -4px
            &::after
                background: $color-text
                bottom: -0.5em
                content: ""
                left: calc(-#{$grid-gutter} / 2)
                position: absolute
                top: 0.5em
                width: 1px
            p:last-child
                margin-bottom: 0
            &:last-child::after
                display: none
            &-title
                @extend .h4
                margin-bottom: $spacing0
        @include media-breakpoint-down(md)
            .event
                padding-left: calc(#{$grid-gutter-sm} / 2)
                &::after, &::before
                    left: 0
        @include media-breakpoint-up(md)
            @include in-page-without-sidebar
                .events
                    padding-left: 0
                .event
                    display: flex
                    &::before, &::after
                        left: col(3)
                        margin-left: calc(#{$grid-gutter} / 2)
                    &::before
                        transform: translateX(-4px)
                    p:first-child
                        width: col(3)
                        text-align: right
                    p:last-child
                        padding-left: $grid-gutter
                        width: col(7)
alexisben's avatar
alexisben committed

Arnaud Levy's avatar
Arnaud Levy committed
    &--horizontal
        --min-title-height: 0px
        background: $block-timeline-horizontal-background
        color: $block-timeline-horizontal-color
        margin-bottom: 8rem
        overflow: hidden
        padding-bottom: $grid-gutter
        padding-top: $grid-gutter
        &::before
            display: none
        .timeline
            &:hover
                cursor: grab
            &.is-grabbing
                cursor: grabbing
            
        .timeline-arrows
            display: flex
            > button
                @include button-reset
                background: none
                border: none
                color: $block-timeline-horizontal-color
                cursor: pointer
                font-size: 1rem
                padding: calc(#{$grid-gutter} / 2)
                &:first-child
                    @include icon(arrow-left, before)
                &:last-child
                    @include icon(arrow-right, before)
                &:disabled
                    cursor: default
                    opacity: 0.3
alexisben's avatar
alexisben committed
        .events
Arnaud Levy's avatar
Arnaud Levy committed
            margin-left: calc(#{$grid-gutter} / -2)
            margin-right: calc(#{$grid-gutter} / -2)
            // TODO : fixer le px gap en desktop entre chaque event
alexisben's avatar
alexisben committed
            ol
Arnaud Levy's avatar
Arnaud Levy committed
                display: flex
                flex-flow: row nowrap
                list-style: none
                padding-left: 0
                margin-top: $spacing1
                transition: margin 0.4s ease-in-out
                width: 100%
alexisben's avatar
alexisben committed
        .event
Arnaud Levy's avatar
Arnaud Levy committed
            flex: none
            padding: 0 calc(#{$grid-gutter} / 2)
            scroll-snap-align: start
            transition: 0.3s opacity
            width: 50%
            .title
                min-height: var(--min-title-height)
                margin-bottom: $spacing1
alexisben's avatar
alexisben committed
            .line
Arnaud Levy's avatar
Arnaud Levy committed
                background: $block-timeline-horizontal-color
                height: 1px
                margin-bottom: $spacing1
                opacity: 1
                overflow: visible
                width: calc(100% + #{$grid-gutter} / 2)
                &::before
                    background: $block-timeline-horizontal-color
                    border-radius: 50%
                    content: ""
                    display: block
                    height: 9px
                    position: relative
                    top: -4px
                    width: 9px
            &.is-passed
                opacity: 0.15
            &:last-child
                .line
                    background: transparent
alexisben's avatar
alexisben committed

Arnaud Levy's avatar
Arnaud Levy committed
        @include media-breakpoint-up(md)
            .events
                ol
                    margin-top: $spacing2
alexisben's avatar
alexisben committed
            .event
Arnaud Levy's avatar
Arnaud Levy committed
                .line
                    width: calc(100% + #{$grid-gutter})
        
        @include in-page-with-sidebar
            @include media-breakpoint-up(md)
                .timeline
                    padding-left: offset(4)
            @include media-breakpoint-up(xxl)
                .timeline
                    padding-left: offset(5)
alexisben's avatar
alexisben committed

Arnaud Levy's avatar
Arnaud Levy committed
        @include in-page-without-sidebar
            @include media-breakpoint-up(xxl)
                .event
                    width: 25%
alexisben's avatar
alexisben committed

Arnaud Levy's avatar
Arnaud Levy committed
        @include media-breakpoint-down(md)
            .events
                position: relative
            .timeline-arrows
                left: 0
                position: absolute
                top: calc(#{$spacing2/2} + var(--min-title-height))
            .event
                padding-right: 0
                width: 75%
                .line
                    margin-bottom: calc(#{$spacing2} + var(--min-title-height))
alexisben's avatar
alexisben committed
        @include in-page-with-or-without-sidebar
            h2, h3
                @extend .h5