Ms 0 bulma


Grid systems ¿Qué sera uno grid system? Preparativos Anatomíal de 1 grid system 1.- Contenedor principal 2.- Fila (Row) 3.- Columnas (Column) 3.1.- Tamel año definido automáticamente: 3.2.- Tamun año definido manualmentidad 4.- Offset a column Cierre Extral
Grid systemsPosiblemcorporación si estás leyendo el este mercancía yal sabser lo que sera un grid system o por lo menos has trabajado para algún framework que tenga uno ver cómo, Bootstrap, Bulma, Tailwind, etc.

Estás mirando: Ms 0 bulma

Auno de ese modo, si no sabsera lo que era, te lo explico brevemempresa.

¿Qué sera un grid system?

La traducción dlos serpientes idioma inglés al española sería, “Sistitular de columnas”, pero ¿qué significa esto realmente?

“In basic terms, a grid system is a structure that allows for content to be stacked both vertically and horizontally in a consistent and easily manageable fashion” -Sitepoint

Como menciona un serpiente artículo de Sitepoint, 1 grid system no ser otro una cosa más que una fácil una estructura, que nos permite apimansión o posicionar nuestra contenidos, tanta del una manera horizontal ver cómo vertical consistentemproporción.

Estal ser unal definición muy sencilla, pero carece de el sentido si no se ha trabajado anteriormcorporación por ellos, de esa manera que iniciemos al construir un.

Preparativos

Antes de continuar, tiensera 2 opciones:

Intental replicar estar una estructura de folders y archivos, e ir agregando uno serpiente uno código que se muestre a lo un largo del género.


ProjectName build src grid _grid.scss _mixins.scss _variables.scss normalize _my-normalize.scss _normalize.scss index.scss index.html package.json
Si decidiste seguvaya la segunda opción notarás que estoy usando SASS (scss), una del las muchas ventajas que tiene, era poder estructurar tu uno proyecto en múltiplsera archivos y luego importar todo dentro de un un solo para posteriormcompañía minificarlo, esto me permite tiene más organizado mi proyecto y encontrar fácilmcorporación lo que necesito.

Nuestro archivo del SASS principal ser index.scss y luce más o menos asi:


import "./normalize/normalize";
import "./normalize/my-normalize";
import "./grid/variables";
import "./grid/mixins";
import "./grid/grid";
En él, ver cómo puedser ver, estoy importando todos mis otro archivos. En nuestro archivo package.json encontrarás dos NPM scripts:


"scripts": "sass-dev":"sass --watch src/scss/index.scss:build/css/index.css", "sass-prod":"sass src/scss/index.scss:build/css/index.min.css --styla compressed",
Estos pueden sera ejecuta2 desde nuestra línea del comandos / terminal de la siguiente manera:


$ npm istall
$ npm r1 sass-dev$ npm runo sass-prod
El primera, sass-dev, estará al lal escuchal del cambios dentro de todos nos nuestro archivos .scss que anteriormentidad fueran importados dentro del index.scss, posteriormcorporación todo nuestro código será transpilando y copiado dentro dserpiente folder de build en un algo nuevo archivo llamado index.css.

Por otro lado serpiente segundo comando, sass-prod, correrá una solal una vez, el este script tomará to2 nuestro archivos .scss (importa2 en index.scss) y los moverá del la mismal manera dentro dun serpiente folder de build pero ala hora en uno archivo index.min.css. Lal diferencia sera que el este archivo está completamcorporación minificado, esto quiere decvaya que será escaso legible al el ojo gachó (removiendo todos los espacios o tabulaciones) pero totalmcorporación comprensiblo paral el browser (navegador web) y por es igual pesará mucha menos que 1 archivo que no hal sido minificado.

Si observas el archivo index.html estamos usando serpiente archivo index.css, en este archivo puedsera experimentar para el código que estemos preparando durfrente el este artículo, pero asegurate de usar en elaboración uno serpiente archivo index.min.css

