Estilos Con CSS
Estilos Con CSS
Estilos Con CSS
CSS u Hojas de Estilos en Cascada (Cascading Style Sheets) es un lenguaje de estilos utilizado
para describir la presentación de un documento HTML (o XML). CSS controla el diseño, la
presentación y la apariencia visual de las páginas web, permitiendo separar el contenido
estructural de un documento HTML de su estilo y diseño, se puede controlar el diseño de
varias páginas web a la vez almacenando las reglas CSS en archivos .css
CSS es uno de los lenguajes base de la Open Web y posee una especificación estandarizada
por parte del W3C al igual que HTML.
▪ Eficiencia en la carga: Al utilizar CSS, puedes aplicar estilos de manera eficiente, lo que
resulta en archivos más pequeños y tiempos de carga más rápidos para tus páginas web.
Los estilos CSS se pueden aplicar a un elemento HTML a través de su atributo style
siguiendo esta sintaxis:
El selector define sobre que elemento o tipo de elemento se aplica el bloque de reglas CSS.
Existen diferentes tipos de selectores, por ejemplo, todos los elementos de HTML son un tipo
de selector.
La declaración: Una sola regla como font-family: 'Times New Roman', Times, serif;
especifica a cuál de las propiedades del elemento quieres dar estilo. Para este ejemplo, se
está especificando el tipo de fuente, para tener en cuenta:
Nota importante: no se debe dejar espacio entre el valor y la unidad de medida: 1.5em o
300px...
El valor de la propiedad, separado del nombre de la propiedad por dos puntos (:), le permite
elegir una de muchas posibles apariencias para una propiedad determinada, por ejemplo el
valor de color es #ab10f5, es un valor de color hexadecimal que comienza con el signo de
número (#) y seis (6) dígitos: los dos primeros indican la cantidad de rojo ( ab), los dos
siguientes indican la cantidad de verde (10) y los dos últimos indican la cantidad de azul (f5)
de allí el nombre RGB (red, green, blue).
Los estilos CSS también pueden ser aplicados a elementos HTML de distintas páginas, para
ello, se crean reglas de estilo en archivos independientes con extensión .css y siguiendo el
mismo formato de regla CSS de la ilustración anterior, estos archivos luego se vinculan a los
documentos HTML mediante el elemento <link> del elemento <head> siguiendo esta sintaxis:
El atributo rel="stylesheet" indica la relación que tendrá el archivo .css con este documento
HTML será de "hoja de estilos".
El atributo href="archivo.css" apunta al archivo que contiene las reglas de estilo. Tener en
cuenta la ruta absoluta o relativa de la ubicación del archivo.css.
html\introduccion_css.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Salida:
<title>Introducción a CSS</title>
<style>
/* un comentario CSS */
h2 {
font-family: Calibri;
background-color: mediumpurple;
box-shadow: 5px 5px 5px rgb(224, 228, 229);
padding-left: 10px;
color: white;
}
p {
border: 1px solid mediumaquamarine;
padding: 5px;
Salida:
Al contenido se han agregado tres encabezados <h2> y tres párrafos <p> con diferente
contenido y sin el atributo style en sus etiquetas de apertura.
Además, dentro del elemento <head> se ha agregado el elemento <style> y dentro de este,
dos reglas CSS, una para aplicar estilos a todos los encabezados <h2> y otra para definir los
estilos de todos los párrafos <p>.
En el ejemplo anterior, los estilos se aplicarán a todos los <h2> y a todos los <p>.
Ejercicio: Demostración de aplicación de estilos desde un archivo .css externo. Estas reglas
CSS podrán ser aplicadas a varios archivos HTML.
Salida:
Para aplicar estilos desde un archivo .css externo, cree el archivo estilos.css en la carpeta del
html con el siguiente código:
html\estilos.css
ul {
list-style-type: none;
padding: 0;
margin: 0;
}
li {
padding: 8px 16px;
border-bottom: 1px solid #ddd
}
Guarde el archivo.
Se han creado dos reglas CSS, una para la lista no ordenada <ul> y otra regla para cada uno
de los ítems <li>.
padding: 8px 16px; agrega un margen interno de 8 pixeles el eje Y y 16 pixeles en el eje
X
border-bottom: 1px solid #ddd define un borde inferior para cada item de color gris
Importante:
html\introduccion_css.html
</style>
<link rel="stylesheet" href="estilos.css">
</head>
Salida:
Ahora se aplicarán los estilos en el <div> que contiene la imagen y el texto <small> de la
leyenda o texto descriptivo de la imagen.
html\estilos.css
div {
width: 600px;
small {
font-family: Calibri;
font-style: italic;
display: block;
text-align: right;
padding-right: 20px;
}
Guarde el archivo.
Se han creado dos reglas CSS, una para el <div> contenedor y otra regla para el texto
del<small>.
Observe los cambios, verá la imagen y el texto de la leyenda dentro de un marco o panel y el
texto de la leyenda en un tipo de letra diferente y alineado a la derecha.
Tener en cuenta que <small> por defecto es un elemento en línea pero en el ejemplo se le
está cambiando ese comportamiento para que se muestre como un bloque y así poder
desplegar la leyenda a la derecha del contenedor.
Consejo: Queda a discreción del estudiante experimentar con otras formas de aplicar los
estilos vistos y consultar otros de su preferencia. También, el editor VS Code le irá sugiriendo
otros estilos y valores, uno de los mejores retos de esta profesión está en realizar este tipo de
pruebas, pierda cuidado, su código no se va a estropear, en el peor de los casos presione
Ctrl + Z
integer (entero): es un valor entero usado para algunas propiedades CSS que no tiene
unidades, ejemplo: 37, -67.
number (número): representa un número decimal o entero, ejemplo: 3.15, -5.3, 0.34.
dimension (dimensión): es un number con una unidad asociada (sin espacio entre ambos),
ejemplo: 10px, 15s, 120deg. dimension es una categoría general que incluye:
El tipo de dato de uso más frecuente es length, por ejemplo, 10px (píxeles) o 30em, se utilizan
dos longitudes diferentes: relativa y absoluta. Es importante conocer la diferencia para
entender qué dimensiones van a tener las cosas.
Las unidades de longitud absoluta en general se consideran que siempre tienen el mismo
tamaño:
La mayoría de estos valores son más útiles cuando se usan en una salida en formato impreso
que en la salida de pantalla. Por ejemplo, normalmente no usamos cm (centímetros) en
pantalla. El único valor que usarás de forma frecuente es px (píxeles).
Las unidades de longitud relativa son relativas con respecto a algo más, por ejemplo, al
tamaño de letra del elemento principal o al tamaño de la ventana gráfica. La ventaja de usar
unidades relativas es que con una planificación cuidadosa puedes lograr que el tamaño del
texto u otros elementos escalen en relación con todo lo demás en la página:
Unidad Relativa a
Tamaño de letra del elemento padre, en el caso de propiedades tipográficas como font-size, y
em
tamaño de la fuente del propio elemento en el caso de otras propiedades, como width.
ex Altura x de la fuente del elemento.
ch La medida de avance (ancho) del glifo "0" de la letra del elemento.
html\unidades_medida_1.html.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Práctica unidades de medida</title>
</head>
<body>
<div style="font-size: 1em;">
<p style="width: 300px; border: 1px solid gray">Párrafo con 300px de ancho</p>
<p style="width: 15vw; border: 1px solid gray">Párrafo con 15vw de ancho</p>
<p style="width: 10em; border: 1px solid gray">Párrafo con 10em de ancho</p>
</div>
</body>
</html>
Salida:
El primer párrafo tiene un ancho ("width") establecido en píxeles. Como px es una unidad
absoluta, este ancho será siempre el mismo aunque lo demás cambie.
El tercer párrafo utiliza unidades em. Son unidades relativas al tamaño de la letra. En el <div>
se ha ha establecido el tamaño de la fuente de 1em, si se cambia este valor a 1.5em, verá que
el tamaño de letra de todos los elementos aumenta, pero solo se amplía el ancho del marco
del último párrafo, porque el ancho es relativo a ese tamaño de letra.
Unidades em y rem
Estas son dos de las unidades relativas más comunes para temas de tamaño, por ejemplo, de
cajas de texto. Por eso, un ejemplo adicional.
html\unidades_medida_2.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Unidades de medida em y rem</title>
</head>
<body>
<div style="font-size: 16px">
<ul>
<li style="font-size: 1.5em">Uno</li>
<li style="font-size: 1.5em">Dos</li>
<li style="font-size: 1.5em">Tres
<ul>
<li style="font-size: 1.5em">Tres (A)</li>
<li style="font-size: 1.5em">Tres (B)
<ul>
<li style="font-size: 1.5em">Tres (B)(1)</li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li style="font-size: 1.5rem">Uno</li>
<li style="font-size: 1.5rem">Dos</li>
<li style="font-size: 1.5rem">Tres
<ul>
Salida:
En la primera lista <ul>, todos los elementos <li> tienen un tamaño de fuente de 1.5em no
importa en qué nivel de anidamiento se encuentran dentro de las listas <ul>.
La diferencia con la segunda lista <ul>, es que todos los <li> tienen un tamaño de fuente de
1.5rem.
Algunas propiedades CSS utilizan números sin ninguna unidad asociada, por ejemplo, es
atributo opacity indica cuan transparente puede ser la representación de un elemento en el
navegador, cero (0) para trasparente y uno (1) para opaco.
Ejemplo:
div {
opacity: 0.5;
}
Indica que todos los elementos <div> de la página tendrán un nivel de opacidad medio.
Esta unidad de medida se establece en relación con otro valor, por ejemplo, un atributo font-
size o width de un elemento como porcentaje, será un porcentaje del font-size o del width
del elemento padre.
html\unidades_medida_3.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Unidades de medida porcentual</title>
<style>
p {
border: 1px red dotted;
}
</style>
</head>
<body>
<p style="width: 300px;">Párrafo con 300px de ancho</p>
<p style="width: 40%;">Párrafo con 40% de ancho</p>
<div style="width: 600px; border: 2px green solid;">
<p style="width: 300px;">Párrafo con 300px de ancho</p>
<p style="width: 40%;">Párrafo con 40% de ancho</p>
</div>
Salida:
En el ejemplo anterior se crean dentro del <body> dos párrafos <p> con el tamaño indicado en
unidades de 300 pixeles y 40% de porcentaje respectivamente, también se crea un <div> y
dentro de él nuevamente se ponen dos párrafos similares a los anteriores. El <div> tiene un
ancho de 600 pixeles.
Los párrafos tienen borde establecido desde el elemento <style> y el <div> tiene borde
establecido desde su propia etiqueta de apertura.
Tenga en cuenta que los dos últimos párrafos <p> están dentro de un <div> contenedor que
tiene 600 pixeles de ancho.
Cuando se muestra la página en el navegador los párrafos <p> que tienen el tamaño en pixeles
tienen el mismo ancho pero los párrafos <p> que tienen el tamaño en porcentaje (%) cambian
de tamaño, el último párrafo tiene un tamaño del 40% de 600 pixeles de su contenedor,
mucho mas pequeño que su homólogo del <body>.
...
li {
font-size: 80%;
}
</style>
...
<ul>
<li>Uno</li>
<li>Dos</li>
<li>Tres
<ul>
Salida:
En <style> se ha creado una regla CSS para los <li> con un font-size: 80%; Observe que
en el navegador los elementos de la lista anidada se vuelven progresivamente más pequeños
en los niveles más internos de la anidación a medida que heredan del padre.
En las reglas CSS los selectores se utilizan para indicar con precisión a que elementos HTML o
partes de estos se le quiere aplicar un estilo. Existe una amplia gama de selectores CSS, esto
permite exactitud a la hora de seleccionar a que se partes de la página se van a aplicar los
estilos.
En todos los ejemplos anteriores los selectores de las reglas CSS han sido los mismos
elementos HTML pero el grupo de selectores va más allá de ser sólo elementos.
Grupos de selectores
Si dos o más reglas CSS describen el mismo bloque de declaraciones, se podrán agrupar en
una sola regla CSS separando sus selectores con coma (,).
div {
color: yellow;
font-family: Verdana;
}
div, p {
color: yellow;
font-family: Verdana;
}
Los selectores de tipo incluyen todos los elementos HTML como <li>, <table>, <img>,
<main>, etc. vistos en los ejemplos anteriores.
Los selectores id representan los elementos que tienen el atributo id de la siguiente forma:
Código HTML:
<p class="clase">Un párrafo con un atributo class</p>
Regla CSS: Los atributos id son representados por un signo de número (#) en CSS.
#marca {
color: green;
}
También podría escribirse como p#marca {...} con el nombre del elemento precediendo el
#.
Los selectores clase representan los elementos que tienen el atributo class de la siguiente
forma:
Código HTML:
<p class="clase">Un párrafo con un atributo class</p>
<div class="clase">Y una sección con el mismo valor de class</div>
Regla CSS: Los atributos class son representados por un signo de punto (.) en CSS.
.clase {
background-color: azure;
}
En este ejemplo , se está aplicando el mismo color de fondo a un <p> y a un <div>, ambos
tienen el mismo valor del atributo class.
html\selectores_css_1.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="styles.css">
<title>Ejemplo de Selectores CSS - parte 1</title>
<style>
body {
font-family: Calibri, sans-serif;
}
#titulo-principal {
color: mediumturquoise;
text-align: center;
}
.parrafo {
color: green;
font-style: italic;
}
.derecha {
text-align: right;
padding-right: 20px;
}
</style>
</head>
<body>
<h1>Selectores de tipo, id y class</h1>
<header id="titulo-principal">
<h2>Mi Página Web</h2>
</header>
<section>
<p class="parrafo">Este es un párrafo con clase.</p>
<p>Otro párrafo sin clase.</p>
<p class="parrafo derecha">¡Un tercer párrafo con clase!</p>
</section>
</body>
</html>
Salida final:
#titulo-principal { selector de id
color: mediumturquoise; color azul turquesa
text-align: center; texto alineado al centro
}
Al primer párrafo se ha asignado el atributo class="parrafo" con el cual se aplican los estilos:
El tercer párrafo tiene el atributo class="parrafo derecha" por lo que se aplican los estilos
del primer párrafo y adicionalmente los estilos:
Por último, toda la página tiene un tipo de letra Calibri o sans-serif por el estilo aplicado
al <body>:
Selectores de atributo
Consejo: Digite primero el código HTML y pruébelo, luego vaya creando cada una de las reglas
CSS y pruébelas una a una para que observe que cambios ocurre en presentación en el
navegador.
html\selectores_css_2.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo de Selectores CSS - parte 2</title>
<style>
body {
font-family: Calibri, sans-serif;
}
[title] {
border: 1px solid brown;
}
li[alt] {
background-color: lightyellow;
}
li[title="tres"] {
color: tomato;
}
</style>
</head>
<body>
<h1>Selectores de atributo</h1>
<ul>
<li title="uno">Opción uno</li>
<li alt="alterno">Opción dos</li>
<li title="tres">Opción tres</li>
</ul>
</body>
</html>
Salida final:
Se ha creado una lista <ul> con tres elementos <li> con atributos title y alt.
El código HTML:
<ul>
<li title="uno">Opción uno</li>
<li alt="alterno">Opción dos</li>
<li title="tres">Opción tres</li>
</ul>
Dentro del elemento <style> de <head> Se han creado tres reglas de estilo CSS para aplicar
estilos a los <li> según su tipo de atributo.
Regla CSS:
[title] { para cualquier elemento con el atributo title
border: 1px solid brown; borde de un pixel de grosor, trazado sólido y color café
}
En este ejemplo , se aplicará un estilo de borde color café a cualquier elemento que tenga el
atributo title. Observar que se aplica al primer y tercer <li>.
Regla CSS:
li[alt] { todos los elementos <li> con el atributo alt
background-color: lightyellow; color de fondo amarillo claro
}
En este ejemplo , se aplicará un estilo de color de fondo amarillo claro a los elementos <li>
que tenga el atributo alt. Observar que se aplica sólo al segundo <li>.
Regla CSS:
li[title="tres"] { todos los elementos <li> con el atributo title y valor igual a
"tres"
color: tomato; color de letra rojo tomate
}
En este ejemplo , se aplicará un estilo de color de fuente a los elementos <li> que tenga el
atributo title con el valor "tres". Sólo el tercero de los tres <li> tiene ese valor en su
atributo title.
Consejo: Digite primero el código HTML y pruébelo, luego vaya creando cada una de las reglas
CSS y pruébelas una a una para que observe que cambios ocurre en presentación en el
navegador.
html\selectores_css_3.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo de Selectores CSS - parte 3</title>
<style>
[title~="fruta"] {
background-color: bisque;
}
[title|="verdura"] {
border-bottom: 1px solid red;
}
[title^="verd"] {
padding-left: 20px;
list-style-type: circle;
}
li[title*="frut"] {
color: green;
font-weight: bold;
}
[title$="escencia"] {
text-align: center;
}
</style>
</head>
<body>
<h1>Otros selectores de atributo</h1>
Salida final:
Se ha creado una lista <ul> con varios elementos <li> y diferentes atributos para estos. Los
estilos aplicados:
Un selector CSS puede contener más de un selector simple. Entre los selectores simples
podemos incluir un combinador. Hay cuatro combinadores diferentes en CSS:
Selector de descendientes (espacio), coincide con todos los elementos que son
descendientes de un elemento específico.
Sugerencia: instale la extensión Lorem ipsum para generar texto de prueba y ahorrar tiempo
digitando.
La forma de uso:
Seleccione el menú View > Command Palette… o la combinación de teclas .Shift. + .Ctrl. + .P. y
en la caja de texto digite .>lorem... y seleccione la opción que más se ajuste a sus necesidades.
Salida:
Código CSS:
div p {
background-color: yellow;
}
Indica que todos los elementos <p> dentro de un <div> (no importa a que nivel) tendrán color
de fondo amarillo.
Selector de hijos (>), selecciona todos los elementos que son hijos directos de un elemento
específico.
html\selectores_css_4b.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo de Selectores CSS - parte 4b</title>
<style>
div > p {
background-color: yellow;
}
</style>
</head>
<body>
<h2>Selector de hijos</h2>
<p>Amet et pariatur sunt proident et commodo.</p>
<div>
Salida:
Código CSS:
div > p {
background-color: yellow;
}
Indica que todos los elementos <p> dentro de un <div> (hijos o de primer nivel) tendrán color
de fondo amarillo.
Selector de hermanos adyacentes (+), se utiliza para seleccionar un elemento que está
directamente después de otro elemento específico. Los elementos hermanos deben tener el
mismo elemento padre y "adyacente" significa "inmediatamente siguiente".
Salida:
Código CSS:
div + p {
background-color: yellow;
}
Selecciona el primer elemento <p> que se coloca inmediatamente después (no dentro) de los
elementos <div>.
Selector general de hermanos (~), selecciona todos los elementos que son hermanos
próximos de un elemento específico.
El siguiente ejemplo selecciona todos los elementos <p> que son hermanos próximos de los
elementos <div>:
html\selectores_css_4d.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo de Selectores CSS - parte 4d</title>
<style>
div ~ p {
background-color: yellow;
}
</style>
</head>
<body>
<h2>Selector general de hermanos</h2>
Salida:
Código CSS:
div ~ p {
background-color: yellow;
}
Selecciona el todos los elemento <p> que se coloca inmediatamente después (no dentro) de
los elementos <div>, no importa si hay otro tipo de elemento de por medio.
Pseudoclases
Sintaxis:
selector:pseudoclase { observe los dos puntos (:) de separación
propiedad: valor;
}
html\selectores_css_5a.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo de Selectores CSS - parte 5a</title>
<style>
/* enlace no visitado */
a:link {
color: red;
}
/* enlace visitado */
a:visited {
color: green;
}
/* los párrafos dentro de div cuando pase el ratón por encima del div */
div:hover p {
display: block;
}
</style>
Guarde y abra el archivo desde el navegador, pruebe a pasar el ratón por el párrafo
sugerido.
Salida:
Código CSS:
Se crean diferentes selectores de tipo pseudoclase para mostrar el enlace en sus diferentes
estados:
a:link no visitado
a:visited visitado
a:hover cuando pasa el ratón por encima
a:active cuando hace clic sobre el enlace sin haber soltado el botón del ratón
div:hover p { seleccionar el <p> dentro del <div> cuando se pase el ratón por encima
del <div>.
display: block; muestre el <p> en bloque (su forma natural).
}
Pseudoelementos
Sintaxis:
selector::pseudoelemento { observe los doble dos puntos (::) de separación
propiedad: valor;
}
html\selectores_css_5b.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Ejemplo de Selectores CSS - parte 5b</title>
<style>
/* primera línea del párrafo */
p::first-line {
color: mediumvioletred;
font-style: oblique;
font-family: Calibri;
}
Guarde y abra el archivo desde el navegador, prueba a cambiar el tamaño de la ventana del
navegador y observe el comportamiento de la primera línea del párrafo.
Salida:
El selector universal
Código CSS:
* {
text-align: center;
color: blue;
}
Código HMTL:
<h1>Hola a todos!</h1>
Salida:
En HTML y CSS todo tiene una caja alrededor, y comprender estas cajas es clave para poder
crear diseños con CSS o para alinear elementos con otros elementos.
Cabe recordar que en general hay dos tipos de cajas: cajas en bloque y cajas en línea. Estas
características se refieren al modo cómo se comporta la caja en términos de flujo de página y
en relación con otras cajas de la página:
A menos que se decida cambiar el tipo de visualización a en línea (inline), elementos como
los encabezados <h1>…<h6> y los párrafos <p> usan por defecto en bloque (block) como tipo
de visualización externa.
El tipo de caja que se aplica a un elemento está definido por los valores de propiedad display,
como block y inline, y se relaciona con el valor externo (outer) de visualización (display).
▪ borde (border), es el límite que separa el interior del exterior del elemento. Se modifica
su tamaño y estilo mediante la propiedad border.
▪ márgen (margin), es la parte exterior del elemento, por fuera del borde, encierra el
contenido, el relleno y el borde. Se modifica su tamaño mediante la propiedad margin.
▪ relleno (padding), es la parte interior del elemento, entre el contenido y el borde. Se
modifica mediante la propiedad padding.
▪ contenido, es la parte interior del elemento, excluyendo el relleno. Su tamaño puede
cambiarse utilizando propiedades como width y height.
Se recomienda revisar los siguientes sitios (y ojalá otros de su propia búsqueda) para
profundizar un poco más sobre el concepto y practica del modelo de caja:
▪ https://developer.mozilla.org/es/docs/Learn/CSS/Building_blocks/The_box_model
(texto)
▪ https://lenguajecss.com/css/modelo-de-cajas/que-es/ (texto)
▪ https://www.youtube.com/watch?v=4CMOII_oiU0 (video)