Fundamentos de CSS

Selectores, Propiedades, Box Model y Flexbox

Selectores CSS

Los selectores se utilizan para seleccionar y aplicar estilos a elementos HTML.

Tipos de selectores

/* Selector de elemento */
p {
    color: blue;
}

/* Selector de clase */
.destacado {
    font-weight: bold;
}

/* Selector de ID */
#principal {
    width: 800px;
}

/* Selector universal */
* {
    margin: 0;
    padding: 0;
}

/* Selector de atributo */
a[target="_blank"] {
    color: red;
}

Ejemplo interactivo:

Este es un párrafo normal.

Este párrafo tiene una clase.

Este párrafo tiene un ID.

Este párrafo también tiene la misma clase.

Propiedades CSS

Las propiedades CSS definen el aspecto visual de los elementos HTML seleccionados.

Propiedades comunes

/* Ejemplo de propiedades CSS */
.elemento {
    color: #333;
    background-color: #f0f0f0;
    font-size: 16px;
    margin: 10px;
    padding: 15px;
    border: 2px solid #3498db;
    border-radius: 5px;
    width: 300px;
    height: 150px;
}

Ejemplo interactivo:

Este elemento tiene estilos aplicados mediante propiedades CSS: color rojo, fondo claro, padding, borde dashed y bordes redondeados.

Box Model (Modelo de Caja)

Todos los elementos HTML son considerados "cajas" con las siguientes propiedades:

/* Ejemplo de Box Model */
.caja {
    width: 300px;       /* Ancho del contenido */
    height: 150px;      /* Alto del contenido */
    padding: 20px;      /* Relleno interno */
    border: 5px solid #3498db;  /* Borde */
    margin: 30px;       /* Margen externo */
    
    /* Para incluir padding y border en el ancho/alto total */
    box-sizing: border-box;
}

Visualización del Box Model:

Contenido

Padding: 20px

Border: 5px sólido

Margin: 20px

Flexbox

Flexbox es un modelo de layout unidimensional que permite distribuir el espacio entre los elementos y alinearlos.

Propiedades principales de Flexbox

/* Contenedor flex */
.contenedor {
    display: flex;
    justify-content: center;    /* Centrado horizontal */
    align-items: center;        /* Centrado vertical */
    flex-direction: row;        /* Dirección en fila */
    flex-wrap: wrap;            /* Permitir múltiples líneas */
    gap: 10px;                  /* Espacio entre elementos */
}

/* Elementos flex */
.elemento {
    flex: 1;                    /* Capacidad de crecimiento */
    min-width: 100px;           /* Ancho mínimo */
}

Ejemplo de Flexbox:

1
2
3
4
5

Ejercicios Prácticos

Practica lo que has aprendido con estos ejercicios:

Ejercicio 1: Selectores

Crea un selector que convierta todos los elementos de clase "destacado" en texto azul y en negrita.

Ejercicio 2: Box Model

Crea una caja de 200x200px con un padding de 20px, un borde sólido de 5px y un margen de 15px.

Ejercicio 3: Flexbox

Crea un contenedor flex que centre sus elementos tanto horizontal como verticalmente con un espacio de 10px entre ellos.