Skip to content
Snippets Groups Projects
_utils.sass 2.33 KiB
// TODO : ranger

@function px2rem($size)
    $remSize: $size / 16
    @return #{$remSize}rem

@function pxr2rem($size)
    $remSize: $size / 16 / 2
    @return #{$remSize}rem

@function col($nb, $base: 12)
    $nb: $nb/$base * 12
    $nbCol: calc( (100% + #{$grid-gutter}) / 12 * #{$nb} )
    @return #{$nbCol}

@mixin in-page-with-aside
    aside ~ .blocks &
        @content

@mixin in-page-without-aside
    main > .blocks &,
    main > article > .blocks &
        @content

@mixin link
    color: $link-color
    text-decoration-color: rgba($link-color, 0.3)
    text-decoration-line: underline
    text-decoration-thickness: 1px
    text-underline-offset: 3px
    transition: text-decoration-color .3s ease
    &:hover
        text-decoration-color: rgba($link-color, 1)
        text-decoration-thickness: 1px

@mixin hover-translate-icon($pseudo: after, $distance: 10)
    &::#{$pseudo}
        transition: transform 0.55s $arrow-ease-transition
        transform: translateX(0)
    &:hover
        &::#{$pseudo}
            transform: translateX(#{px2rem($distance)})

@mixin sticky($top-md: calc(#{$header-height-md} + #{$spacing1}), $top-sm: calc(#{$header-height} + #{$spacing1}))
    position: sticky
    top: $spacing1
    @if $header-sticky-enabled
        transition: top $header-sticky-transition
        html:not(.is-scrolling-down) &
            top: $top-sm
            @include media-breakpoint-up(md)
                top: $top-md

// NEW UTILS

@mixin icon($icon-name: '', $pseudo-element: before)
    &::#{$pseudo-element}
        display: inline-block
        font-family: 'Icon'
        font-style: normal
        font-variant: normal
        font-weight: normal
        line-height: 1
        speak: never
        text-transform: none
        vertical-align: middle
        content: map-get($icons, $icon-name)

@mixin container
    max-width: $grid-max-width
    padding-left: $grid-gutter
    padding-right: $grid-gutter
    margin-left: auto
    margin-right: auto
    width: 100%

@mixin grid($cols: 12)
    @include media-breakpoint-up(md)
        display: grid
        grid-gap: 0 $grid-gutter
        grid-template-columns: repeat($cols, 1fr)


@mixin stretched-link($pseudo-element: after)
    &::#{$pseudo-element}
        position: absolute
        top: 0
        right: 0
        bottom: 0
        left: 0
        z-index: 2
        content: ""