Pasar al contenido principal

EDgrid ahora usa CSS Grid

EDgrid ahora usa CSS Grid

CSS grid es hace poco tiempo una realidad que nadie que se dedique al diseño web puede ignorar. De hecho, desde el 9 de mayo de 2017 la W3C ya la tiene como Recomendación candidata (el paso previo a ser un estándar, lo que significa que solo hay que revisar si algún detalle ha quedado suelto y ya). En EDteam venimos hablando de CSS grid desde 2015:

 

Y hemos realizado nuevos tutoriales que puedes ver aqui, aqui y aqui. Además de dedicarle una clase en el curso CSS Desde Cero (2015) y CSS Desde Cero (2017).

Entonces no nos ha tomado por sorpresa, sino que tan solo estabamos esperando el tan esperado soporte de los navegadores anunciado para marzo de 2017.

Sin embargo, hay un pequeño problema: para disfrutar de CSS Grid requieres tener el navegador actualizado, bastaría estar una sola versión detrás y todo se desmaquetaría. Y eso no está bien. Por lo que la mejor manera es usar CSS Grid y un fallback con flexbox para navegadores que no soporten grid. Sin embargo, es mucho trabajo, mucho código que escribir para cada caso. Es donde EDgrid hace el trabajo sucio por nosotros, creando la versión grid y el fallback con flexbox escribiendo una sola línea de código.

.grid-container {
 @include grid('.grid-item', 1 2 3 4, 1.5em)
}

Donde

  • grid-container es el selector del contenedor del grid
  • grid-item es el selector de cada uno de los items del grid
  • 1 2 3 4 es una lista de columnas separadas por espacios (cada numero representa el numero de columnas en cada breakpoint de EDgrid: 0, 640px, 1024px, 1440px)
  • 1.5em es el espaciado vertical y horizontal entre cada item del grid

Este simple mixin se compilará en el siguiente CSS:

.grid-container {
    display       : -webkit-box;
    display       : -ms-flexbox;
    display       : flex;
    -ms-flex-wrap : wrap;
    flex-wrap     : wrap;
    margin-left   : -.75em;
    margin-right  : -.75em
}

.grid-container img {
    display : block
}

body {
    overflow-x : hidden
}

.grid-container > .grid-item {
    width  : calc(100% - 1.5em);
    margin : .75em
}

@media screen and (min-width : 640px) {
    .grid-container > .grid-item {
        width : calc(50% - 1.5em)
    }
}

@media screen and (min-width : 1024px) {
    .grid-container > .grid-item {
        width : calc(33.33333% - 1.5em)
    }
}

@media screen and (min-width : 1440px) {
    .grid-container > .grid-item {
        width : calc(25% - 1.5em)
    }
}

@supports (grid-template-areas:"header") {
    .grid-container {
        display               : -ms-grid;
        display               : grid;
        grid-gap              : 1.5em;
        margin-left           : 0;
        margin-right          : 0;
        -ms-grid-columns      :(1fr) [ 1 ];
        grid-template-columns : repeat(1, 1fr)
    }

    body {
        overflow-x : visible
    }

    @media screen and (min-width : 640px) {
        .grid-container {
            -ms-grid-columns      :(1fr) [ 2 ];
            grid-template-columns : repeat(2, 1fr)
        }
    }

    @media screen and (min-width : 1024px) {
        .grid-container {
            -ms-grid-columns      :(1fr) [ 3 ];
            grid-template-columns : repeat(3, 1fr)
        }
    }

    @media screen and (min-width : 1440px) {
        .grid-container {
            -ms-grid-columns      :(1fr) [ 4 ];
            grid-template-columns : repeat(4, 1fr)
        }
    }

    .grid-container > .grid-item {
     width  : 100%;
     margin : 0
    }
}

Usando Browserstack, nos hemos asegurado de la compatibilidad desde IE11. Por el momento, solo hemos implementado el componnente grid con CSS Grid (pronto lo haremos con otros componentes), y solo puedes usar esta funcionalidad con Sass.

¿Qué esperas? Empieza a usar CSS Grid en tus proyectos hoy mismo con la primera librería para RWD que lo soporta.

Por cierto, nuestra vista de cursos, ya usa CSS Grid hace semanas (prueba haciéndole F12)

EDgrid en Github.

Documentación de EDgrid