Magia negra con flexbox

Steven Calderon

Javascripter, css lover, fake artist

A creative software developer who wants change the world with art and code.

 

calderonsteven.github.io

github.com/calderonsteven

@pacopistolas

Historia

Nace gracias a una iniciativa de mozilla llamada (XUL User Interface Language)

 

el modelo flexbox se uso en WebOs para diseñar el layout de las aplicaciones nativas (este no fue un caso de éxito)

 

2009 se crea la especificación del modulo flexbox

2010 implementación parcial por webkit

2010 lo remueven y matan la especificación

2011 sufre una mejoras

2012 ie lo implementa

2012 implementación moderna

Historia real

¿Que es flexbox?

Flexbox es un layout-mode, que nos permite determinar la manera como se van a comportar los elementos o flex-items (hijos) que se encuentren dentro de un contenedor o flex-container (padre), de tal manera que se adapten siempre al espacio disponible.

layout modes

  • block: documentos (float, columns)
  • inline: texto (y hacks horribles)
  • table: tablas/información (y hack más horribles)
  • posición: (position: [relative, absolute, fixed] ) 
  • grid: ubicar elementos como grillas
  • flexible box layout: diseñar paginas complejas que se puedan redimensionar sin problemas

La vida sin flexbox

terminologia

Contenedor (flex-container)

El elemento padre, se define con los valores flex o inline-flex

 

Flex item

cada elemento hijo directo de un flex container es un flex item

Ejes (Dirección)

Dirección eje principal / main axis (horizontal)

  de izquierda a derecha 

  de derecha a izquierda

 

Dirección eje transversal / cross axis (vertical)

  de arriba abajo

  de abajo a arriba

 

Limites

  main-start / main-end

  cross-start / cross-end

Dimensiones/tamaños

flexbox maneja los tamaños de los flex-items dependiendo de como fueron establecidas las propiedades flex-grow, flex-shrink, y flex-basis en el flex-container (magia negra)

 

main-size (width)

cross-size (height) 

Manos
al
Código

Dirección (flex-direction)

¿Que problema resuelve?

  • Modificaciones innecesarias del DOM para ordenar
  • Orden sin javascript 
  • De filas a columnas ( responsive design )

      justificación horizontal      (justify-content)

¿Que problema resuelve?

  • Distribución de espacios en ambientes con diferentes tamaños de pantalla
  • No más padding y margin para distribuir espacios libres
  • Alineación 
  • Magia cuando se usa con flex-direction

      alineación vertical "items"

(align-items)

¿Que problema resuelve?

  • No mas vertical-align (display: cell-)
  • No mas margin + top para centrar verticalmente
  • Si se usa con justify-content podemos hacer magia

Alineación Vertical "contenido"

(align-content)

Alineación por item (align-self)

¿Que problemas resuelve?

  • Los generados por align-items
  • hacks de layout
  • usar posiciones absolote, fixed, relative para cambiar la alineación o flujo de un item

flex-wrap

order

¿Que problemas resuelve?

  • Nos evita tener que usar javascript para mover un elemento de lugar 
  • Cool Hacks

flex-grow

¿Que problemas resuelve?

  • usar javascript para determinar el tamaño del ultimo elemento
  • llenar espacios
  • distribución del tamaño entre items 

flex-shrink y flex-basis

flex-basis: define el tamaño (width) por defecto del item antes de que se distribuya el espacio (ejemplo con justify-content)

 

flex-shrink: factor de encogimiento, que tanto puede encogerse para dar mas espacio a sus hermanos.

 

¿Que problema resuelve?

  • Problemas de distribución de espacio
  • Problemas de distribución de tamaño

¿Alguien quiere pensar en los browsers?

Navegadores modernos

Herramientas

leaverou.github.io/prefixfree/

gruntjs.com

gulpjs.com

Pollyfill

flexiejs.com

i ♡ Modernizr

Recursos

  • http://philipwalton.github.io/solved-by-flexbox
  • https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes
  • http://learnlayout.com/flexbox.html

Ahora, a usar flexbox

Gracias!!

https://github.com/calderonsteven

@pacopistolas

Magia negra con flexbox

By Steven Calderon

Magia negra con flexbox

  • 1,008