También he creado un folder con dos archivos, normalice y my-normalize. El propósito de estas ser aplica ciertas reglas de CSS la base, por serpiente un objetivo del evitar que cada uno browsera aplique diferentera estilos por defecto, si estas tan interesado en lee mas al respecto puedes ver lal página oficial del normalize o este artículo explicando las diferencias entre tanto normalize, reset y otras opciones.

El ultimo de los requerimientos antes de continua es definir la siguicompañía regla en nuestra _grid.scss:


*, ::after, ::before box-sizing: border-box;
Con la propiedad de box-sizing lo estamos indicando al user-agent o browser que lal anchural del 1 el elemento se considerará a partir dun serpiente borde. Recordemos que un serpiente Box model está conformado por margin, border, padding y content. El navegador por dun efecto considera la anchural desde serpiente content y paral el este proyecto requerimos que no sea de ese modo.

Una vez explicado esto vamos a iniciar.

Anatomíal del un grid system

Cada grid system tiene terminologías distintas, de esa manera que podrás notar cómo cambian del grid system a grid system, no es realmempresa importante serpiente el nombre del las classera si no serpiente un concepto que hay detrás de cada poco unal de esta forma como lal la cantidad de elementos que se involucran.

1.- Contenedor principal

Este contenedor principal no lo he visto en to2 los grid systems pero si por lo menos en los más popularser.

Función:

Envuelve toda o una sección de lal páginaFijal una anchura máximaAgrega márgensera y/o relleno (margin y/o padding)

Dentro de nuestra directorio o folder grid, estoy creando uno archivo llamado _variablser.scss, estaremos usando el este archivo como un archivo de configuración paral serpiente funcionamiento del nuestro grid.

Como mencionamos anteriormcompañía este contenedor la fijaral 1 tamaño maximo, asi que definamos unal variabla para guarda este valor.


$container-max-width: 84rem;
Como puedsera apreciar estoy usando rem en ubicación de px, siéntete libre de trabajar por las unidadsera de medida por las que te sientas más cóel modo. Yo estaré usando rem por que si por algún motivo me gustaría incrementa o decrementar uniformemcompañía uno serpiente tamuno año bastará con actualizar un solo uno serpiente font-size de mi body y todos los lugarera donde estoy usando rem se verán actualiza2.

A1 hora dentro del nuestro _grid.scss crearemos unal la clase container, fijaremos la anchura máximal y centraremos este contenedor con márgensera automáticos.


.container max-width: $container-max-width; margin: 0 auto;

2.- Filal (Row)

Las filas son elementos indispensables cuando se está trabajando para grid systems; estas son los contenedorser del las columnas que explicaremos más adelante.


.row display: flex; flex-wrap: wrap;
Estoy declarando unal una clase .row en lal cual usamos display: flex para flotar todos los elementos en su interior (Children elements en uno serpiente DOM) un al el lado dun serpiente otras, por flex-wrap: wrap lo que hacemos ser empujar 1 el elemento que ya no cabe en los serpientes viewport dede bajo del primer (pgenio inferior izquierda) ya que nuestro elementos se están ordenando del izquierda a derecha del encima al más bajo.

3.- Columnas (Column)

Las columnas son los contenedores en los cualser colocaremos nuestra contenidos.Al el espacio que existe entre tanto un serpiente contenido (Box modserpiente content) del unal columnal y los serpientes un contenido del otra se le conoce como gutter, en otras palabras los serpientes gutter es un serpiente padding interno que tendrán nuestras columnas.

Hay 2 tipos del columnas:

3.1.- Tamuno año definido automáticamente:Estas tomarán una anchura automáticamcompañía dependiendo duno serpiente número del columnas (sibling columns) definidas en la mismal filal.


.col flex-shrink: 1; flex-basis: 0; flex-grow: 1;
En pocas palabras estamos usando estas 3 propiedades para que nuestra/s columnas puedan aumentar o reducvaya su tamel año uniformemcompañía dependiendo un serpiente numero del columnas; si te interesa conoce 1 escaso mas sobre estas tres propiedadsera en el este articulo escrito por Gemal de Rus lo explical muy buen.

