SimenB/stylint

View on GitHub
test-styl/_mixins.styl

Summary

Maintainability
Test Coverage
/**
 * Mixins. I don't use mixins too much, because it generates more css
 * I recommend only using when you want a code block that be dropped anywhere (media queries)
 * or if you need to be able to pass params, obvs
*/


// bigger title. @TODO maybe dont need this as a mixin
big-title()
    font-size 24px
    line-height 26px


/**
 * carve an element to the left, used in articles for images and pullquotes
 */
carve()
    position relative
    @media $mob-plus
        float left

    @media $big-max
        margin $gutter-big $gutter-big $gutter-big 0

    @media $big-plus
        margin 60px $gutter-huge $gutter-huge -100px


/**
 * make a thing flexbox
 */
flex-row()
    display flex
    flex-direction vertical
    flex-wrap wrap
    &.align-m
        align-items center

    .col
        flex auto
        &.flex-flow
            flex 1


/**
 * line clamp (ellipsis) hackz for excerpts
 * in webkit we get the ellipsis, on other browsers we just dont show the text
 * 1 old spec is needed, so we turn autoprefixer off for the block.
 */
line-clamp( lines, $your-line-height )
    /* autoprefixer: off */
    -webkit-box-orient vertical
    display -webkit-box // 1
    overflow hidden
    text-overflow ellipsis
    -webkit-line-clamp $lines
    max-height $lines * $your-line-height + 2

.clamp
    line-clamp( 3, 16px )

/**
 * pullquotes for stories gets whole lot of stuff
 * needs to be hardcoded like this to make it easier for editors
 * and production people to just drop it in
 * also it needs to apply retroactively to all our old pqs
 */
pullquote()
    background $white
    border-bottom $border-micro
    border-top $border-big
    display none
    font-family $proxima
    font-size 24px
    font-style normal
    font-weight 400
    line-height 27px
    padding $gutter-med 0
    width 300px

    a
        color inherit

    em,
    cite
        font-family inherit
        font-style italic
        line-height inherit

    .attribution
        margin-top $gutter-med
        &:before
            content '—'

    @media $mob-plus
        display block


// sets max width of content and centers. mixin needed cause media query
site-container()
    margin-left auto
    margin-right auto
    max-width $max-width
    position relative
    width s( 'calc(100% - (%s * 2))', $gutter-med )
    @media $mob
        width s( 'calc(100% - (%s * 2))', 20px )


/**
 * use vars for sprite positions, super handy
 */
sprite-position( $sprite )
    background-position $sprite[0] $sprite[1]


/**
 * ensures consistent easing across site
 * pass all only if you need more to animate more than one property
 * the actual property is preferred over using all
 * @param the property to transition
 * @param the length of the transition
 * @param bool, include translateZ for performance if needed (use sparingly)
 */
transition( $prop, $length, $accelerate )
    transition $prop $length $timing
    // turn on hardware acceleration for stuff (dont abuse)
    if ( $accelerate == true )
        -webkit-backface-visibility hidden
        -webkit-perspective 1000px
        -webkit-transform-style preserve-3d
        transform translateZ( 0 )