Sistema de columnas con flexbox
- ed-container y ed-item
- Ancho de los ed-container
- Ancho de los ed-item
- Anidar contenedores e items
- Avanzado: crea tus propios contenedores e items
- Avanzado: crear contenedores e items con Sass (sin clases HTML)
EDgrid es una librería para construir layouts. Puede construirlos con Flexbox o CSS Grid.
ed-container y ed-item
Para construir layouts con Flexbox y EDgrid debe definir contenedores con la clase ed-container e items con la clase ed-item. Con las siguientes reglas:
- Un
ed-itemno puede ser huérfano. Siempre debe ser hijo de uned-container - Un
ed-containerdebe tener al menos uned-itemcomo hijo directo. - Los
ed-containeryed-itemson contenedores para crear layout. No agregue contenido directamente en ellos.
<!-- Bien -->
<div class="ed-container">
<div class="ed-item">
<article>
<p>
En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
adarga antigua, rocín flaco y galgo corredor.
</p>
</article>
</div>
</div>
<!-- Mal -->
<div class="ed-container">
<article class="ed-item">
En un lugar de la Mancha, de cuyo nombre no quiero acordarme,
no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero,
adarga antigua, rocín flaco y galgo corredor.
</article>
</div>
Ancho de los ed-container
Los ed-container tienen un ancho predeterminado de 100% y un ancho máximo de 1200px. Así cuando la pantalla es mayor a esta medida, el ed-container queda fijo y se centra horizontalmente.
Si desea un ed-container que mida siempre el 100% de la pantalla agregue la clase full.
<div class="ed-container full">
<div class="ed-item"></div>
</div>
Si desea personalizar el ancho máximo del ed-container redefina la variable Sass $max-width antes de importar EDgrid.
$max-width: 1400px;
@import "~ed-grid/ed-grid";
Ancho de los ed-item
Cada ed-item tiene 100% del ancho de su padre a menos que se especifique lo contrario (a través de clases). Las clases para definir el ancho son de dos tipos: porcentajes y fracciones.
1. Porcentajes
La nomenclatura de clase es breakpoint-numero Donde número es cualquier número múltiplo de 5 entre 0 y 100. Así que la clase lg-75 significa que el elemento tendrá 75% del ancho de su padre a partir del breakpoint lg.
<div class="ed-container">
<div class="ed-container">
<div class="ed-item s-30 lg-50">1</div>
<div class="ed-item s-50 lg-25">2</div>
<div class="ed-item s-20 lg-25">3</div>
</div>
</div>
- Como puede ver, las separaciones entre columnas se crean con paddings laterales.
- Si no desea separaciones con paddings (que dan problemas en layouts complejos) use nuestra versión con CSS Grid
- Si la suma de los anchos da más de 100, habrá saltos de fila. Así puede crear layouts más complejos sin crear nuevos contenedores.
2. Fracciones
Si quiere dividir el ancho entre 3 o 6 necesitará fracciones. La nomenclatura es breakpoint-numerador-denominador. Por ejemplo: lg-1-3 significa un tercio de ancho (33.33%) a partir del breakpoint lg (1024px). Mientras que xl-2-3 significa dos tercios a partir del breakpoint xl (1440px).
<!-- Layout de tres columnas a partir de 1024px de pantalla -->
<div class="ed-container">
<div class="ed-item s-1-3">1</div>
<div class="ed-item s-1-3">2</div>
<div class="ed-item s-1-3">3</div>
</div>
Anidar contenedores e items
Si necesita anidar elementos para crear layouts más complejos tenga en cuenta las siguientes reglas:
- No cree un
ed-containercomo hijo de uned-item - Para anidar, agregue la clase
ed-containera uned-itementonces ya podrá crear nuevosed-itemnietos.
<!-- Bien -->
<div class="ed-container">
<div class="ed-item s-60">1</div>
<div class="ed-item s-40 ed-container">
<div class="ed-item s-50">2</div>
<div class="ed-item s-50">3</div>
</div>
</div>
<!-- Mal -->
<div class="ed-container">
<div class="ed-item s-1-3"></div>
<div class="ed-item s-2-3">
<div class="ed-container">
<div class="ed-item s-50"></div>
<div class="ed-item s-50"></div>
</div>
</div>
</div>
Avanzado: crea tus propios contenedores e items
Si no desea usar las clases ed-container y ed-item puede definir las suyas. Simplemente redefina las variables $container y $item antes de importar EDgrid.
$container: row;
$item: column;
@import "~ed-grid/ed-grid";
Avanzado: crear contenedores e items con Sass (sin clases HTML)
Si no desea tocar el marcado HTML (o no tiene acceso a el por restricciones del proyecto) puede usar mixins de Sass para definir sus contenedores e items.
- Para los contenedores, use el mixin
ed-container. - Para los items, use el mixin
ed-item($s,$m,$lg,$xl)Los parámetros definen el ancho en cada breakpoint: - Puede omitirlos todos y el ancho será siempre 100%
- Un ancho declarado se herederá en los breakpoints superiores.
- Puede usar fracciones como parámetro. Por ejemplo:
1/3
.main-page {
@include ed-container
}
.sidebar {
@include ed-item(100,100,1/3)
}
.content {
@include ed-item(100,100,2/3)
}