freeCodeCamp/guide/spanish/css/layout/grid-layout/index.md

148 lines
6.4 KiB
Markdown

---
title: Grid Layout
localeTitle: Diseño de cuadrícula
---
## Diseño de cuadrícula
CSS Grid Layout, conocido simplemente como Grid, es un esquema de diseño que es el más nuevo y más poderoso en CSS. Es [compatible con todos los navegadores principales](https://caniuse.com/#feat=css-grid) y proporciona una forma de colocar elementos en la página y moverlos.
Puede asignar automáticamente elementos a _áreas_ , ajustar su tamaño y cambiar su tamaño, encargarse de crear columnas y filas según el patrón que usted defina y realizar todos los cálculos utilizando la unidad `fr` recién introducida.
### ¿Por qué Grid?
* Puede tener fácilmente una cuadrícula de 12 columnas con una línea de CSS. `grid-template-columns: repeat(12, 1fr)`
* Grid te permite mover las cosas en cualquier dirección. A diferencia de Flex, donde puede mover elementos horizontalmente ( `flex-direction: row` ) o verticalmente ( `flex-direction: column` ), no ambos al mismo tiempo, Grid le permite mover cualquier _elemento de la cuadrícula_ a cualquier _área de cuadrícula_ predefinida en la página. Los elementos que muevas no tienen que ser adyacentes.
* Con CSS Grid, puede **cambiar el orden de los elementos HTML utilizando solo CSS** . Mueva algo de arriba a derecha, mueva los elementos que estaban en el pie de página a la barra lateral, etc. En lugar de mover `<div>` de `<footer>` a `<aside>` en el HTML, puede cambiar su ubicación con `grid-area` de la `grid-area` en el Hoja de estilo CSS.
### Grid vs. Flex
* Flex es unidimensional, ya sea horizontal o vertical, mientras que Grid es bidimensional, lo que significa que puede mover elementos tanto en planos horizontales como verticales
* En Grid, aplicamos estilos de diseño al contenedor principal y no a los elementos. Por otro lado, Flex se dirige al elemento flex para establecer propiedades como `flex-basis` , `flex-grow` y `flex-shrink`
* Grid y Flex no son mutuamente excluyentes. Puedes usar ambos en el mismo proyecto.
### Verificando la compatibilidad del navegador con `@supports`
Lo ideal es que cuando construyas un sitio, lo diseñes con Grid y utilices Flex como alternativa. Puede averiguar si su navegador admite cuadrícula con la regla `@support` CSS (consulta de características). Aquí hay un ejemplo:
```css
.container {
display: grid; /* display grid by default */
}
@supports not (display: grid) { /* if grid is not supported by the browser */
.container {
display: flex; /* display flex instead of grid */
}
}
```
### Empezando
Para convertir cualquier elemento en una cuadrícula, debe asignar su propiedad de `display` a la `grid` , así:
```css
.conatiner {
display: grid;
}
```
Y eso es. Acabas de hacer de tu `.container` una grilla. Cada elemento dentro del `.container` se convierte automáticamente en un elemento de cuadrícula.
### Definiendo plantillas
Filas y columnas
```css
grid-template-columns: 1fr 1fr 1fr 1fr;
grid-template-rows: auto 300px;
```
Áreas
```css
grid-template-areas:
"aaaa"
"bcde"
"bcde"
"ffff";
```
o
```css
grid-template-areas:
"header header header header"
"nav main main sidebar";
```
### Áreas de cuadrícula
Aquí hay un código de ejemplo sobre cómo definir y asignar áreas de cuadrícula
```css
.site {
display: grid;
grid-template-areas: /* applied to grid container */
"head head" /* you're assigning cells to areas by giving the cells an area name */
"nav main" /* how many values kind of depends on how many cells you have in the grid */
"nav foot";
}
.site > header {
grid-area: head;
}
.site > nav {
grid-area: nav;
}
.site > main {
grid-area: main;
}
.site > footer {
grid-area: foot;
}
```
### La unidad de `fr`
Grid introduce una nueva unidad `fr` , que significa _fracción_ . Lo bueno de usar la unidad `fr` es que se encarga de los cálculos por ti. El uso de `fr` evita los problemas de margen y relleno. Con `%` y `em` etc. se convierte en una ecuación matemática cuando se calcula `grid-gap` . Si usó la unidad de `fr` , calculará automáticamente el tamaño de la columna y el de la canaleta y ajustará el tamaño de las columnas en consecuencia, además, tampoco habrá huecos de sangrado al final.
### Ejemplos
#### Cambio del orden de los elementos en función del tamaño de la pantalla.
Digamos que desea mover el pie de página al final en pantallas pequeñas y a la derecha en pantallas más grandes, y hay un montón de otros elementos HTML entre los dos.
La solución simple es cambiar las `grid-template-areas` la `grid-template-areas` según el tamaño de la pantalla. También puede **cambiar el número de columnas y filas según el tamaño de la pantalla** . Esta es una alternativa mucho más limpia y simple al sistema Grid de Bootstrap ( `col-xs-8 col-sm-6 col-md-4 col-lg-3` ).
```css
.site {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-areas:
"title title"
"main header"
"main sidebar"
}
@media screen and (min-width: 34em) { /* If the screen is big enough, use a different template for grid areas */
.site {
grid-template-columns: 2fr 1fr 1fr;
grid-template-areas:
"title title title"
"main header header"
"main sidebar footer"
}
}
```
Vea la [Cuadrícula de](https://codepen.io/aamnah/pen/RLVVoE/) la pluma [CSS por ejemplo - 2 (áreas de cuadrícula + separación de cuadrícula)](https://codepen.io/aamnah/pen/RLVVoE/) por Aamnah Akram ( [@aamnah](https://codepen.io/aamnah) ) en [CodePen](https://codepen.io) .
#### Más información:
* [CSS Grid Palyground por Mozilla](https://mozilladevelopers.github.io/playground/) Gran punto de partida si eres nuevo en CSS Grids. Tiene elementos visuales para ayudarte a entender la terminología fácilmente.
* [YouTube: Morten Rand-Hendriksen: CSS Grid lo cambia todo (Acerca de los diseños web)](https://www.youtube.com/watch?v=txZq7Laz7_4) Esta presentación lo convencerá en menos de una hora por qué CSS Grids es genial y por qué / cómo debe usarlos
* [Videos: Serie de videos Learn Grid Layout por Rachel Andrew](https://gridbyexample.com/video/) Rachel Andrew es considerada una experta en el tema. Los títulos de los videos pueden parecer extraños y abrumadores, pero el contenido es corto y al punto
* [Libro: Prepárese para el diseño de cuadrícula de CSS por Rachel Andrew](https://abookapart.com/products/get-ready-for-css-grid-layout)