En lal definición del columna (Punto 3.) te habla del los gutters, pero en nuestra 1 clase .col notaras que no estoy usando la propivida del padding aun, esto se debe a que en un serpiente siguiente subtema definiremos un variedad del columna diferproporción y me gustaría que tanta las columnas definidas en los serpientes el punto 3.1 y 3.2 tengan los serpientes es igual padding.

Ver más: Mawile Inspiration - Alternative Origin Of Mawile

Dentro del nuestra archivo de variablsera _variablsera.scss agreguemos unal nueva:


$container-max-width: 84rem;$gutter: 1rem;
En nuestro archivo _grid.scss fijemos nuestral gutter rule:


padding: ($gutter / 2);
De estar la manera todas las clasera que inicien por .col tomarán nuestra gutter padding; estamos dividiendo nuestra valor entre 2 por que tenemos que considera que agregaremos padding tan dun serpiente lado izquierdo como dserpiente el derecho en cada poco columna, la sumal de estas 2 lados daríal serpiente total del el espacio deseado entre tanto uno serpiente contenidos del nuestras columnas.

Puedel que por algún motivo no necesitsera el gutter en todas las columnas de unal filal, así que puedes crea unal clase para removerlo.


.row.no-gutter padding: 0;
O si prefiersera algunas mas especifico que pueda funcionar en unal solal columnal (esta una clase se aplicaríal directamentidad a la columnal y no a la fila):


.no-gutter padding: 0;
Ahora mejor, prosigamos por 1 especie del columna uno poco más compleja.

3.2.- Tamel año definido manualmenteEn el este tipo de columnas era ser necesario definir su tamuno año y como se comportaral en diferentsera resolucionera (Breakpoints).Antera de iniciar por el comportamiento de nuestras columnas en diferentser resolucionser veamos primero cual ser la lógica para definva su tamel año.

Suponiendo que tenemos las siguientera una clase y que nuestra grid estará usando 12 columnas:


.col-12 width: 100%;
A fácil una vista podemos observar o intuva que si nuestra grid sera del 12 columnas lal anchural máximal será del 100%, si queremos ocupar tanto tan solo la mitad, definimos algunas así:


.col-6 width: 50%;
¿Pero cuálsera son las matemáticas detrás del estos tamaños?Es simple, para definir los demás tamaños usaremos unal reglal de tres.


12 = 10011 = ?-------------(11 * 100) / 12 = 91.666%
Entoncsera nuestras clases quedarían de lal siguiproporción manera:


.col-12 width: 100%.col-11 width: 91.666%.col-10 width: 83.333%.col-9 width: 75%.col-8 width: 66.666%.col-7 width: 58.333%.col-6 width: 50%.col-5 width: 41.666%.col-4 width: 33.333%.col-3 width: 25%.col-2 width: 16.666%.col-1 width: 8.333%
Estas classer las pudiéramos utilizar de la siguiempresa manera:


Elemento 1
Y ver cómo el resultado tendríamos 3 columnas perfectamorganismo balanceadas tomando serpiente equivalcorporación a 4 columnas cada vez una (33.333%) y sumando 1 total del 12 (100%).

La teoría detrás del uno grid system ser muy simple pero no hemos terminado aún; recordemos mencione anteriormproporción que en el este tipo de columnas nosotros definimos cuantos ellos tienes que medir en diferentser resolucionsera, y eso será lo siguicompañía por lo que estaremos trabajando.

Punto del ruptura / Breakpoint

Los breakpoints son 1 punto del modificación para nuestro layout, y usamos estas para modificar lal disposición dserpiente contenidos dependiendo la anchural de cada poco dispositivo, ya que definitivamcorporación no queremos mostra de lal mismal la manera el contenido en 1 smartphone, tablet o uno monitor por resoluciones superiorsera.

No hay 1 estanda paral definvaya los breakpoints, inclutilización tu podras notar en lal documentación del Bulmal, Bootstrap, Carbon, etc, ver cómo cada vez uno tiene definidas sus propias resolucionser.

En nuestro proyecto usaremos las siguientes:


