HTML
HTML
¿Qué es HTML?
Si abres la opción "inspeccionar elementos" en tu navegador, podrás ver el "código fuente" de
la página. Es decir, el archivo que nosotros vamos a crear. El navegador interpretará esa
información y eso es lo que verás en la pantalla de tu ordenador.
Dentro de cualquier aplicación web podemos inspeccionar los elementos para ver el código
fuente (os dejamos un ejemplo a continuación), es decir el fichero que vamos a generar
nosotros. El navegador web interpretará esa información y es lo que nosotros veremos en
nuestra pantalla
Lenguaje Marcado
Las siglas de HTML son HyperText Markup Language (Lenguaje de marcas de hipertexto) o
“traducido” lenguaje de etiquetas que te permite hacer referencia a todo tipo de información.
<!DOCTYPE html>
<html>
<head>
<title>This is a Title</title>
</head>
<body>
<h1>I´m a Heading</h1>
<p>This is a paragraph</p>
</body>
</html>
¿Qué es una etiqueta de HTML5? Bueno, pues es una manera de agrupar información y darle
más importancia. El nombre de la etiqueta se refiere a la información que contiene. Las
etiquetas HTML siguen una estructura "casi siempre" igual:
<etiqueta>contenido</etiqueta>
Hay cierta complejidad en cuanto a que no puedes usar cualquier palabra como etiqueta
de HTML5 y en la estructura que debe seguir un documento de este tipo. Esto nos lleva a
hablar de la semántica del lenguaje de marcado.
Cuando creamos documentos HTML semánticos, estamos ayudando a tener una internet capaz
de procesar información de manera independiente. Un ejemplo son los buscadores [GoogleBot
- el robot de búsqueda de Google], que son capaces de acceder, analizar e indexar páginas en
su buscador.
CODIGO DE APUNTES:
|_CODING
|_HTML5
|_01.HTML_STRUCTURE
|_index.html
|_ [Link]
|_index.html
El <html>es el elemento raíz de una página HTML. Además, es la etiqueta en la que podemos
seleccionar el idioma a través del atributo lang.
<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>
</body>
</html>
TIPO DOCUMENTO
Para indicar que se trata de un document html al principio de nuestro código debemos hacer
uso de la etiqueta.
<!DOCTYPE html>
Cabecera o <head>
La etiqueta de cabecera o <head> es la primera parte que se incluye en el interior de
las etiquetas <html>.
En ellas incluimos nuestros metadatos, que son elementos no visibles por el usuario
pero que conforman información al navegador. También es el lugar donde se relaciona
con otros documentos.
Cuerpo o <body>
Es el cuerpo de la página y se encuentra dentro de las etiquetas <html> e
inmediatamente después de <head>.
Dentro del <body> incluimos todas las etiquetas que tienen un efecto visual y que el
navegador renderiza para que el usuario pueda observar la representación de las
mismas.
Composición de una etiqueta HTML
<nombre-etiqueta nombre-atributo="valor-atributo">content</nombre-etiqueta>
Podemos decir que la parte fundamental de una etiqueta está compuesta por la
apertura [<apertura-etiqueta>] y el cierre de la etiqueta [</cierre-etiqueta>].
Y os preguntaréis si podéis poner el nombre de la etiqueta que queráis y la respuesta
es NO, ya que HTML nos da un listado de etiquetas con las que trabajar
Como último punto debéis tener en cuenta que tiene tanta importancia el contenido
como el buen uso o encapsulamiento en una etiqueta. Esto viene provocado por los
robots que leen nuestro contenido no lo entienden, pero si la etiqueta.
<h1>I´m a title</h1> 👍🏼
<p>I´m a title</p> 👎🏽
Atributos HTML
Dentro de las etiquetas nos podemos encontrar atributos. Los atributos
contienen cierta información sobre la etiqueta o su modo de actuar
(contenido), es decir, proporcionan información adicional.
<p id="name">Alberto Rivera</p>
En este punto vemos que <p> sería la etiqueta y hemos añadido un
atributo id cuyo valor asignado es “name”, de este modo tenemos una
etiqueta con un atributo de tipo identificador (id) que hace referencia al
contenido de dicha etiqueta.
Ahora os volveréis a preguntar si podemos usar un atributo a nuestra
elección y la respuesta es si y no, es decir cada etiqueta tiene un conjunto
de atributos que podemos usar pero existen algunos casos en los que
podemos crearlos libremente.
En resumen:
1. Todos los elementos HTML pueden tener atributos
2. Los atributos proporcionan información adicional sobre los
elementos .
3. Los atributos siempre se especifican en la etiqueta de inicio
4. Los atributos generalmente vienen en pares de nombre/valor
como: nombre="valor"
Comentario HTML
Por último y para finalizar decir que en ocasiones queremos dejar un
comentario dentro de nuestro fichero HTML y que no sea visible para el
usuario en el navegador.
<!-- Esto es un comentario y el navegador no lo muestra -->
Shortcut: mayús + alt + A
El usuario no verá este mensaje, solamente lo veremos nosotros y los
compañeros que tengan acceso a nuestro fichero.
Atributos comunes HTML
HTML está formado por etiquetas. Cada etiqueta tiene una misión y
tarea y contendrá cierto contenido relacionado con su misión. Y
además tenemos los atributos, que son palabras clave de texto que
modifican ligeramente el comportamiento de la etiqueta que lo
contiene.
Atributo id
El identificador id se suele usar cuando queremos localizar un
elemento dentro de nuestro documento y sabemos que dicho
elemento o etiqueta no se va a repetir dentro de nuestro documento.
Este es un identificador ÚNICO, por lo que varios elementos no
podrán tener el mismo id. También lo utiliza JavaScript para acceder y
manipular el elemento con la identificación específica.
Para usarlo simplemente añadimos id y añadimos el nombre como
valor del atributo. Este nombre no deberá comenzar por números y
puedes mezclar mayúsculas, minúsculas u otros caracteres.
<div id="personal_info">
<p>Alberto Rivera</p>
<p>Desarrollador Full Javascript</p>
</div>
Atributo class
La idea de la clases es asociar características comunes a diferentes
etiquetas, es decir si tenemos varios <p> que queremos que
visualmente sean iguales podemos asignarles la misma clase y así su
visualización en el navegador será similar.
Por lo tanto, esta será la principal diferencia entre id y class, la
posibilidad de asociar estilos comunes a varios elementos.
Atributo idioma
Utilizar el atributo lang es muy sencillo. Como cualquier otro atributo,
se incluye en la etiqueta del elemento y se utiliza = para asignarle un
valor.
Siempre debe incluir el langatributo dentro de la <html>etiqueta,
para declarar el idioma de la página web. Esto se usa para ayudar a
los motores de búsqueda y navegadores.
<p lang="es">Soy un texto.</p>
<!doctype html>
<html lang="es">
....
<body>
<p>Texto en español</p>
<p lang="en">Text in english.</p>
<p>saludo, en inglés <span lang="en">hello</span>, que significa
hola.</p>
</body>
</html>
Atributo no traducible
También podemos utilizar el atributo translate para indicar si el
contenido de un texto es o no traducible.
<p>
hoy he comido un <span translate="no">Sandwich</span>.
</p>
Atributo title
El atributo title define alguna información adicional sobre un
elemento.
El valor del atributo de título se mostrará cuando el usuario detenga
el ratón sobre el elemento un instante.
<div>
<img src="[Link]"
alt="logotipo de Wiki Boot."
title="Es una imagen con el logotipo" />
</div>
Atributo dirección
El atributo dir nos ayuda a marcar la dirección de nuestras cadenas
de texto que se visualizan dentro de las aplicaciones web. Esto es
perfecto cuando tenemos que trabajar con multi-idioma, ya que
algunos idiomas como el japonés su lectura es de izquierda a
derecha.
Por defecto el valor es ltr por ello solamente tendremos que indicar
los campos rtl.
<p>Dirección de izquierda a derecha.</p>
<p dir="rtl">Dirección de derecha a izquierda.</p>
Atributo dataset
La mayoría de los metadatos que se incluyen en una web están
insertados dentro del <head>. Sin embargo, no es la única manera
que tenemos de insertarlos, también podemos hacerlo a través de las
etiquetas que contengan el atributo con prefijo data- (data-share por
ejemplo).
Normalmente esto está orientado a usarse junto a js:
<div id="compartir">
<a href="[Link]
data-share="190">Twitter</a>
<a href="[Link]
data-share="340">Facebook</a>
</div>
Atributo style
El atributo style utiliza las etiquetas de HTML y sirve para incrustar
código CSS directamente en la etiqueta. También se le llama css en
línea.
Normalmente la mejor forma de insertar este código css es a través
de un documento con la extensión .css aparte. Esto nos aporta mejor
visualización, ordenación y facilidad. Sin embargo, hay situaciones en
las que puede que nos veamos obligados a insertar este css en línea.
Os vamos a poner un ejemplo de código de este atributo style:
<p style="background: blue; color: whitesmoke;">Usando el atributo
style</p>
Etiquetas de relación
Bienvenidos a la sección de cabeceras de HTML. Cuando hablamos
de la estructura de un documento de HTML5 una parte que tratamos
fue la cabecera o <head> ahora vamos a ver las etiquetas más
importantes que se suelen usar dentro de estas.
El <head>elemento es un contenedor de metadatos (datos sobre
datos). Los metadatos HTML son datos que no se muestran al usuario
sobre el documento HTML. Además, contiene el título del documento
y el enlace a las hojas de estilos que asociemos.
En la etiqueta <head> se sitúa el título del documento. Aquí también
encontraremos el enlace a la hoja de estilos que asociemos a nuestro
documento.
En resumen, el elemento HTML <head> se coloca entre
la <html>etiqueta y la <body>etiqueta y es un contenedor para los
siguientes
elementos: <title>, <style>, <meta>, <link>, <script>y <base>.
<head>
<link rel="icon" href="./assets/[Link]" />
</head>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<script type="text/javascript" src="./[Link]"></script>
<link rel="stylesheet" href="./[Link]">
<title>My first document</title>
</head>
<body>
<p>Esto es una prueba de que funciona la conexión entre archivos</p>
</body>
</html>
[Link]
Una vez creados todos los documentos con su información, abrimos el
[Link] en el navegador para ver si hemos podido conectar o no
nuestros ficheros.
p{
color: blueviolet;
}
<head>
<meta name="theme-color" content="#4285f4" />
<meta name="description" content="Esta es la descripción en
metadatos" />
<meta name="keywords" content="web, programar, site,
metadatos" />
<meta name="author" content="Alberto Rivera" />
<meta name="viewport" content="width=device-width, initial-
scale=1.0" />
</head>
<head>
<meta name="google" content="nositelinkssearchbox" />
<meta name="google" content="notranslate" />
<meta name="robots" content="index, nofollow" />
<meta name="robots" content="none" />
<meta name="googlebot-news" content="nosnippet">
</head>
Existe además un último atributo http-equiv usado para que los
robots del buscador sepan que se deben cambiar las cabeceras HTTP
al realizar ciertas acciones. Hay que tener en cuenta que este
elemento no tiene soporte en algunos navegadores.
<head>
<!-- refresh redirige a la URL pasados los segundos indicados -->
<meta http-equiv="refresh"
content="300;url=[Link] />
<!-- Expires es la fecha a partir de la que consideramos la página
expirada -->
<meta http-equiv="expires" content="Fri, 29 Apr 2016 12:56:00 GMT" />
<!-- Pragma indica si queremos que se guarde o no la caché -->
<meta http-equiv="pragma" content="no-cache" />
<!-- Este es el especial que indica a Internet si debe o no guardar la
caché -->
<meta http-equiv="cache-control" content="no-cache" />
</head>
RRSS
Igual que para añadir título y descripción a una página web lo
hacemos con etiquetas de metadatos, existen un tipo de etiquetas de
metadatos especiales orientadas a redes sociales. Así, se pueden
añadir títulos y descripciones especiales para estos sites.
Por ejemplo Facebook utiliza el protocolo Open Graph, que lo que
hace es que, cuando nosotros insertamos en nuestra página web un
enlace de facebook este protocolo lo analizará en busca de
metadatos que puedan incluir información adicional.
En caso de encontrarlos, creará sus propios metadatos. Lo que esto
nos posibilita es personalizar nuestra web aún más ya que convierte
este enlace insertado en información como si la vieses en la propia
red social.
Las propiedades obligatorias en Open Graph serán og:title, que hace
referencia al título del objeto, og:type, que es el tipo de objeto que
insertamos. og:image, que será la imagen que represente al objeto
que estamos insertando y og:url, que será la url del objeto que se
usará como ID.
<head>
<title>The Rock (1996)</title>
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="[Link]" />
<meta property="og:url"
content="[Link] />
<meta property="og:image"
content="[Link] />
</head>
Por su parte Twitter utiliza Twitter Cards, que servirá para lo mismo
que la anterior herramienta. Esta permitirá modificar datos como el
formato y tipo de la información mostrada, el nombre del autor de la
página del enlace, el título, descripción e imagen de presentación,
etc.
<head>
<meta property="twitter:card" content="mi_imagen_perfil" />
<meta property="twitter:creator" content="@Alberto" />
<meta property="twitter:title" content="Título" />
<meta property="twitter:description" content="Descripción" />
<meta property="twitter:image:src" content="mi_imagen.jpg" />
</head>
Hay que aclarar que para usar Twitter Cards debemos registrarnos
previamente en Twitter Developers y deberán analizar si nuestra web
cumple o no los requisitos.
RESUMEN:
1. Qué son las etiquetas de cabeceras y los tipos que existen.
2. Que el <head> contiene metadatos o cosas que como usuarios no
vemos en la web y el <body> contendrá toda la parte visual.
3. Los elementos que podemos usar dentro de la <head> etiqueta
4. Qué son las etiquetas de metadatos y para qué sirven.
5. Los atributos especiales de Google.
6. Cómo funcionan los robots de Google.
7. Cómo usar el atributo http-equiv.
8. Qué son las etiquetas de redes sociales.
9. Cómo usar las herramientas que las redes sociales ponen a nuestra
disposición.
Etiquetas de texto
En una descripción rápida, se puede decir que en un documento
HTML existen dos tipos de etiquetas: las que contienen texto y las
que agrupan información (pueden incluir textos).
Existen algunas etiquetas que simplemente cambian la visualización
del contenido y a nivel sintáctico nos ayuda a entender el elemento
que queremos representar. Por ello vamos a realizar una breve
mención de algunas de ellas y dejar algún ejemplo de uso, ya que
todas funcionan igual.
<p>Me gustaría hacer un <em>énfasis</em> especial en este punto.</p>
<p>Esta parte es <strong>muy importante.</strong></p>
<p>Esta parte quiero que esté <mark>subrayada</mark></p>
<p>Esta parte es <i>itálica</i></p>
<p>Esta parte ni me va ni me <b>viene</b></p>
<p>si escribo burro con v es <u>vurro</u></p>
<p>Estaba yo pensando... que igual esto no es tan
<s>importante.</s></p>
<p>Esta parte es importante
<span style="color: red;"> y esta muy importante.</span>
</p>
<p>Como dijo un sabio <cite>"A programar se aprende
programando."</cite></p>
<p>Esta parte me sobraba así que la he <del>eliminado</del></p>
<p>Me apetecía insertar una palabra random <ins>cacerola.</ins></p>
Es importante entender que estas etiquetas no modifican el
contenido sino que se diseñaron para mostrar tipos especiales de
texto.
Etiquetas de texto: Etiquetas que modifican el texto
Vamos a ver algunas etiquetas que nos permiten modificar el
significado de la información que contiene el bloque al que
pertenecen.
<p>
<q cite="[Link]
En un lugar de la Mancha...
</q>
</p>
Etiquetas de texto: Etiquetas orientadas al desarrollo
Etiquetas de hipervínculos
Principalmente tenemos una etiqueta especial denominada anchor o
<a> que se utilizará para todo lo referente a enlaces/links. Esta
etiqueta nos sirve para crear enlaces, vínculos o hipervínculos.
Una de las etiquetas más importantes en HTML es el anchor o <a>,
cuya idea es hacer referencia a una dirección o URL donde está
alojado ese otro documento de destino, que puede ser una página
web, un archivo PDF, una imagen o cualquier otro tipo de documento.
Si tenéis curiosidad por saber más acerca de los dominios que existen, os
dejamos una tabla con algunos de los más conocidos:
Una parte que no se ha mencionado es la relativa a las querystrings,
que son variables que tienen información que se envía a la URL a la
hora de hacer consultas más específicas.
En la consulta [Link] la q=perro
indica al navegador que queremos buscar en todo google la palabra
perro y que nos saque las referencias.
Como adicional, os dejamos las características que tendrán estos
enlaces por defecto:
1. Un enlace no visitado aparecerá subrayado y en color azul
2. Un enlace visitado aparecerá subrayado y en color morado
3. Un enlace activo aparecerá subrayado y en color rojo.
Etiquetas de hipervínculos: Curiosidades
Como tip extra os dejamos con algo que os será muy útil al principio,
y es la posibilidad de “saltar” de un lado a otro de la aplicación
utilizando el atributo id, a continuación, os dejamos un ejemplo que
podéis probar en vscode:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"
/>
<title>My first document</title>
</head>
<body>
<p><a href="#C4">ir al capítulo 4</a></p>
<h2>capítulo 1</h2>
<p>Este capítulo va sobre ba bla bla</p>
<h2>capítulo 2</h2>
<p>Este capítulo va sobre ba bla bla</p>
<h2>capítulo 3</h2>
<p>Este capítulo va sobre ba bla bla</p>
<h2 id="C4">capítulo 4</h2>
<p>Este capítulo va sobre ba bla bla</p>
</body>
</html>
Mediante el atributo href enlazamos el id a través de #. Esto hace que al
darle click al <p> inicial nos “redirija” al h2 que tiene dicho id.
Etiquetas de hipervínculos: Qué hemos aprendido
1. Qué son las etiquetas de hipervínculos, los tipos que existen y los
atributos que pueden recibir.
2. Hemos aprendido el esquema de una URL y qué elementos lo
componen
3. Cómo navegar por nuestra página web enlazando el anchor o <a> a
través del atributo href de hipervínculos con el id del elemento al que
queramos navegar.
Etiquetas de sección
Vamos a hablar de algunas etiquetas que aparecieron con
la versión de HTML5 que hacen referencia a secciones dentro de
una aplicación web.
Mencionar que gracias a la aparición de estas etiquetas han surgido
estructuras semánticas más correctas mejorando varios aspecto de
nuestras aplicaciones como:
1. Como representa el navegador nuestro contenido.
2. Gestión del posicionamiento o SEO.
3. Accesibilidad para personas con capacidades especiales, como la
ceguera, que necesitan navegar en nuestra aplicación.
<aside>
<h4>Etiqueta Aside</h4>
<p>Como vemos este es un contenido adicional</p>
</aside>
La etiqueta <article>representa una división de un contenido. Un artículo
debe tener sentido por sí mismo y debe ser posible distribuirlo
independientemente del resto del sitio. Algunos ejemplos de cómo usar la
etiqueta <article>:
1. Publicación en un foro
2. Entrada en un blog
3. Noticias
<article>
<h2>Ironman</h2>
<p>
Anthony Edward "Tony" Stark fue un multimillonario industrial,
anterior
Director General de Industrias Stark
</p>
</article>
<article>
<h2>Capitán América</h2>
<p>
El Capitán Steven Grant "Steve" Rogers es un veterano de la Segunda
Guerra
Mundial, miembro fundador de los Vengadores y el primer superhéroe
del mundo.
</p>
</article>
<article>
<h2>Thor</h2>
<p>
Thor Odinson es el Dios del Trueno, anterior Rey de Nuevo Asgard y
miembro fundador de los Vengadores.
</p>
</article>
La etiqueta <footer>es el elemento inferior de la página web y suele
contener enlaces y el copyright. Un <footer>normalmente contiene:
1. información de autoría
2. información registrada
3. Información del contacto
4. mapa del sitio
5. volver a los enlaces superiores
6. documentos relacionados
<footer>
<p>Autor: Alberto Rivera</p>
<p><a
href="[Link]
</footer>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<link rel="stylesheet" href="./[Link]">
<title>Header</title>
</head>
<body>
<header class="page-header">
<h1>Cute Puppies Express!</h1>
</header>
<main>
<p>
I love beagles <em>so</em> much! Like, really, a lot.
They’re
adorable and their ears are so, so snuggly soft!
</p>
</main>
</body>
</html>
[Link]-header > h1 {
font: bold calc(1em + 2 * (100vw - 120px) / 100) "Dancing Script", cursive,
fantasy;
margin: 2%;
}
main {
font: 1rem "Fira Sans", sans-serif;
}
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<link rel="stylesheet" href="./[Link]">
<title>Nav</title>
</head>
<body>
<nav class="crumbs">
<ol>
<li class="crumb"><a href="#">Bikes</a></li>
<li class="crumb"><a href="#">BMX</a></li>
<li class="crumb">Jump Bike 3000</li>
</ol>
</nav>
</body>
</html>
.crumbs ol {
list-style-type: none;
padding-left: 0;
}
.crumb {
display: inline-block;
}
.crumb a::after {
display: inline-block;
color: #000;
content: ">";
font-size: 80%;
font-weight: bold;
padding: 0 3px;
}
<body>
<p>Salamanders are a group of amphibians with a lizard-like appearance,
including short legs and a tail in both larval
and adult forms.</p>
<aside>
<p>The Rough-skinned Newt defends itself with a deadly
neurotoxin.</p>
</aside>
<p>
Several species of salamander inhabit the temperate rainforest
of
the Pacific Northwest, including the Ensatina,
the Northwestern Salamander and the Rough-skinned Newt.
Most salamanders are nocturnal, and hunt for insects, worms
and other small creatures.
</p>
</body>
</html>
aside > p {
margin: 0.5rem;
}
p{
font-family: "Fira Sans", sans-serif;
}
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<link rel="stylesheet" href="./[Link]">
<title>Article</title>
</head>
<body>
<article class="forecast">
<h1>Weather forecast for Seattle</h1>
<article class="day-forecast">
<h2>03 March 2018</h2>
<p>Rain.</p>
</article>
<article class="day-forecast">
<h2>04 March 2018</h2>
<p>Periods of rain.</p>
</article>
<article class="day-forecast">
<h2>05 March 2018</h2>
<p>Heavy rain.</p>
</article>
</article>
</body>
</html>
.day-forecast {
background: right/contain content-box border-box no-repeat
url("./assets/[Link]") white;
}
.day-forecast > h2,
.day-forecast > p {
margin: 0.2rem;
font-size: 1rem;
}
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<link rel="stylesheet" href="./[Link]">
<title>Footer</title>
</head>
<body>
<article>
<h1>How to be a wizard</h1>
<ol>
<li>Grow a long, majestic beard.</li>
<li>Wear a tall, pointed hat.</li>
<li>Have I mentioned the beard?</li>
</ol>
<footer>
<p>© 2018 Gandalf</p>
</footer>
</article>
</body>
</html>
footer {
display: flex;
justify-content: center;
padding: 5px;
background-color: #45a1ff;
color: #fff;
}
Etiquetas de sección: Qué hemos aprendido
1. Qué es una etiqueta de sección, cuáles existen y cómo usarlas.
2. Hemos visto ejemplos de las principales secciones que nos ayudarán
en el futuro.
Etiquetas de tablas
Las tablas están incluidas en HTML desde sus primeras versiones y
son una forma fantástica de mostrar datos claramente.
El mundo de la tablas va cayendo en desuso pero no viene mal hacer
un pequeño repaso de la construcción básica de tablas por sí alguna
vez os encontráis con la necesidad de trabajar con ellas.
Como es evidente, las tablas HTML nos permiten a los desarrolladores
web organizar los datos en filas y columnas.
CSS
table, th, td {
border:1px solid black;
}
<tr>
<!--
Tendremos la columna del total que ocupará
el espacio de 2 columnas.
-->
<td colspan="2">Sum: 4.5€</td>
</tr>
</table>
Por último, se pueden agrupar columnas con <colgroup> que contendrán
elementos <col> || Si usáis el ejemplo veréis que las dos primeras columnas
tendrán el fondo rojo y la siguiente azul.:
<table>
<colgroup>
<col span="2" style="background:red">
<col style="background:blue">
</colgroup>
<tr>
<th>Alumno</th>
<th>Curso</th>
<th>Edad</th>
</tr>
<tr>
<td>Alberto Rivera</td>
<td>Fullstack</td>
<td>26</td>
</tr>
<tr>
<td>Ganfalf el gris</td>
<td>Master en Istar</td>
<td>indeterminado</td>
</tr>
</table>
Etiquetas de tablas: Qué hemos aprendido
Qué son las tablas y para qué podemos usarlas.
Las principales etiquetas dentro de las tablas.
Cómo combinar y agrupar elementos de tablas.
Etiquetas img
Cuando queremos incluir una imagen usaremos la etiqueta <img>,
es una etiqueta que dispone de varios atributos que nos permite
modificarla aunque los obligatorios son src y alt.
El primero hace referencia a la ruta donde se encuentra la imagen, ya
sea una url o una ruta de nuestro equipo, y la segunda hace
referencia al texto alternativo que aparecerá en caso de que la
imagen no funcione o para personas con capacidades especiales.
<img src="ruta" alt="texto alternativo"/>
Otros que no son obligatorios son el width y el height determina el
tamaño de la imagen. Lo correcto es indicar estos valores mediante
CSS.
<img src="ruta" alt="texto alternativo" width="200" height="200"/>
Los formatos en los que se puede presentar una imagen son los siguientes:
Etiquetas img: Etiqueta picture
Cuando tenemos un conjunto de imágenes con diferentes
resoluciones lo correcto es usar la etiqueta <picture> que nos
permite indicar el uso de una imagen u otra en base al tamaño de la
pantalla en la que se muestra nuestro contenido.
El elemento <picture>contiene dos etiquetas: una o más
etiquetas <source> y una etiqueta <img>. Source indicará la imagen
que se tiene que mostrar en función del tamaño de nuestra pantalla.
Por último, se indica una etiqueta img como alternativa por si no
coincidiese el tamaño de nuestra pantalla con ninguna de las
opciones del source.
Etiqueta vídeo
Con HTML5 se introdujo la posibilidad de mostrar vídeos directamente
en nuestra web. Para ello tendremos que usar en nuestro código
HTML la etiqueta <video>.
Os recordamos que en esta sección nos referiremos siempre a
insertar vídeos que tenemos almacenados en nuestra base de datos o
archivo local, no será posible insertar vídeos de clientes externos con
esta etiqueta <video>
Audio: Etiqueta
Al igual que hemos visto el uso de vídeo podemos usar también un
reproductor de mp3 para gestionar nuestros audios.
<audio src="audio.mp3" preload="none" controls></audio>
La etiqueta <audio>se utiliza para incrustar contenido de sonido en
un documento. Además, contiene una o más <source>etiquetas con
diferentes fuentes de audio. El navegador elegirá la primera fuente
que admita.
El texto entre las etiquetas <audio>y </audio> solo se mostrará en
navegadores que no admitan el <audio>elemento.
Los atributos más usados junto a esta etiqueta son autoplay, loop,
muted y controls, todos del tipo boolean y que ofrecen posibilidades
como que se reproduzca automáticamente, que se reproduzca el
contenido en bucle, que se silencie el audio o que se muestren los
controles de reproducción del navegador.
<audio controls autoplay loop>
<source src="ejemplo_audio.mp3" type="audio/mpeg">
Esto es un ejemplo de la etiqueta audio.
</audio>
Os dejamos además una tabla con los principales formatos admitidos por los
navegadores:
Subtitle
A continuación os vamos a enseñar cómo podemos dotar a nuestras páginas
web de subtítulos, algo que seguramente en algún momento os será de
gran utilidad!
Creación de un formulario
Los formularios son las piezas HTML5 que nos permiten recoger la
información que introduce el usuario. Hay algunos elementos que son
básicos dentro de nuestro formulario.
Campos de texto
La etiqueta <input> puede tener diferentes types, entre los que se
encuentran los de tipo texto, que serán:
<input type="email"> el teclado mostrará botones especiales como .com y
@
<input type="hidden">info que queremos enviar con el formulario pero que
no
se vea en la pantalla
<input type="password"> no aparecerán los caracteres visibles al escribir.
<input type="search"> para búsquedas
<input type="tel"> tipo teléfono, desplegará teclado numérico
<input type="text"> (por defecto)
<input type="url">
<textarea>
A estos inputs les pueden acompañar los atributos autocomplete, que indica
si queremos que aparezca información anteriormente escrita en este campo
y placeholder, que será un texto a modo de sugerencia/ayuda para el
usuario.
Existe además uno complementario que es spellcheck para que el
navegador compruebe la ortografía cuando escribimos.
Campos de texto: Input de tipo text
El campo de texto, como bien indica su nombre, es el que nos permite
insertar texto en un formulario. El usuario podrá insertar texto visible sobre
el campo.
<input type="text" id="identificador" size="tamaño"
name="nombre" value="texto por defecto"/>
De esta forma, si queremos crear un campo de texto para poder insertar 70
caracteres que contenga un email, lo definiremos de la siguiente forma.
<input type="text" id="email" name="email"
size="70" value="usuario@[Link]"/>
Campos de texto: Input de tipo password
Cuando un usuario inserte una contraseña dentro de un formulario
necesitaremos, casi seguro, que el valor de la contraseña no aparezca y que
por el contrario aparezcan caracteres como asteriscos.
<input type="password" id="identificador" size="tamaño"
name="nombre"/>
Si queremos definir un campo que acepte contraseñas de 20 caracteres lo
codificaremos de la siguiente forma:
<input type="password" id="clave" name="clave" size="20"/>
Campos de texto: Etiqueta textarea
Además de los inputs tenemos la etiqueta <textarea> que es muy similar
al input con el type=”text ” con la diferencia que no se autocierra y nos
permite recoger textos con mayor volumen, como son los comentarios,
descripciones, observaciones… Esta etiqueta también puede utilizar el
atributo id para enlazarse con un <label>.
La etiqueta <textarea>define un control de entrada de texto de varias
líneas. Además, se usa a menudo en un formulario, para recopilar las
entradas de los usuarios, como comentarios o reseñas.
Como curiosidad, comentar que un <textarea> puede contener una
cantidad ilimitada de caracteres y el texto se muestra por defecto en una
fuente de ancho fijo (generalmente Courier).
El atributo name es necesario para hacer referencia a los datos del
formulario después de enviar el formulario. Asimismo, el atributo id es
necesario para asociar el área de texto con una <label>.
Como siempre os dejamos un ejemplo de código para mayor facilidad:
<label for="comments">Comentarios:</label>
<textarea id="comments">Este será el contenido de los
comentarios</textarea>
Campos de texto: Algunos de los atributos más usados son
minlength y maxlength en los input de tipo text son usados para indicar
un tamaño mínimo o máximo de caracteres en una entrada de datos. Así
podremos restringir un input para que al menos tenga n caracteres, o que
no se exceda de n caracteres.
En el ejemplo estamos diciendo que el input de tipo texto referente al “nick”
debe ser mínimo de 2 caracteres de largo y máximo 8.
<form method="post" action="/user">
<label for="nick">nickName:</label>
<input type="text" name="nick" placeholder="Su nick"
minlength="2" maxlength="8">
<button type="submit">Enviar</button>
</form>
Campos numéricos
Si deseamos obtener información o cantidades numéricas en un formulario,
tenemos a nuestra disposición dos tipos de etiquetas <input>
<input type="range">
<input type="number">
min y max para los inputs de type number que igual manera que con los
campos de texto, podemos restringir los campos números mediante un
valor máximo y un valor mínimo.
En este ejemplo, la edad que debemos rellenar podrá ir de los 14 a los 99
años.
<form method="post" action="/user">
<label for="age">Edad:</label>
<input type="number" name="age" placeholder="Su edad" min="14"
max="99">
<button type="submit">Enviar</button>
</form>
Campos numéricos: Atributo step
El atributo step especifica los intervalos de números legales para un campo
de entrada.
Ejemplo: si el valor de step es = "5", los números válidos serían -5, 0, 5, 10,
etc.
Este atributo se puede usar junto con los atributos max y min que vimos
más arriba para crear una validación más sofisticada.
Este atributo funciona con los siguientes tipos: número, rango, fecha, fecha
y hora local, mes, hora y semana.
<form>
<label for="points">Points:</label>
<input type="number" id="points" name="points" step="5">
</form>
Campos date & hour
Si nuestra intención es que el usuario introduzca una fecha concreta, en
lugar de utilizar un campo de texto, lo ideal sería utilizar un control
llamado datepicker, que es básicamente un calendario incorporado en HTML
que se le abrirá al usuario. Existe lo mismo para las horas, en este caso el
timepicker. Los tipos de inputs de fecha y hora son:
<input type="date">
<input type="datetime-local">
<input type="month">
<input type="time">
<input type="week">
min y max para los inputs de type fecha y hora son aptos de igual
manera que con los campos de texto, podemos restringir los campos
números mediante un valor máximo y un valor mínimo. Igualmente se
puede usar el atributo step.
<form name="formulario" method="post" action="/[Link]">
<!-- Campo de entrada de fecha -->
Selecciona la fecha deseada:
<input type="date" name="fecha" min="2034-03-25" max="2038-05-25"
step="2" />
<!-- Campo de entrada de hora -->
Selecciona la hora deseada:
<input type="time" name="hora" min="18:00" max="21:00" step="3600"
/>
</form>
Botones | check | radios
Mediante los botones podremos realizar operaciones de envío del
formulario, de manipulación de datos, borrado,…
Existen dos formas de insertar botones dentro de un formulario: el elemento
input y el elemento button. La sintaxis para un botón mediante un elemento
input será, como vimos en la anterior sección:
<input type="button" value="TextoBotón"/>
Botones | check | radios: Input checkbox
También tenemos los checkbox nos permite capturar un dato del usuario
mediante un elemento de check. El checkbox puede tener dos valores,
seleccionado o no seleccionado.
<input type="checkbox" id="identificador" name="nombre"/>
odemos hacer es generar un checkbox que esta preseleccionado. Para ello
utilizamos el atributo checked.
<input type="checkbox" id="identificador" name="nombre"
checked="checked"/>
Si os preguntáis para qué podemos usar un checkbox tenemos el ejemplo
claro de unas condiciones y podríamos representarlo de la siguiente
manera.
<input type="checkbox" id="condiciones" name="condiciones"/>
Está de acuerdo con las condiciones explicadas más arriba.
Los checkbox suelen ir en grupos para seleccionar varias opciones. Por
ejemplo podríamos tener el siguiente código con el que podamos
seleccionar qué lenguaje de programación queremos aprender.
<input type="checkbox" name="lenguaje" value="html">HTML
<input type="checkbox" name="lenguaje" value="javascript">Javascript
<input type="checkbox" name="lenguaje" value="css">CSS
<input type="checkbox" name="lenguaje" value="xml">XML
Botones | check | radios: Input radio
Con los elementos de radio podemos ofrecer un conjunto de opciones al
usuario de tal manera que solo pueda elegir una de ellas. La sintaxis que
seguiremos en los elementos input de tipo radio será la siguiente:
<input type="radio" id="identificador" value="valor" name="nombre"/>
En el caso de los elementos radio toma un papel principal el atributo name.
Ya que para poder agrupar opciones todos tendrán que tener el mismo valor
de atributo name.
Así, si queremos crear un grupo de radios para que nos elija una edad le
podremos crear de la siguiente forma:
<input type="radio" id="menos18" value="menos18"
name="edad"/>Menos de 18
<input type="radio" id="18a30" value="18a30" name="edad"/>18 a 30
<input type="radio" id="31a50" value="31a50" name="edad"/>31 a 50
<input type="radio" id="mas50" value="mas50" name="edad"/>Más de 50
Al igual que sucedía con los campos de entrada de tipo check, podemos
marcar por defecto el elemento radio mediante el atributo checked.
<input type="radio" id="identificador" value="valor"
name="nombre"
checked="checked"/>
Listas de selección
Si necesitamos mostrar una lista extensa de datos tenemos a nuestra
disposición elementos de listas, que permiten al usuario ver varias opciones
pero que obligará a que elija únicamente una.
Listas de selección: Etiqueta select
La etiqueta <select>se utiliza para crear una lista desplegable. Se usa con
mayor frecuencia en un formulario, para recopilar información obtenida de
la selección del usuario.
El atributo name es necesario para enlazar el select con el resto del
formulario, es decir, es necesario para que la información recogida se envíe
correctamente (si no lo ponemos no se enviará ningún dato).
El atributo id es necesario para asociar la lista desplegable con una
etiqueta.
Dentro de la etiqueta <select> habrá diferentes etiquetas <option>, que
contendrán las posibilidades que el usuario tiene para elegir.
Es importante recalcar que en un <select> el usuario podrá escoger
únicamente una opción. Si queremos dejar que el usuario pueda seleccionar
varias opciones tendremos otros elementos disponibles.
Para redondear un elemento <select> podemos añadirle encima una
etiqueta <label> que será lo que definirá la etiqueta o “título” del select
que le relacionemos.
<label for="avengers">Elige una opción:</label>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-
scale=1.0">
<link rel="stylesheet" href="./[Link]">
<title>Footer</title>
</head>
<body>
<select name="ciudad">
<optgroup label="Europa">
<option>Madrid</option>
<option>Londres</option>
<option>Paris</option>
</optgroup>
<optgroup label="Suramerica">
<option>Santiago</option>
<option>Sao Paulo</option>
Como vemos, dentro del <select> habrá grupos (Europa, Sudamérica y
África) y, dentro de esos grupos, habrá distintas opciones.
Listas de selección: Etiqueta datalist
Con esta etiqueta crearemos una lista abierta, donde el usuario puede
seleccionar una opción de las sugeridas o crear la suya propia. Dentro de
este <datalist> habrá diferentes <option>.
Visualmente el datalist no mostrará nada, sin embargo, le asignaremos un
input a través del atributo id y esto nos posibilitará escribir como si se
tratase de un input de type text normal y además tendremos las opciones
para elegir en el desplegable.
Os dejamos un ejemplo para mejor entendimiento:
<form name="formulario" method="post" action="/[Link]">
<!-- Campo de texto combinado con lista de opciones -->
<input type="text" list="items" />
<!-- Lista de opciones -->
<datalist id="items">
<option value="1">Opción 1</option>
<option value="2">Opción 2</option>
<option value="3">Opción 3</option>
</datalist>
</form>
Con lo que tendremos que tener cuidado es con el soporte que este
elemento tiene en los distintos navegadores, ya que nos podemos encontrar
alguno que no lo tenga y este elemento no se muestre correctamente al
correr nuestra aplicación.
Selección de color
Con HTML5 se introdujo un nuevo campo de entrada de datos que se usa
para seleccionar colores. Este input de tipo color se usa generalmente con
el esquema de colores RGB.
<form name="formulario" method="post"
action="[Link]
<!-- Selección de color -->
Selecciona el color deseado:
<input type="color" name="color" value="#FF0000" />
</form>
Selección de ficheros
HTML nos proporciona un input de tipo file para todo lo que tiene que ver
con archivos. Podremos seleccionar, adjuntar y enviar archivos con este
input.
Selección de ficheros: Input file
Cuando diseñemos un formulario es posible que necesitemos enviar un
fichero de datos al servidor. En este caso vamos a necesitar un campo de
entrada de tipo file. La sintaxis de este tipo de input sería:
<input type="file" id="identificador" value="valor" name="nombre"/>
Selección de ficheros: Atributo múltiple
El atributo multiple especifica que el usuario puede ingresar más de un valor
en un campo. Tenéis que tener en cuenta que solo funciona con los
siguientes tipos de entrada: correo electrónico y archivo. Esto nos será muy
útil sobre todo cuando permitamos subir archivos, ya que puede darse el
caso que el usuario necesite subir 30 archivos a nuestro formulario y, sin
este atributo, no podría.
<form>
<label for="files">Select files:</label>
<input type="file" id="files" name="files" multiple>
</form>
Organización de campos
Estas serán las etiquetas que servirán para organizar los elementos del
formulario, agrupándolos en categorías o temáticas, ordenar la información
o para visualizar los elementos de forma más sencilla.
Organización de campos: Etiqueta fieldset
La etiqueta <fieldset> define una agrupación de elementos comunes
dentro del formulario.
Siempre deberá ir acompañada de una etiqueta <legend> a la que se le
asignará un título descriptivo. Este título es obligatorio por motivos de
accesibilidad, pero puede ser ocultado mediante css.
<form action="/next-page" method="post">
<fieldset>
<legend>Datos Básicos</legend>
</fieldset>
</form>
Organización de campos: Etiqueta label
Esta etiqueta siempre acompaña a un campo del formulario con un título
descriptivo. Y debemos especificar con el atributo for. Y en el input usar el
atributo id para relacionarlo.
El for del <label> y el id del <input> deberán coincidir, ya que de esta
forma los relacionaremos y sería como decirle al formulario: “ey! cuando
encuentres el id “name” en alguno de los <input>, asígnale el <label>
cuyo atributo for coincida”
Vamos a verlo con un ejemplo.
<label for="name">Nombre</label>
<input type="text" name="name" id="name">
Organización de campos: Shortcuts
Para movernos entre inputs podemos usar la tecla TAB, que en este caso
avanza hacia adelante los inputs y si pulsamos SHIFT + TAB volvemos hacia
atrás. Esto nos será muy útil a la hora de rellenar formularios.
Botones de envío de formularios
Este tipo de input podemos decir que es de los más importantes, ya que si
un formulario no lo contiene, el usuario no podrá enviar la información que
ha rellenado, a no ser que pulse la tecla ENTER.
SUBMIT:Para crear un botón que nos envíe los datos del formulario al
servidor tenemos el tipo submit. Su sintaxis es la siguiente:
<input type="submit" value="TextoBotón"/>
Una vez que pulsemos sobre el botón se enviarán los datos que el usuario
haya insertado en el formulario siempre y cuando esté correctamente
relacionado el formulario con nuestro backend a través del atributo action
que ya vimos en la anterior sección.
Aquí también se puede usar una imagen como botón que enviará la
información del formulario, si le añadimos un input de type image:
<form name="formulario" method="post" action="/[Link]">
<!-- Datos del formulario -->
Usuario: <input type="text" name="usuario" />
<!-- Botón de envío de formulario con imagen -->
<input type="image" src="[Link]" alt="Enviar" width="80"
height="28" />
</form>
RESET: El otro tipo de botón con funcionalidad es el que nos permite el
borrado de los datos del formulario. Para ello tenemos el tipo reset. La
sintaxis de este botón será:
<input type="reset" value="TextoBotón"/>
Botones de envío de formularios: Botón personalizado
La etiqueta <button> nos será muy útil en javascript para desencadenar
eventos de, por ejemplo, tipo clic.
n ejemplo en código:
<form name="formulario" method="post" action="/[Link]">
<!-- Medidor -->
<meter min="0" max="100"
low="25" high="75"
optimum="100" value="75">
</form>
Validaciones HTML5
A la hora de crear una página web debemos tener en cuenta que el usuario
puede equivocarse y es algo que ocurrirá, por lo tanto, tenemos
herramientas para mitigar estos errores y que no afecten a la experiencia
del usuario.
Estas herramientas son las llamadas herramientas de validación, que nos
sirven para establecer pautas a la hora de indicar al usuario que la
información que ha introducido es correcta o debe modificarla.
Este es un ejemplo típico de validación, en el que mediante javascript se
comprueban los datos. Una vez validada se procesa y envía al backend.
Hay 4 tipos de validaciones:
Sin validación. El usuario podrá escribir la información que sea y no saltarán
alarmas.
Validación en el front. Se verifica la información que introduce el usuario y
se manda. Esto es peligroso ya que el usuario con conocimientos web podría
saltarse esta validación.
Validación solo en el back. El usuario podrá enviar la información que sea
pero el back la rechazará si no es válida. Esto no se recomienda ya que
gasta muchos recursos y tiempo en los procesos innecesarios.
Doble validación en front y back. Es lo ideal.
Validaciones HTML5: Atributos más usados
Los más usados suelen ser los de medir la longitud de la
cadena minlength o **maxlength , campos requeridos required y valores
mínimos y máximos con min o max.
required es la validación requerida indica que el campo es obligatorio en el
formulario, y no podremos enviar los datos hasta rellenar dicho campo.
En el ejemplo podemos ver que es obligatorio que rellenemos nuestro
nombre para poder enviar la información del formulario al backend.
<form method="post" action="/nombre">
<label for="name">Nombre:</label>
<input type="text" name="name" placeholder="Su nombre" required>
<button type="submit">Enviar</button>
</form>
minlength y maxlength en los input de tipo text son usados para indicar
un tamaño mínimo o máximo de caracteres en una entrada de datos. Así
podremos restringir un input para que al menos tenga n caracteres, o que
no se exceda de n caracteres.
En el ejemplo estamos diciendo que el input de tipo texto referente al “nick”
debe ser mínimo de 2 caracteres de largo y máximo 8.
<form method="post" action="/user">
<label for="nick">nickName:</label>
<input type="text" name="nick" placeholder="Su nick" minlength="2"
maxlength="8">
<button type="submit">Enviar</button>
</form>
min y max para los inputs de type number que igual manera que con los
campos de texto, podemos restringir los campos números mediante un
valor máximo y un valor mínimo.
En este ejemplo, la edad que debemos rellenar podrá ir de los 14 a los 99
años.
<form method="post" action="/user">
<label for="age">Edad:</label>
<input type="number" name="age" placeholder="Su edad" min="14"
max="99">
<button type="submit">Enviar</button>
</form>
El atributo disabled deshabilita un campo del formulario, por lo que no se
podrá hacer clic en él ni rellenar ningún tipo de dato. Además, sus valores
nunca se enviarán junto al resto del formulario.
Y os preguntaréis para qué se usa entonces… pues son muy útiles a la hora
de ir paso a paso en un formulario. Os habéis encontrado en muchas webs
que hasta que no rellenas el campo nombre no os deja rellenar nada más…
este tipo de lógica nos será muy útil para customizar los formularios.
<form>
<label for="fname">First name:</label><br>
<input type="text" id="fname" name="fname" value="John"
disabled><br>
<label for="lname">Last name:</label><br>
<input type="text" id="lname" name="lname" value="Doe">
</form>
El atributo multiple especifica que el usuario puede ingresar más de un valor
en un campo. Tenéis que tener en cuenta que solo funciona con los
siguientes tipos de entrada: correo electrónico y archivo.
<form>
<label for="files">Select files:</label>
<input type="file" id="files" name="files" multiple>
</form>
Esto nos será muy útil sobre todo cuando permitamos subir archivos, ya que
puede darse el caso que el usuario necesite subir 30 archivos a nuestro
formulario y, sin este atributo, no podría.
El atributo readonly indica que un campo de formulario es de solo lectura.
Por lo tanto, no se podrá modificar.
CUIDADO! el valor que se introduzca en campos con este tipo de atributo se
enviará junto al resto de información del formulario. Tened esto en cuenta a
la hora de crear vuestras páginas.
<form>
<label for="fname">First name:</label><br>
<input type="text" id="fname" name="fname" value="Alberto"
readonly><br>
<label for="lname">Last name:</label><br>
<input type="text" id="lname" name="lname" value="Trevijano">
</form>
Validaciones HTML5: Customizar nuestro formulario
Si enlazas tu fichero con un archivo de estilos podemos customizar los
inputs cuando son válidos, vamos a verlo porque siempre os gustan estas
cositas.
Este ejemplo de código hará que si la información que introduce el usuario
en nuestro input es válida, el color del fondo sea lightgreen, y, en caso de
que sea inválido, el color de fondo será coral.
input:valid {
background: lightgreen;
}
input:invalid {
background: coral;
}
También se pueden dar estilos haciendo uso de los atributos de las
etiquetas HTML, es decir.
Aquí, todos los inputs que tengan como tipo text tendrán un margen por
debajo de 20px.
input[type="text"] {
margin-bottom: 20px;
}
También se pueden dar estilos haciendo uso de los atributos de las
etiquetas HTML, es decir.
Aquí, todos los inputs que tengan como tipo text tendrán un margen por
debajo de 20px.
input[type="text"] {
margin-bottom: 20px;
}
Dicho esto, NO es recomendable generalizar los estilos sobre los elementos.
.form-input:valid {
background: lightgreen;
}
.form-input:invalid {
background: red;
}
.[Link]-input-text {
margin-bottom: 20px;
}
Validaciones HTML5: Validación por Patrón
HTML5 nos permite usar patterns, vamos a ver algunos aspectos básicos
de estos por si en algún momento os animáis a usarlos. Primero tenéis que
saber que estos patrones se rigen por conjuntos de caracteres que cumplen
con un patrón regex.
Las características básicas de expresiones regulares so
Os va parecer muy raro pero vamos a verlo con un ejemplo en un input con
un patrón. Vamos a validar un nombre de usuario que solo permita letras y
números.
<form method="post" action="/register">
<label for="nombre">Usuario:</label>
<input type="text" name="nombre"
placeholder="Name" minlength="5" maxlength="40"
required pattern="[A-Za-z0-9]+">
<button type="submit">Registrarse</button>
</form>
Veamos un pequeño formulario con un pattern con un uso más práctico,
imaginar que queremos que un usuario nos indique su modelo de Audi y los
posibles son A1, A3, A4 y A6.
<form method="post" action="/coche">
<label for="coche">Coche:</label>
<input type="text" name="coche"
placeholder="Su modelo de coche" required
pattern="A|a(1|3|4|6)"
title="Modelos posibles: A1, A3, A4 y A6">
<button type="submit">Enviar</button>
</form>
En la documentación os dejamos una tabla para que intentéis construir
vuestros propios pattern pero si os resulta complicado no hace falta que
invirtáis mucho tiempo en estas validaciones.
RegExR
LINKTREE
Estructura de arquitectura de la información
[Link]
#json=3imrYFbyZYa8IIlj95Vga,rt69C8FeSpVn1l32z3F4Vg
[Link]
#room=e367db2bd30ca0c12f07,SV5A9xCbCJBmWNMg2v_7Zw
NEWS HTML
LANDING
Ejemplo
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"
/>
<title>Productos Tech</title>
</head>
<body>
<header>
<h1>Productos Tech</h1>
</header>
<section>
<h2>Características de nuestros productos</h2>
<div>
<img src="[Link]" alt="Producto 1" />
<h3>Producto 1</h3>
<p>Descripción del producto 1.</p>
</div>
<div>
<img src="[Link]" alt="Producto 2" />
<h3>Producto 2</h3>
<p>Descripción del producto 2.</p>
</div>
<div>
<img src="[Link]" alt="Producto 3" />
<h3>Producto 3</h3>
<p>Descripción del producto 3.</p>
</div>
</section>
<section>
<h2>Testimonios de clientes satisfechos</h2>
<div>
<p>
"Producto 1 ha cambiado mi vida. Lo recomiendo a todos mis
amigos."
</p>
<p>- Cliente 1</p>
</div>
<div>
<p>"Producto 2 es el mejor que he probado. No puedo vivir sin
él."</p>
<p>- Cliente 2</p>
</div>
<div>
<p>
"Producto 3 es increíble. Lo uso todos los días y nunca me ha
fallado."
</p>
<p>- Cliente 3</p>
</div>
</section>
<section>
<h2>Precios y planes de suscripción</h2>
<div>
<h3>Plan básico</h3>
<p>Descripción del plan básico.</p>
<p>Precio: $10/mes</p>
</div>
<div>
<h3>Plan premium</h3>
<p>Descripción del plan premium.</p>
<p>Precio: $20/mes</p>
</div>
<div>
<h3>Plan empresarial</h3>
<p>Descripción del plan empresarial.</p>
<p>Precio: $50/mes</p>
</div>
</section>
<section>
<h2>Contacto</h2>
<form>
<label for="nombre">Nombre:</label>
<input type="text" id="nombre" name="nombre" /><br /><br />
<label for="email">Email:</label>
<input type="email" id="email" name="email" /><br /><br />
<label for="mensaje">Mensaje:</label><br />
<textarea id="mensaje" name="mensaje" rows="5"
cols="30"></textarea
><br /><br />
<input type="submit" value="Enviar" />
</form>
</section>
<footer>
<p>Productos Tech © 2021</p>
<p>Contacto: info@[Link]</p>
<p>Síguenos en redes sociales:</p>
<ul>
<li><a href="#">Facebook</a></li>
<li><a href="#">Twitter</a></li>
<li><a href="#">Instagram</a></li>
</ul>
</footer>
</body>
</html>
PORTFOLIO
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Mi Portfolio</title>
</head>
<body>
<!-- Cabecera -->
<header>
<h1>Mi Portfolio</h1>
<nav>
<ul>
<li><a href="#about">Acerca de mí</a></li>
<li><a href="#skills">Habilidades</a></li>
<li><a href="#projects">Proyectos</a></li>
<li><a href="#contact">Contacto</a></li>
</ul>
</nav>
</header>
YOUTUBE
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>YouTube (Versión Simplificada)</title>
</head>
<body>
<!-- Cabecera -->
<header>
<h1>YouTube</h1>
<nav>
<ul>
<li><a href="#home">Inicio</a></li>
<li><a href="#trending">Tendencias</a></li>
<li><a href="#subscriptions">Suscripciones</a></li>
<li><a href="#history">Historial</a></li>
</ul>
</nav>
</header>
<!-- Barra de búsqueda -->
<section id="search">
<form>
<input type="text" placeholder="Buscar" />
<input type="submit" value="Buscar" />
</form>
</section>
Los tipos de carga pueden ser síncrono, que es el que se establece por
defecto y paraliza la página hasta que la carga del contenido javascript esté
listo, carga asíncrona que usaréis mucho y sirve para descargar el script en
cuanto esté disponible y no detiene la carga del HTML. Una vez descargado
lo ejecuta y detiene la carga HTML. Una vez ejecutado terminará de cargar
el resto del HTML. Y por último el atributo defer, que hace que la carga del
script se realice al final del todo, una vez el resto de la página ha cargado.
De esta forma, además podemos cargar javascript en línea o externo.
Funciona igual que el código CSS:
Ejemplo de código javascript en línea:
<script>
alert('¡Hola!');
</script>
Ejemplo de javascript externo:
<script src="/[Link]"></script>
En los últimos años Javascript ha incorporado los módulos. Estos módulos
posibilitan importar funcionalidades mediante import y export. Para ello,
debemos añadir en nuestra etiqueta <script> el atributo type=”module”:
<script type="module">
import { pi } from './[Link]';
</script>
src="[Link]
2022/10/18/[Link]"
id="gandalfImage" alt="Gandalf">
<p id="textId"></p>
<script>
[Link]("gandalfImage").addEventListener("load",
loadImage);
function loadImage() {
[Link]("textId").innerHTML = "Image loaded";
}
</script>
onScroll, cuando se haga scroll en la página.
<textarea style="width:100% height: 100px" id="scrollExample">
HTML stands for Hyper Text Markup Language.
It is used to design web pages using markup language.
HTML is the combination of Hypertext and Markup language.
Hypertext defines the link between the web pages.
Markup language is used to define the text document
within tag which defines the structure of web pages.
HTML is a markup language which is used by the browser
to manipulate text, images and other content to
display it in required format.
</textarea>
<p id="example"></p>
<script>
[Link](
"scrollExample").addEventListener("scroll", onScrollAction);
function onScrollAction() {
[Link](
Eventos: Eventos de foco
Cuando elementos como input, textarea, select o anchor pueden ser
seleccionables por el usuario y ocurrirán cuando se haga/se pierda foco
sobre ellos.
onBlur, el elemento ha perdido foco.
<h2>onblur event example</h2>
<input onblur="myFunction()">
<script>
function myFunction() {
alert('foco perdido!');
}
</script>
onFocus, el elemento está en foco.
<h2>onFocus event example</h2>
<input onfocus="myFunction()">
<script>
function myFunction() {
alert('Estoy en foco!');
}
</script>
Eventos: Eventos de ratón
Se utilizan para acciones que el usuario hace a través del ratón.
<!-- EJEMPLO DE ONCLICK QUE CUANDO HAGAMOS CLICK EN EL <p>
<script>
function myFunction() {
[Link]("example").[Link] = "red";
}
</script>
Para no llenar la página con ejemplos de código en los que simplemente
modificamos el tipo de evento, os dejamos el ejemplo de código de arriba
que es aplicable a cualquier tipo de evento de ratón. ¡Tan solo tendréis que
cambiar el tipo de evento en la línea que os hemos remarcado para poder
probarlo!
Optimizar el rendimiento de un documento HTML
A continuación, se presentan algunas recomendaciones para optimizar el
rendimiento de un documento HTML:
Comprimir los archivos
Para comprimir los archivos HTML, CSS y JavaScript, se puede utilizar una
herramienta en línea como Minifier. Esta herramienta elimina los espacios
en blanco y los comentarios innecesarios de los archivos para reducir su
tamaño. También es posible utilizar herramientas como GZip para
comprimir los archivos en un formato más pequeño.
Optimizar las imágenes
Para optimizar las imágenes en una página web, se pueden utilizar
herramientas en línea como TinyPNG o JPEG Optimizer. Estas herramientas
comprimen las imágenes para reducir su tamaño sin comprometer su
calidad. También es importante utilizar el formato de archivo adecuado para
cada tipo de imagen (por ejemplo, PNG para imágenes con transparencia y
JPEG para fotografías).
Utilizar CDN
Para utilizar un CDN en una página web, es necesario contratar los servicios
de una empresa que ofrezca este tipo de solución. Algunas opciones
populares incluyen Cloudflare y Amazon CloudFront. Una vez configurado el
CDN, la página web se cargará más rápido para los usuarios de todo el
mundo.
Otra forma de optimizar las imágenes en una página web es utilizando un
servicio de gestión de imágenes como Cloudinary. Esta herramienta permite
cargar, almacenar y manipular imágenes de forma eficiente, lo que puede
reducir significativamente el tamaño y el tiempo de carga de las imágenes
en la página web. Además, Cloudinary ofrece una amplia gama de
herramientas para optimizar y personalizar las imágenes, como la
compresión dinámica, la transformación y la generación de miniaturas.
Para utilizar Cloudinary, es necesario crear una cuenta y configurar la
integración con la página web. Luego, se puede utilizar la API de Cloudinary
para cargar y manipular las imágenes en la página web.