Apuntes CSS

Selectores Css
SelectoresEjemploDescripción
**Selecciona todos los elementos.
elementh1Selecciona todos los elementos <h1>.
#id#box-1Selecciona el elemento que tenga como atributo id='box-1'.
.class.bg-redSelecciona todos los elementos que tengan asignada la clase 'bg-red' (class='bg-red').
selector1, selector2h1, h2Selecciona todos los elementos <h1> y todos los elementos <h2>.
selector1 selector2#box-1 h2Selecciona todos los elementos <h2> que son descendientes del elemnto con id='box-1'.
selector1>selector2#box-1>pSelecciona todos los elementos <p> que son hijos del elemento con id='box-1'.
selector1+selector2h1 + pSelecciona todos los elementos <p> que están inmediatamente despues de un elemento <h1>.
selector1~selector2h1 ~ pSelecciona cada elemento <p> que está precedido por un elemento <h1>.
element.classdiv.bg-redSelecciona todos los elementos <div> que tienen asignada la clase 'bg-red' (class='bg-red').

Pseudo Clases

SelectoresEjemploDescripción
:hover#btn-1:hoverSe activa cuando el usuario interactua con un dispositivo señalador sobre el elemento con id=btn-1.
:linka:linkSelecciona todos los links no visitados.
:activea:activeSelecciona el link activo.
:visiteda:visitedSelecciona todos los links visitados.
:nth-child()tr:nth-child(3)Selecciona el tercer elemento <tr> de una tabla. Acepta tambien los parametros 'odd' y 'even' para seleccionar elementos pares e impares.

Pseudo Elementos

SelectoresEjemploDescripción
::afterp::afterInserta algo después del contenido de cada elemento <p>.
::beforep::beforeInserta algo antes del contenido de cada elemento <p>.
::first-letterp::first-letterSelecciona la primer letra de todos los elementos <p>.
::first-linep::first-lineSelecciona la primer linea de texto de todos los elementos <p>.



Flexbox

El módulo flexbox permite crear diseños más eficientes de lo que permite "position" y "float".
Flexbox controla la alineación de sus elementos hijos, el ancho y el alto para ocupar el espacio disponible.
El posicionamiento de elementos es unidireccional, es decir que podemos trabajar con una dirección vertical u horizontal, a diferencia de Grid que controla las dos direcciones. Algunos conceptos importantes:
Contenedor: es el elemento padre al cual es asignado un display: flex;
Item flexible: es cada uno de los hijos del contenedor.
Eje principal: es el eje que corresponde a la dirección asignada con flex-direction que puede ser row (predeterminada) o column.
Eje secundario: es el eje perpendicular al eje principal.


Propiedades del contenedor:


display:

ValorDescripción
flexAplican el diseño flexible a sus hijos y se comporta como un elemento en bloque.
inline-flexAplican el diseño flexible a sus hijos y se comporta como un elemento en línea.

flex-direction: (modifica el eje principal)

ValorDescripción
rowLos hijos se posicionan de forma horizontal. (valor predeterminado)
columnLos hijos se posicionan de forma vertical.
row-reverseLos hijos se posicionan de forma horizontal e invierten el orden original.
column-reverseLos hijos se posicionan de forma vertical e invierten el orden original.

flex-wrap:

ValorDescripción
wrapLos ítems son distribuidos en varias líneas.
nowrapLos ítems son distribuidos en una sola línea.
wrap-reverseLos ítems son distribuidos en varias líneas e invierte el inicio y el fin del eje principal.

flex-flow:

Atajo de flex-direction y flex-wrap por ejemplo: flex-flow: column wrap;


justify-content: (distribución del espacio en el eje principal)

ValorDescripción
flex-startAlinea los ítems al inicio.
flex-endAlinea los ítems al final.
centerAlinea los ítems al centro.
space-betweenEl primer ítem al inicio, el último al final y el resto distribuidos uniformemente.
space-aroundDistribuye los ítems uniformemente y todos tienen el mismo espacio a su alrededor.

align-items: (controla la alineación respecto del eje secundario)

ValorDescripción
flex-startLos ítems se alinean al inicio en base al eje secundario.
flex-endLos ítems se alinean al final en base al eje secundario.
centerLos ítems se alinean en el centro en base al eje secundario.
stretchLos ítems llenarán todo el espacio vertical.
baselineLos ítems están alineados en la línea de base del eje secundario.

align-content:

Ajusta las líneas dentro del contenedor cuando hay espacio extra en el eje secundario.
No tiene efecto en contenedores de una sola línea.

ValorDescripción
flex-startAlinea los ítems al inicio.
flex-endAlinea los ítems al final.
centerAlinea los ítems al centro.
space-betweenEl primer ítem al inicio, el último al final y el resto distribuidos uniformemente.
space-aroundDistribuye los ítems uniformemente y todos tienen el mismo espacio a su alrededor.
stretchEstira los ítems para que ocupen el eje secundario completo.

row-gap: y column-gap:

Espaciado entre los ítems en líneas y columnas. Es una alternativa al uso de padding o margin.


gap:

Atajo de row-gap y column-gap. Asignando un solo valor corresponde a las dos posibilidades y asignando dos valores el primero es para row-gap y el segundo para column-gap.




Propiedades de los ítems:


flex-grow:

Factor de crecimiento en relación a los demás hermanos en el espacio disponible. Valor por defecto: 0


flex-shrink:

Factor de decrecimiento en relación a los demás hermanos en el espacio disponible. Valor por defecto: 1


flex-basis:

Tamaño base de los ítems antes de aplicarle la distribución de espacio. Valor por defecto: auto.


flex:

Atajo de flex-grow flex-shrink y flex-basis.


align-self:

Aplica una alineación individual del ítem en el eje secundario.


order:

Ordena los ítems en base al valor asignado a esta propiedad.