// Small devices (landscape phonsera, etc)$screen-xs-max: 768px;// Medium devices (tablets, 768px and up)$screen-sm-min: 768px;// Large devicser (desktops, 992px and up)$screen-md-min: 992px;// Extral large devicsera (large desktops, 1200px and up)$screen-lg-min: 1200px;
Como podrás notar, estas son variablsera, las cualser agregaremos dentro de nuestro archivo del _variablsera.scss; serán usadas en más del 1 sitio y por eso mismo vala lal penal definirlas ver cómo variablsera, evitando tener que reemplaza su valor en to2 los lugares donde se requiera, de ser esta la manera si uno serpiente dia del mañana tenemos o queremos cambio lal reun solución de uno breakpoint simplemproporción bastará por reemplaza un serpiente valor del la variable.

Medial query

Para definir los breakpoints en nuestro grid system necesitamos hace uso de los media querisera. Los media queriser son unas estructuras específicas en las cualsera tu indicas cuándo y qué reglas del CSS se van a emplear. Para más inun formación interrogación lal página del lal w3schools.

La estructura de un media query ser lal siguiproporción.


medial not|only mediatype and (expressions) CSS-Code;
Antes del continua por lal definición del nuestro mediaqueries/breakpoints tenemos que considerar un asunto más.

SASS Mixins

Un mixin era algunos muy simitecho a lo que conocemos como funcionser en lenguajser de programación, en ellas podemos declarar N cantidad reglas de CSS y utilizarlas en más de un sitio, incluso nosotros podemos pasar parámetros paral tiene 1 mixin todavía más más más flexible. Se que dentro de SASS nosotros podemos encontra y también funcionsera /
function como tal pero la principal diferencia entre uno mixin y unal uno función dentro del SASS radica en que lal función devuelve uno valor mientras que los mixins se usan para generar N la cantidad de CSS rulser, de esta manera que 1 mixin encaja al la perfección para lo que queremos solucionar más delante.

El un ejemplo practico que la misma documentacion nos muestral sobre todo un mixin sera uno serpiente siguiente:

SCSS


mixin transform($property) -webkit-transform: $property; -ms-transform: $property; transform: $property;.box
includel transform(rotate(30deg));
CSS


.box -webkit-transform: rotate(30deg); -ms-transform: rotate(30deg); transform: rotate(30deg);
El por ejemplo está muy claro que, simplemcompañía estamos definiendo 1 mixin llamado transform serpiente cual ir a recibir ver cómo paráel metro la propiedad del rotate y será llamado dentro del nuestral la clase .box, como 1 resultado fin, nuestro mixin de transform agregaral las propiedadsera por sus respectivos prefijos para Firefox y Chrome.

Una vez mencionado lo que son los breakpoints, media queriera y mixins, procederemos a crea los mixins que usaremos paral cada breakpoint.

Dentro del siguiproporción path src/scss/_mixins.scss definiremos los siguientsera mixins:


mixin xs
medial (max-width: #$screen-xs-max)
content;
mixin sm
medial (min-width: #$screen-sm-min)
content;
mixin md
medial (min-width: #$screen-md-min)
content;
mixin lg
media (min-width: #$screen-lg-min)
content;
Se que notaste un serpiente
content, ser esta directiva nos ayudará al inyectar todas las reglas del CSS dentro del nos nuestros medial querisera por ejemplo:


include xs h1 color: red;
include sm h1 color: orange;
A partir de 0px hasta los 768px todas las etiquetas h1 se veran del el color un rojo, y de los 769px en delante las mismas etiqueta ala hora se veran de el color 1 naranja.

Ahora bueno, ¿cómo termina de encajar todo esto por nuestro grid system?


Elemento 1
Tomando como referencia serpiente un código del uno ejemplo mostrado anteriormempresa, podremos observar como estamos renderizando 3 elementos en la mismal filal, abarcando el 100% del espacio disponible ya que suman uno total de 12 columnas dondel 12 es un serpiente 100% (col-4, 4*3=12).

Actualmproporción contamos para lal capacidad del asignar al nuestras columnas uno tamel año fijo y el este se mantendrá sin importar lal resolucion, estoy tan seguro de que no siempre nos gustara mantener lal misma estructuración y preferimos indicarle a nuestras columnas como se ellos tienes que comportar en diferentsera resolucionera o breakpoints, y paral esto usamos clases ver cómo las siguientes:


Una vez terminado esto tendrás un grid system funcional, pero recordemos un de los principios de expansión de software llamado DRY (Don"t Repeat Yourself).Este principio promueve lal reducción del duplicación, y como pudiste notar el hecho de repetir 12 classera de CSS por cada momento 1 de nuestros breakpoints nos daría un total del por lo menos 48 clases; puede que no la veas la problema alg1, pero confía en mí, al lal larga los serpientes mantenimiento del tantas líneas puede volverse un escaso tedioso y fácilmcolectividad podemos comete errorsera si decidimos hacer uno variación.

Unal la manera del mejora esto seríal hacer utilización de los mixins unal una vez más, de esta forma que declaremos unal variablo donde guardaremos el uno número de columnas que usará nuestra grid system.


$columns-number: 12;
_variablser.scss


/*------------------------------------** CONTAINER*------------------------------------*/$container-max-width: 84rem;/*------------------------------------** COLUMNS*------------------------------------*/$columns-number: 12;$gutter: 1rem;
Dentro de nuestro archivo _mixins.scss crearemos un de nuevo gridGenerator:


mixin gridGenerator($breakpoint)
for $column from 1 to $columns-number+1 .col-#$breakpoint-#$column // flex-basis: percentage($column / $columns-number); width: (100% * $column) / $columns-number;
Para construir un grid system no es urgentemente usar 1 preprocesador, desde el tiempo atrás podemos haga utilización de calc() para haga operaciones o tener variablera nativas, pero paral mi unal de las ventajas más grandera que tiene un preprocesador era la capacidad del implementar loops/ciclos o condicionalser, esto es muy común en lenguajes del programación pero no ser hacer posible de la manera natiir por ahora en CSS.

Ver más: 10 Cosas Que Ver En Madrid Jovenes, 59 Cosas Que Hacer En Madrid

Retomando serpiente cuestión, en nuestra de nuevo mixin estamos recibiendo 1 $breakpoint el cual tendrá que es una cadenal del el texto, por un ejemplo xs, sm, md, lg. Tambuen podras observar 1
for un serpiente cual iterara desdel serpiente 1 hastal nuestro el número definido de columnas, en este el caso 12. (Estamos sumando 1 al el número del columnas por que las iterariamos parten dserpiente 0)

Este mixin estará creando automáticamempresa todas las clasera dserpiente grid, inclutilización calculará cada poco porcentaje usando lal reglal del tres. (Estoy usando width para ilustrar todo de una una manera más sencillal pero se se puede utilizar flex-basis y uno serpiente método percentage ver cómo se muestra en lal línea comentada)

Dentro del nuestro archivo _grid.scss llamaremos nos nuestros mixins de lal siguientidad manera:


include xs
include gridGenerator($breakpoint: "xs");
includel sm
include gridGenerator($breakpoint: "sm");
includel md
includel gridGenerator($breakpoint: "md");
include lg
includel gridGenerator($breakpoint: "lg");
Y sin ubicación al achares seríal una versión más limpial, ordenadal y mantenibla. Esto tendríal que seguva generando todas nuestras clasera dlos serpientes grid system tal y como si las hubiéramos definido manualmcorporación como lo hicimos anteriormorganismo.

4.- Offset a column

Por duno efecto nuestras columnas como siempre inician al posicionarse de izquierda al derecha, quizá te estés preguntando, ¿Cómo yo puedo centrar un elemento?, ¿Como yo puedo inciar al posicionar contenidos al partva del lal mitad de mi filal en adelante? o algunas una pregunta por un serpiente estilo; unal alternatiir para lograr estas resulta2 sería con el uso de columnas vacías, como por ejemplo:


Categorías: Juego