Caligrafía y lettering español-inglés: Transportes

Cuaderno de caligrafía de gran tamaño, con más de 100 páginas, perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Para todas las edades

Es un libro recomendado para todas las edades. La sencillez de las ilustraciones y los conceptos llamarán la atención de los más pequeños, y también facilitarán el aprendizaje para los niños más mayores.

Transportes: Caligrafía y lettering español inglés

Cuaderno de caligrafía y vocabulario bilingüe español-inglés

Libro de gran tamaño (21,5 x 28 cm) con más de 100 páginas. El cuaderno de actividades perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Caligrafía y lettering español-inglés: Transportes

Disponible en Amazon

Puedes disfrutar de este libro en dos posibles formatos:

Cientos de ilustraciones para colorear y caligrafía con pauta montessori

Más de 500 ilustraciones ordenadas alfabéticamente, con la descripción en español y en inglés. Todos los dibujos se pueden colorear y se utiliza pauta montessori y letra ligada escolar punteada para repasar. Además, todas las páginas contienen tipografías diferentes de cada una de las letras del abecedario en mayúsculas.

Aire acondicionado, Ala de avión, Ala delta
Más de 500 Ilustraciones para colorear y texto bilingüe con letra caligráfica punteada y pauta montessori

Estimulación, desarrollo y aprendizaje

Practicar caligrafía y colorear dibujos de transportes con vocabulario en español e inglés permite mejorar la escritura y el conocimiento de estas palabras en los dos idiomas, fomentando la creatividad y la conexión con el entorno y estimulando habilidades cognitivas y motoras mediante una actividad entretenida y relajante. Esta combinación de prácticas estimula la imaginación, mejora la coordinación y fortalece el conocimiento lingüístico, mientras se aprende al mismo tiempo sobre los diferentes medios de transporte y se disfruta de una actividad visualmente atractiva y entretenida:

  • Mejora de la escritura: La caligrafía es una habilidad que requiere precisión y destreza en la escritura a mano. Al practicar la caligrafía sobre transportes, como escribir palabras relacionadas con diferentes vehículos, se fomenta la mejora de la escritura y la fluidez. Esto incluye la formación correcta de las letras, la consistencia en el trazo y la legibilidad.
  • Aprendizaje de vocabulario en dos idiomas: Al utilizar vocabulario en español e inglés relacionado con transportes, se fortalece el conocimiento y la memorización de palabras en ambos idiomas. Esta práctica puede ser especialmente útil para aquellos que están aprendiendo español o inglés como segunda lengua, ya que les permite asociar las palabras con imágenes y contextos específicos relacionados con los transportes. Además, aprender vocabulario en dos idiomas amplía las habilidades lingüísticas y facilita la comunicación en un contexto multicultural.
  • Estimulación creativa y visual: La combinación de la caligrafía y el coloreado de dibujos de transportes brinda una oportunidad para la expresión artística y la creatividad. Al colorear los dibujos de transportes, se estimula la imaginación y la originalidad, permitiendo a cada persona personalizar sus creaciones y expresar su propio estilo visual. La práctica de la caligrafía y el coloreado de dibujos también proporciona una experiencia visualmente atractiva y entretenida.
  • Conexión con el mundo real y el entorno: Los transportes son una parte fundamental de nuestra vida diaria y del entorno que nos rodea. Al practicar la caligrafía y colorear dibujos de transportes, se establece una conexión más profunda con el mundo real y se fomenta la comprensión y el reconocimiento de los diferentes medios de transporte. Esta conexión ayuda a los niños y niñas a desarrollar una mayor conciencia del entorno y a comprender la importancia de los transportes en nuestras vidas.
  • Estimulación cognitiva y coordinación motora: Tanto la caligrafía como el coloreado de dibujos de transportes implican habilidades cognitivas y motoras. La práctica de la caligrafía requiere concentración, coordinación mano-ojo y control motor fino. Del mismo modo, el coloreado de los dibujos de transportes desarrolla habilidades de motricidad fina, coordinación de colores y atención al detalle. Estas actividades estimulan el cerebro, mejoran la concentración y la coordinación y contribuyen al desarrollo cognitivo general.
  • Entretenimiento y relajación: La práctica de la caligrafía y el coloreado de dibujos de transportes puede ser una actividad entretenida y relajante. Permite desconectar del estrés diario, fomenta la concentración en el momento presente y proporciona un espacio creativo para relajarse.

Para aprender inglés fácilmente

Todas las letras y palabras están ilustradas de manera sencilla para facilitar el aprendizaje de nuevo vocabulario con un mínimo esfuerzo. Ideal para aprender a leer y escribir, en castellano y en inglés. Además, cada página se encuentra dividida en tres columnas, para elevar el nivel de dificultad gradualmente. En la primera columna se proporciona el dibujo para colorear, en la segunda aparece el texto en castellano, y en la tercera columna en inglés.

Canoa, Canoa de madera, Cápsula apolo, Carabela, Caravana, Carné de conducir, Carretera, Carretera de peaje, Carrito de comida, Carrito de equipaje
Más de 100 páginas de gran tamaño (21,5 x 28 cm) con ilustraciones y vocabulario en español y en inglés

Mejora de habilidades lingüísticas y estimulación del interés por la ingeniería

Es importante que los niños y niñas aprendan vocabulario sobre transportes en inglés porque les proporciona una herramienta lingüística valiosa para comunicarse en un mundo globalizado. El inglés es ampliamente utilizado en la industria del transporte y el turismo, y conocer vocabulario específico relacionado con los transportes en este idioma puede resultar muy útil en situaciones cotidianas tales como leer señales de tráfico, buscar direcciones o comunicarse con personas de diferentes países. Además, aprender sobre diferentes tipos de transportes en inglés fomenta la curiosidad y el conocimiento sobre el mundo que nos rodea, lo que puede estimular el aprendizaje y el interés por la ciencia y la tecnología. Por último, el aprendizaje de un segundo idioma puede proporcionar ventajas cognitivas, como mejorar la memoria, la capacidad de resolución de problemas y la flexibilidad mental, lo que puede beneficiar el desarrollo académico y personal de los niños y niñas a largo plazo:

  • Comunicación global: El inglés es uno de los idiomas más hablados y comprendidos en todo el mundo. Aprender vocabulario sobre transportes en inglés les proporciona a los niños y niñas la capacidad de comunicarse con personas de diferentes culturas y nacionalidades. Esto es especialmente valioso en un mundo cada vez más globalizado, donde el inglés se utiliza como un idioma común en el ámbito del transporte, el turismo y los negocios internacionales.
  • Acceso a recursos y conocimientos: Muchos recursos educativos, libros, videos y materiales relacionados con el tema de los transportes están disponibles en inglés. Al aprender el vocabulario en inglés, los niños y niñas pueden acceder a una amplia gama de recursos y fuentes de información, lo cual les permite aprender más sobre diferentes medios de transporte y avances tecnológicos. Esto estimula su curiosidad y conocimiento del mundo que les rodea.
  • Preparación para oportunidades futuras: A medida que los niños y niñas crecen, se enfrentarán a nuevas oportunidades académicas y profesionales. El dominio del vocabulario sobre transportes en inglés les proporciona una base sólida para futuros estudios o carreras relacionadas con la ingeniería, la logística, la aviación, el transporte marítimo y muchos otros campos. Además, muchas empresas valoran el conocimiento del inglés y el vocabulario específico en sus procesos de contratación.
  • Facilita la comprensión de contenido multimedia: La industria del entretenimiento y los medios de comunicación, como películas, programas de televisión y videojuegos, a menudo utilizan el inglés como idioma principal. Aprender vocabulario sobre transportes en inglés permite a los niños y niñas disfrutar y comprender mejor este tipo de contenido, lo cual amplía sus opciones de entretenimiento y les brinda acceso a historias y experiencias de transporte de diferentes partes del mundo.
  • Conexión con la tecnología: Muchos avances tecnológicos en el ámbito del transporte provienen de países de habla inglesa. Al aprender vocabulario sobre transportes en inglés, los niños y niñas pueden estar al tanto de los últimos desarrollos tecnológicos, investigaciones y descubrimientos en este campo. Esto les permite comprender y adaptarse a los cambios en la industria del transporte y estar preparados para los avances futuros.
  • Ampliación de horizontes y perspectivas: Aprender vocabulario sobre transportes en inglés proporciona a los niños y niñas una visión de las diferentes formas de transporte y los diversos sistemas de movilidad utilizados en distintas partes del mundo. Esto les permite ampliar su conocimiento y comprensión de la diversidad de medios de transporte existentes, así como de las prácticas y tendencias globales. Además, al aprender sobre transportes en inglés, también se familiarizan con términos técnicos y conceptos relacionados, lo cual enriquece su comprensión y perspectiva en este ámbito.
  • Desarrollo de habilidades lingüísticas y cognitivas: Aprender vocabulario sobre transportes en inglés ayuda a mejorar las habilidades lingüísticas en general, como la gramática y el vocabulario en ambos idiomas. Además, numerosos estudios han demostrado que el aprendizaje de un segundo idioma, como el inglés, estimula el desarrollo cognitivo, mejora la memoria, la concentración y las habilidades de resolución de problemas.

De la A a la Z

Se incluye vocabulario para cada una de las letras del abecedario:

Ancla, Andén
Baños, Barco
Carabela, Caravana
Dirigible, Drakkar
Equipaje, estación
Funicular, furgoneta

Accesibilidad, …, aduana, …, aeropuerto, …, ambulancia, amortiguador, ancla, andén, andenes, …, apisonadora, …, autobús escolar, autocaravana, automóvil, autovía, autovolquete, avioneta, bache, badén, …, barco de pesca, barco de vela, barco mercante, barrera de tráfico, bicicleta, bicitaxi, billete de avión, biplaza descapotable, …, bote de pedales, bote de remos, …, callejón sin salida, …, camino resbaladizo, camión articulado, camión cisterna, camión de bomberos, …, camión de comida, camión de la basura, …, camión de reparto, camión grúa, camioneta, camper, canoa, caravana, …, carretera de peaje, carril bici, carrito de equipaje, carro de golf, casco, catamarán, ceda el paso, ciclismo, …, coche clásico, coche de carreras, coche de policía, coche deportivo, coche descapotable, coche eléctrico, coche todoterreno, cohete espacial, …, consigna, contenedor, control de pasaportes, controlador de tráfico aéreo, …, cruce de caminos, cruce de ferrocarril, crucero, cupé, …, deslizador, destino, diagnóstico, dirección obligatoria, dirigible, …, eléctrico, elevador de coches, …, equipaje, escalera mecánica, espejo retrovisor, estación, estación de carga, estación de tren, estacionamiento, estrechamiento de calzada, excavadora, exprés, ferrocarril de montaña, …, ferry, filtro de aceite, final de autopista, final de carril, flota, freno de disco, freno de mano, funicular, furgoneta de reparto, garaje, gasolinera, gato de coche, gire a la izquierda, globo aerostático, …, grúa, guardia, hélice de barco, helicóptero, hormigonera, hospital, …, intersección, kart, kayac, …, lancha rápida, lata de gasolina, lavado de coches, letrero, límite de altura, límite de longitud, límite de velocidad, limpiaparabrisas, limusina, llanta de aleación, llave de tuercas, llave del coche, locomotora, lubricante, …, mapa, máquina elevadora, matrícula, mecánico, metro, microcoche, minibús, …, monopatín, monorraíl, moto acuática, motocicleta, motonieve, motor, …, nave espacial, navegación, neumáticos, …, palanca de cambios, paracaídas, parachoques, …, parquímetro, pasajero, pasaporte, paso de cebra, paso de peatones, patines, patinete, peaje, pendiente, perfil irregular, peso, pintura en aerosol, pistón, …, precaución, prohibido adelantar, prohibido aparcar, prohibido girar a la derecha, prohibido parar, prohibido pasar, …, quad, radiador, recargar, recogida de equipaje, reloj, remolque, reparar, reserva en línea, restaurante, revisor, rotonda, rueda, ruta, safari, sala de espera, satélite, …, segway, semáforo, semirremolque, señal de cruce, señal de dirección, señal de discapacitados, señal de estacionamiento, señal de stop, señal de tráfico, señalización, servicio de caballeros, servicio de señoras, silla de coche, silla de ruedas eléctrica, submarino, superdeportivo, tanque, taquilla, taxi, teleférico, teleférico de montaña, timón, todoterreno, …, tractor, tráfico, tren eléctrico, transbordador espacial, transmisión automática, transmisión manual, transporte público, tranvía, tren bala, tren de alta velocidad, tren de carga, …, triciclo, trineo, trineo de vela, trolebús, …, tuk tuk, vagón cisterna, …, vagón de tranvía, vagón de tren, valla, vehículo anfibio, vehículo remolcador, velero, velocímetro, vía de ferrocarril, viajero, viento, volante, yate, zepelín.

Caligrafía y lettering español-inglés: Deportes

Cuaderno de caligrafía de gran tamaño, con más de 100 páginas, perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre deportes en español y en inglés de manera sencilla y progresiva.

Para todas las edades

Es un libro recomendado para todas las edades. La sencillez de las ilustraciones y los conceptos llamarán la atención de los más pequeños, y también facilitarán el aprendizaje para los niños más mayores.

Deportes: Caligrafía y lettering español inglés

Cuaderno de caligrafía y vocabulario bilingüe español-inglés

Libro de gran tamaño (21,5 x 28 cm) con más de 100 páginas. El cuaderno de actividades perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre deportes en español y en inglés de manera sencilla y progresiva.

Caligrafía y lettering español-inglés: Deportes

Disponible en Amazon

Puedes disfrutar de este libro en dos posibles formatos:

Cientos de ilustraciones para colorear y caligrafía con pauta montessori

Más de 500 ilustraciones ordenadas alfabéticamente, con la descripción en español y en inglés. Todos los dibujos se pueden colorear y se utiliza pauta montessori y letra ligada escolar punteada para repasar. Además, todas las páginas contienen tipografías diferentes de cada una de las letras del abecedario en mayúsculas.

Uniforme, Velero, Velocímetro
Más de 500 Ilustraciones para colorear y texto bilingüe con letra caligráfica punteada y pauta montessori

Estimulación, desarrollo y aprendizaje

Practicar caligrafía sobre deportes con vocabulario en español e inglés y colorear dibujos de deportes puede beneficiar a los niños y niñas de diversas formas: mejora su escritura a mano, amplía su vocabulario en ambos idiomas, les conecta con el mundo deportivo, estimula su creatividad y habilidades visuales, desarrolla su coordinación motora, promueve la concentración y les proporciona una actividad relajante. Esta combinación de prácticas fomenta el aprendizaje, la expresión artística y el desarrollo de habilidades tanto cognitivas como motoras, al tiempo que les permite disfrutar de una experiencia visualmente atractiva y entretenida relacionada con el mundo deportivo:

  • Estimula la memoria y el aprendizaje: Al practicar caligrafía y colorear dibujos de deportes, los niños y niñas están utilizando tanto su memoria visual como su memoria muscular. Esto les ayuda a recordar mejor el vocabulario y la ortografía de las palabras relacionadas con los deportes, tanto en español como en inglés. Además, el acto de colorear puede ayudar a los niños y niñas a recordar mejor las palabras que están aprendiendo.
  • Estimulación sensorial: La caligrafía y el coloreado de las ilustraciones implican el uso de diferentes materiales, tales como lápices, colores y papel. Estos elementos proporcionan una experiencia táctil y sensorial que ayuda a captar la atención de los niños y niñas, manteniéndolos comprometidos en la actividad y fomentando su concentración.
  • Mejora la coordinación ojo-mano: Tanto la caligrafía como el coloreado requieren coordinación entre los ojos y las manos. La práctica regular de la caligrafía y el coloreado contribuye al desarrollo de destrezas motoras finas, tales como el control del lápiz, la precisión y la coordinación. Al practicar estas habilidades, los niños y niñas pueden mejorar su coordinación ojo-mano, lo cual es beneficioso para su desarrollo motor.
  • Fomenta la creatividad y la imaginación: La combinación de la caligrafía y el coloreado de dibujos de deportes brinda una oportunidad para la expresión artística y la creatividad. Al colorear los dibujos de deportes se pueden explorar diferentes combinaciones de colores, estilos e instrumentos tales como lápices y rotuladores. Esto estimula la imaginación y la originalidad, permitiendo a cada persona personalizar sus creaciones y expresar su propio estilo visual. La práctica de la caligrafía y el coloreado de dibujos también proporciona una experiencia visualmente atractiva y entretenida.
  • Fomenta el interés en la actividad física: Los deportes son una parte integral de nuestra sociedad y cultura. Practicar la caligrafía y colorear dibujos de deportes ayuda a los niños y niñas a conectarse con el mundo deportivo, a familiarizarse con diferentes disciplinas y a comprender la importancia del deporte en la vida diaria. Esta conexión promueve el interés por la actividad física, fomenta la adopción de estilos de vida saludables y les permite explorar sus propios intereses y talentos deportivos. Esto es importante para su salud y bienestar a largo plazo, ya que puede motivarles a participar en actividades físicas y deportivas.
  • Amplía el conocimiento cultural: Los deportes son una parte importante de muchas culturas en todo el mundo. Al aprender el vocabulario en español e inglés relacionado con los deportes, los niños y niñas pueden aprender sobre diferentes deportes populares en diferentes países y culturas. Esto les ayuda a desarrollar una comprensión más amplia y profunda de la diversidad cultural.
  • Relajación y reducción del estrés: Tanto la caligrafía como el coloreado de dibujos de deportes pueden tener un efecto relajante y terapéutico. Estas actividades permiten a los niños y niñas concentrarse en una tarea específica, lo cual puede ayudar a calmar la mente y reducir los niveles de estrés. Al centrar su atención en el trazo de las letras y el coloreado de los dibujos, los niños y niñas encuentran un espacio de tranquilidad que promueve la relajación y la concentración.

Para aprender inglés fácilmente

Todas las letras y palabras están ilustradas de manera sencilla para facilitar el aprendizaje de nuevo vocabulario con un mínimo esfuerzo. Ideal para aprender a leer y escribir, en castellano y en inglés. Además, cada página se encuentra dividida en tres columnas, para elevar el nivel de dificultad gradualmente. En la primera columna se proporciona el dibujo para colorear, en la segunda aparece el texto en castellano, y en la tercera columna en inglés.

Aro, Arquero, Avalancha, Bádminton, Ballet, Balón de fútbol, Baloncesto, Banda de capitán, Banda de resistencia, Bandera
Más de 100 páginas de gran tamaño (21,5 x 28 cm) con ilustraciones y vocabulario en español y en inglés

Mejora de habilidades lingüísticas y estimulación del interés por los deportes

El aprendizaje del vocabulario sobre deportes en inglés proporciona a los niños y niñas habilidades de comunicación global, acceso a recursos deportivos y oportunidades de participación en competiciones internacionales, mejora de las habilidades lingüísticas, promoción de la actividad física y estilos de vida saludables, así como el desarrollo de habilidades interculturales. Estas habilidades les benefician tanto a nivel personal como académico, preparándoles para un mundo cada vez más interconectado y global:

  • Comunicación global: El inglés es uno de los idiomas más hablados en el mundo y es ampliamente utilizado en el ámbito deportivo a nivel internacional. Aprender vocabulario sobre deportes en inglés les permite a los niños y niñas comunicarse de manera efectiva con personas de diferentes países y culturas, lo que les brinda una ventaja en un mundo cada vez más globalizado.
  • Acceso a recursos y oportunidades: El aprendizaje del vocabulario sobre deportes en inglés amplía el acceso a una amplia gama de recursos relacionados con el deporte, como libros, artículos, videos y páginas web en inglés. Esto les permite explorar y aprender más sobre diferentes deportes, equipos, atletas y eventos alrededor del mundo, lo que enriquece su conocimiento y comprensión del mundo deportivo.
  • Mejora de las habilidades lingüísticas: Aprender vocabulario sobre deportes en inglés ayuda a desarrollar y mejorar las habilidades lingüísticas de los niños y niñas. Al aprender nuevas palabras y expresiones en el contexto deportivo, amplían su vocabulario y mejoran su capacidad de comunicación oral y escrita en inglés. Esto les beneficia en su desarrollo académico y en futuras oportunidades laborales.
  • Promoción de la actividad física y estilos de vida saludables: El aprendizaje del vocabulario sobre deportes en inglés fomenta el interés y la participación en actividades físicas. Al conocer los nombres de diferentes deportes en inglés, los niños y niñas pueden acceder a más información sobre ellos y explorar nuevas opciones para su práctica. Esto promueve un estilo de vida activo y saludable, así como el disfrute del deporte como parte de su rutina diaria.
  • Desarrollo de habilidades interculturales: Muchas competiciones y eventos deportivos de renombre, como por ejemplo los Juegos Olímpicos, utilizan el inglés como idioma principal de comunicación. Aprender vocabulario sobre deportes en inglés les brinda a los niños y niñas la oportunidad de aprender sobre diferentes culturas y perspectivas a través del deporte. Pueden descubrir cómo se practican y se perciben los deportes en otros países, lo que fomenta la comprensión intercultural y la apreciación de la diversidad.
  • Ampliación de oportunidades educativas y profesionales: El aprendizaje del vocabulario sobre deportes en inglés puede abrir puertas a diversas oportunidades educativas y profesionales en el campo deportivo. Muchas instituciones académicas y programas de estudio relacionados con el deporte requieren un buen dominio del inglés. Al tener conocimientos de vocabulario deportivo en inglés, los niños y niñas pueden acceder a programas educativos, becas y oportunidades de formación en centros especializados en el ámbito deportivo a nivel internacional. Además, en el campo profesional, el conocimiento del vocabulario sobre deportes en inglés puede representar una ventaja competitiva al buscar empleo en industrias como la gestión deportiva, el periodismo deportivo, y la traducción o interpretación en eventos deportivos, entre otros.

De la A a la Z

Se incluye vocabulario para cada una de las letras del abecedario:

Arquero, Avalancha
Banquillo, Barco
Chaqueta, Ciclismo
Dormir, Ducha
Equitación, Escalada
Frisbi, Fútbol

Abdominales, agua mineral, ajedrez, …, arquero, atleta, avalancha, bádminton, baloncesto, banda de resistencia, bandera de fuera de juego, …, banquillo, barómetro, barra, barra de dominadas, …, barras paralelas, barrita energética, báscula, bastón de trekking, bastones de esquí, bate, …, béisbol, biatlón, bicicleta, bicicleta estática, binocular, bmx, bobsleigh, bolos, bolsa de deporte, botas de esqui, botas de fútbol, botella, botiquín, boxeador, break dance, brújula, buceo, buzo, caballo, …, camilla, camisa, camisa polo, camiseta, camiseta de fútbol, …, campo de fútbol, cancha, canoa, cañón de nieve, …, casco, certificado, chaleco salvavidas, …, ciclismo, ciclista, cima, …, corredor, crampones, crema solar, cricket, cronómetro, cróquet, …, cuerda de saltar, curling, …, deporte acuático, diana, dieta, dirección, discos de pesas, disparo, dormido, …, entrenamiento, equipamiento de esquí, equitación, escalada, esgrima, esgrimista, espinilleras, espuela, esquís, establo, estadio, …, flexiones, formación, fórmula uno, frecuencia cardíaca, …, frisbi, fútbol, gafas de esquí, …, gimnasia rítmica, golf, gorro de baño, …, guantes de boxeo, guantes de esquí, hacer snorkel, hacer surf, herradura, herramienta, hockey sobre hielo, …, invierno, jalón dorsal, jinete, …, kárate, kart, kayac, kendo, kimono, lacrosse, latidos del corazón, levantador de pesas, levantamiento de pesas, levantar pesas, libro, línea de meta, linterna, linterna de cabeza, lucha, luchador, …, mancuerna, manga de viento, mapa, marcador, marchas, masa muscular, mate, mazo, medalla, …, meteorología, mitones, mochila, …, monociclo, monopatín, montaña, mosquetón, moto acuática, motocross, motonieve, móvil, muay thai, mundial, músculo, natación, navaja suiza, nevada, nevado, nevera, nieve, niño, niños, no fumar, ola, otoño, palo de cricket, palos, palos de esquí, pantalones, pantalones cortos, paracaidismo, paracaidista, paralelas, parkour, partido, pase de esquí, pasos, …, patinaje sobre hielo, patines, pedal, pelota de cricket, pelota de fitness, penalti, …, pesas rusas, pescar, peso muerto, pie, ping pong, piolet, …, platos y bielas, podio, …, polo, polvos de talco, portería de hockey, potro de madera, press de banca, …, proteína de suero, punching ball, puntuación, quad, …, rafting, rampa, raqueta de tenis, …, reloj de ajedrez, reloj deportivo, …, remo, remonte, rey, rieles, ritmo cardíaco, …, rodilleras, rodillo, …, rugby, ruta, saco de boxeo, …, salto base, salto de caballo, salvavidas, scooter, scooter eléctrico, …, senderismo, sepak takraw, silbato, silbato de árbitro, silla de montar, silla de socorrista, silla plegable, sillín, …, slalom, snowboard, socorrista, sombrero, sudadera, sujetador deportivo, sumo, …, surfista, …, tablas, tablero de ajedrez, tablero de puntuación, tacos, taekwondo, tándem, taquilla, tarjeta amarilla, …, tarjeta roja, taza, teleférico, …, telesilla, temporizador, tenis, tenis de mesa, tenista, …, tirador, tiro, tiro al arco, toalla, tobogán, todoterreno, torneo, torre, traje de baño, trampolín, transmisión, trineo, trineo hinchable, trofeo, tubo de oxígeno, ubicación del gimnasio, uniforme, velocímetro, vestuario, vóleibol, waterpolo, windsurf, wushu, yoga, …, zapatillas deportivas, zapatos.

Caligrafía y lettering español-inglés: Animales

Cuaderno de caligrafía de gran tamaño, con más de 100 páginas, perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Para todas las edades

Es un libro recomendado para todas las edades. La sencillez de las ilustraciones y los conceptos llamarán la atención de los más pequeños, y también facilitarán el aprendizaje para los niños más mayores.

Animales: Caligrafía y lettering español inglés

Cuaderno de caligrafía y vocabulario bilingüe español-inglés

Libro de gran tamaño (21,5 x 28 cm) con más de 100 páginas. El cuaderno de actividades perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Caligrafía y lettering español-inglés: Animales

Disponible en Amazon

Puedes disfrutar de este libro en dos posibles formatos:

Cientos de ilustraciones para colorear y caligrafía con pauta montessori

Más de 500 ilustraciones ordenadas alfabéticamente, con la descripción en español y en inglés. Todos los dibujos se pueden colorear y se utiliza pauta montessori y letra ligada escolar punteada para repasar. Además, todas las páginas contienen tipografías diferentes de cada una de las letras del abecedario en mayúsculas.

Camello, Cangrejo, Canguro
Más de 500 Ilustraciones para colorear y texto bilingüe con letra caligráfica punteada y pauta montessori

Estimulación, desarrollo y aprendizaje

Practicar caligrafía sobre animales con vocabulario en español e inglés combina el desarrollo de habilidades de escritura con la estimulación creativa y cognitiva. Además, promueve una mayor conexión con la naturaleza. Todo esto contribuye a un aprendizaje más completo y enriquecedor, al tiempo que se disfruta de una actividad divertida y entretenida:

  • Estimulación multisensorial: La combinación de la caligrafía, el vocabulario y el coloreado de dibujos de animales involucra múltiples sentidos y áreas del cerebro. Esto proporciona una experiencia de aprendizaje más completa y estimulante, ya que se utilizan la vista y la coordinación mano-ojo de manera simultánea. Estimular diferentes sentidos al practicar la caligrafía y colorear puede ayudar a mejorar la retención y comprensión del material.
  • Refuerzo de la creatividad y expresión personal: El coloreado de dibujos de animales permite a los niños expresar su creatividad y estilo personal. Pueden elegir diferentes combinaciones de colores y dar vida a los animales de formas únicas. Esta expresión artística promueve la imaginación y la originalidad, lo cual es beneficioso para el desarrollo de la creatividad.
  • Aprendizaje lúdico y entretenido: La práctica de la caligrafía y el vocabulario mediante el coloreado de dibujos de animales es una forma lúdica y entretenida de aprender. El aspecto visual y colorido de los dibujos de animales captura el interés y la atención, haciendo que el proceso de aprendizaje sea más atractivo y divertido. Esto puede aumentar la motivación y el compromiso con la actividad, lo que a su vez favorece un aprendizaje más efectivo.
  • Desarrollo de habilidades motoras: Tanto la caligrafía como el coloreado de dibujos requieren destreza motora y coordinación fina. Al practicar estas actividades de manera regular, se fortalecen los músculos de la mano y se mejora la coordinación entre la mano y los ojos. Estas habilidades motoras finas son fundamentales para actividades diarias como escribir, dibujar y manipular objetos pequeños.
  • Incremento del vocabulario y la comprensión: La combinación de la caligrafía, el vocabulario y el coloreado de dibujos de animales proporciona una oportunidad para aprender nuevas palabras y reforzar el vocabulario existente tanto en español como en inglés. Al escribir palabras relacionadas con animales y colorear ilustraciones, se refuerza la asociación entre la palabra escrita, su significado y su representación visual. Esto ayuda a mejorar la comprensión y la retención de las palabras aprendidas.
  • Reducción del estrés y la ansiedad: Tanto la caligrafía como el coloreado de dibujos de animales son actividades relajantes y terapéuticas que pueden ayudar a reducir el estrés y la ansiedad. Estas actividades permiten concentrarse en el momento presente, fomentando la relajación y la calma mental. Además, el tema de los animales puede generar una sensación de conexión con la naturaleza, lo cual también contribuye a reducir el estrés.

Para aprender inglés fácilmente

Todas las letras y palabras están ilustradas de manera sencilla para facilitar el aprendizaje de nuevo vocabulario con un mínimo esfuerzo. Ideal para aprender a leer y escribir, en castellano y en inglés. Además, cada página se encuentra dividida en tres columnas, para elevar el nivel de dificultad gradualmente. En la primera columna se proporciona el dibujo para colorear, en la segunda aparece el texto en castellano, y en la tercera columna en inglés.

Chihuahua, Chillido sónico, Ciempiés, Ciervo, Cigüeña picozapato,
 Cisne, Coala, Cocodrilo, Cola de armadillo, Cola de ballena
Más de 100 páginas de gran tamaño (21,5 x 28 cm) con ilustraciones y vocabulario en español y en inglés

Mejora de habilidades lingüísticas y estimulación del interés por la naturaleza

El aprendizaje de vocabulario sobre animales en inglés desde temprana edad proporciona a los niños y niñas ventajas académicas, cognitivas y comunicativas. Les abre las puertas a un mundo globalizado, estimula su interés por la naturaleza y mejora sus habilidades lingüísticas en general. Algunas de las ventajas que les puede proporcionar este libro son las siguientes:

  • Apertura a nuevas oportunidades: El inglés es considerado el idioma global de la comunicación. Aprender vocabulario sobre animales en inglés desde temprana edad les brinda a los niños y niñas una ventaja competitiva en un mundo cada vez más interconectado. Les permitirá comunicarse con personas de diferentes culturas y países, ampliando así sus perspectivas y oportunidades futuras tanto académicas como profesionales.
  • Desarrollo cognitivo: Aprender vocabulario sobre animales en inglés estimula el desarrollo cognitivo de los niños y niñas. Numerosas investigaciones han demostrado que el aprendizaje de un segundo idioma, especialmente desde edades tempranas, mejora la memoria, la concentración y las habilidades de resolución de problemas. Al aprender vocabulario de animales en inglés, los niños y niñas están ejercitando su mente y desarrollando habilidades cognitivas que les serán útiles en diversas áreas académicas.
  • Acceso a recursos educativos: Muchos materiales educativos, libros y recursos en línea sobre el mundo animal están disponibles en inglés. Al mejorar el vocabulario sobre animales en inglés, los niños y niñas tendrán acceso a una amplia gama de recursos que les permiten explorar y aprender más sobre la fauna mundial. Esto enriquecerá su conocimiento y comprensión del mundo natural, así como su capacidad para investigar y buscar información de manera independiente.
  • Preparación para la vida global: En un mundo cada vez más globalizado, es fundamental que los niños y niñas se preparen para interactuar y colaborar con personas de diferentes culturas y antecedentes lingüísticos. El aprendizaje del vocabulario sobre animales en inglés les brinda una base sólida para desarrollar habilidades de comunicación intercultural y les ayuda a sentirse más cómodos y confiados al relacionarse con personas de habla inglesa.
  • Estimulación del interés por la naturaleza: El aprendizaje del vocabulario sobre animales en inglés puede despertar el interés de los niños y niñas por la naturaleza y la conservación de los animales. Al aprender sobre diferentes especies y sus características en inglés, pueden desarrollar un mayor aprecio por la diversidad de la vida en el planeta y adquirir conciencia sobre la importancia de proteger el medio ambiente.
  • Mejora de habilidades lingüísticas en general: Aprender vocabulario sobre animales en inglés contribuye al desarrollo general de las habilidades lingüísticas de los niños y niñas. El contacto con un segundo idioma enriquece su vocabulario y les ayuda a comprender y utilizar estructuras gramaticales de manera más precisa. Además, el aprendizaje de vocabulario sobre animales fomenta la asociación de palabras con imágenes y conceptos, lo cual fortalece su capacidad de comprensión y expresión oral y escrita.

De la A a la Z

Se incluye vocabulario para cada una de las letras del abecedario:

Abeja, Abejorro, Beluga, Bisonte, Cabra, Cachalote, Dálmata, Delfín, Elefante, Erizo, Felino, Fénec

Abeja, abubilla, ácaro, águila, airedale terrier, alosaurio, alpaca, amargasaurio, anquilosaurio, antílope, apatosaurio, araña, ardilla, ardilla listada, atún, avestruz, avispa, avoceta, azendohsaurio, babuino, bactrosaurus, bagre, ballena, barionix, basilosaurio, basset hound, beagle, beipiaosaurio, bisonte, border collie, boxer, boyero de berna, braquiosaurio, buey, búfalo, búfalo de agua, búho, buitre, bull terrier, bulldog francés, bullmastiff, burro, caballo, cabra, calamar, cálao, camaleón, camarasaurio, camarón, camello, cangrejo, canguro, caniche, …, caracol, caracol de mar, carbonero, cardenal, carnero, casa de pájaros, casa de perro, castor, cebra, celofisis, cerdo, chihuahua, chinche, chinche boxelder, ciempiés, ciervo, cigarra, cisne, coala, cocodrilo, codorniz, colibrí, colmena, conejillo de indias, conejo, coral, corgi, coritosaurio, correcaminos, criolofosauro, cucaracha, cuervo, dacentrurus, dálmata, delfín, dilofosaurio, dimorfodon, dinosaurio, dóberman, dodo, dracorex, dragón barbudo, elasmosaurio, elefante, erizo, erizo de mar, escarabajo, escarabajo de tierra, escelidosaurio, escorpión, escutelosaurio, espátula, espinosaurio, estegosaurio, estrella de mar, fénec, flamenco, foca, fósil, frailecillo, gacela, gallina, gallo, ganso, garza, gato, gato negro, gaviota, golondrina, gorila, gorrión, graciliceratops, grillo, gruya, gusano, halcón, hámster, herrerasaurio, hiena, hipopótamo, hormiga, huella, huevo de dinosaurio, hurón, husky siberiano, ictiosauro, insecto, insecto seco en ámbar, jabalí, jaguar, jirafa, kentrosaurio, kiwi, kronosaurio, labrador retriever, lagarto, lambeosaurio, lenguado, león, leona, leopardo, lepisma, libélula, llama, lobo, loro, luciérnaga, lucio, lucioperca, malamute, mamut, mandarín, mapache, mariposa, mariquita, martín pescador, medusa, microbio, mono, morena, morsa, mosasaurio, mosca, mosquito, murciélago, nariz de cerdo, nido, nido con huevos, nido vacío, nodosaurio, nutria, omaspides, orangután, orca, ordeño, ornitorrinco, oruga, oso, oso hormiguero, oso panda, oso pardo, oso polar, ostrero, oveja, pájaro, paloma, panda, panda rojo, paquicefalosaurio, parasaurolophus, parque, patio de juegos, pato, pavo, pavo real, pelícano, perca, perdiguero, perezoso, perro, perro guía, perro salchicha, petirrojo, pez, pez cirujano, pez dorado, pez espada, pez globo, pez martillo, pez payaso, pez tropical, pez volador, pingüino, piñonero, piquituerto común, piraña, plateosaurio, pluma, podenco faraónico, polilla, pollito de frente, pollito recién nacido, pollo, pomeranio, protoceratops, pteranodón, pterodáctilo, pulpo, rana, rape, rata, ratón, raya, refugio, revisión médica, rhamphorhynchus, rinoceronte, rosetón, salmón, san bernardo, sauropelta, saurópodo, serpiente, shih-tzu, suricata, tejón, telaraña, tiburón, tiburón martillo, tigre, tiracosaurio, tiranosaurio, tortuga, transportador de mascotas, triceratops, tucán, uómbat, vaca, vacuna, velociraptor, víbora, yak, yinlong, zoo, zorrillo, zorro.

Vocabulario ilustrado español-inglés: Transportes

Libro para colorear y cuaderno de caligrafía de gran tamaño, con 75 páginas y más de 300 dibujos sobre transportes en color. La descripción en español y en inglés facilitará el aprendizaje bilingüe de nuevo vocabulario.

Para todas las edades

Es un libro recomendado para niños y adultos. La sencillez de las ilustraciones y los conceptos llamarán la atención de los más pequeños, y también facilitarán la lectura y el aprendizaje para el público juvenil y adulto.

Vocabulario bilingüe con ilustraciones en color

Libro para colorear y cuaderno de caligrafía de gran tamaño (21,5 x 28 cm) con 75 páginas y más de 300 dibujos en color, con la descripción en español y en inglés.

Vocabulario ilustrado español-inglés: Transportes

Disponible en Amazon

Puedes disfrutar de este libro en tres posibles formatos:

Cuaderno de caligrafía español-inglés

Todas las palabras están ilustradas de manera sencilla para facilitar el aprendizaje de nuevo vocabulario con un mínimo esfuerzo. Los dibujos se pueden colorear y se dispone de la imagen original en color como modelo. También se incluye el texto con letra escolar ligada y punteada para practicar la escritura.

Más de 300 Ilustraciones en color y para colorear, y texto bilingüe con letra caligráfica punteada para repasar

Estimulación, desarrollo y aprendizaje

Practicar caligrafía y colorear dibujos de transportes con vocabulario en español e inglés permite mejorar la escritura y el conocimiento de estas palabras en los dos idiomas, fomentando la creatividad y la conexión con el entorno y estimulando habilidades cognitivas y motoras mediante una actividad entretenida y relajante. Esta combinación de prácticas estimula la imaginación, mejora la coordinación y fortalece el conocimiento lingüístico, mientras se aprende al mismo tiempo sobre los diferentes medios de transporte y se disfruta de una actividad visualmente atractiva y entretenida:

  • Mejora de la escritura: La caligrafía es una habilidad que requiere precisión y destreza en la escritura a mano. Al practicar la caligrafía sobre transportes y al escribir palabras relacionadas con diferentes vehículos, se mejora la fluidez de la escritura sobre estos conceptos. Esto incluye la formación correcta de las letras, la consistencia en el trazo y la legibilidad.
  • Aprendizaje de vocabulario en dos idiomas: Al utilizar vocabulario en español e inglés relacionado con transportes, se fortalece el conocimiento y la memorización de palabras en ambos idiomas. Esta práctica puede ser especialmente útil para aquellos que están aprendiendo español o inglés como segunda lengua, ya que les permite asociar las palabras con imágenes y contextos específicos relacionados con los transportes. Además, aprender vocabulario en dos idiomas amplía las habilidades lingüísticas y facilita la comunicación en un contexto multicultural.
  • Estimulación creativa y visual: La combinación de la caligrafía y el coloreado de dibujos de transportes brinda una oportunidad para la expresión artística y la creatividad. Al colorear los dibujos de transportes, se estimula la imaginación y la originalidad, permitiendo a cada persona personalizar sus creaciones y expresar su propio estilo visual. La práctica de la caligrafía y el coloreado de dibujos también proporciona una experiencia visualmente atractiva y entretenida.
  • Conexión con el mundo real y el entorno: Los transportes son una parte fundamental de nuestra vida diaria y del entorno que nos rodea. Al practicar la caligrafía y colorear dibujos de transportes, se establece una conexión más profunda con el mundo real y se fomenta la comprensión y el reconocimiento de los diferentes medios de transporte. Esta conexión ayuda a los niños y niñas a desarrollar una mayor conciencia del entorno y a comprender la importancia de los transportes en nuestras vidas.
  • Estimulación cognitiva y coordinación motora: Tanto la caligrafía como el coloreado de dibujos de transportes implican habilidades cognitivas y motoras. La práctica de la caligrafía requiere concentración, coordinación mano-ojo y control motor fino. Del mismo modo, el coloreado de los dibujos de transportes desarrolla habilidades de motricidad fina, coordinación de colores y atención al detalle. Estas actividades estimulan el cerebro, mejoran la concentración y la coordinación y contribuyen al desarrollo cognitivo general.
  • Entretenimiento y relajación: La práctica de la caligrafía y el coloreado de dibujos de transportes puede ser una actividad entretenida y relajante. Permite desconectar del estrés diario, fomenta la concentración en el momento presente y proporciona un espacio creativo para relajarse.

Para aprender inglés fácilmente

El cuaderno de actividades perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Más de 70 páginas de gran tamaño (21,5 x 28 cm) con ilustraciones en color y vocabulario en español y en inglés

Mejora de habilidades lingüísticas y estimulación del interés por la ingeniería

Es importante que los niños y niñas aprendan vocabulario sobre transportes en inglés porque les proporciona una herramienta lingüística valiosa para comunicarse en un mundo globalizado. El inglés es ampliamente utilizado en la industria del transporte y el turismo, y conocer vocabulario específico relacionado con los transportes en este idioma puede resultar muy útil en situaciones cotidianas tales como leer señales de tráfico, buscar direcciones o comunicarse con personas de diferentes países. Además, aprender sobre diferentes tipos de transportes en inglés fomenta la curiosidad y el conocimiento sobre el mundo que nos rodea, lo que puede estimular el aprendizaje y el interés por la ciencia y la tecnología. Por último, el aprendizaje de un segundo idioma puede proporcionar ventajas cognitivas, como mejorar la memoria, la capacidad de resolución de problemas y la flexibilidad mental, lo que puede beneficiar el desarrollo académico y personal de los niños y niñas a largo plazo:

  • Comunicación global: El inglés es uno de los idiomas más hablados y comprendidos en todo el mundo. Aprender vocabulario sobre transportes en inglés les proporciona a los niños y niñas la capacidad de comunicarse con personas de diferentes culturas y nacionalidades. Esto es especialmente valioso en un mundo cada vez más globalizado, donde el inglés se utiliza como un idioma común en el ámbito del transporte, el turismo y los negocios internacionales.
  • Acceso a recursos y conocimientos: Muchos recursos educativos, libros, videos y materiales relacionados con el tema de los transportes están disponibles en inglés. Al aprender el vocabulario en inglés, los niños y niñas pueden acceder a una amplia gama de recursos y fuentes de información, lo cual les permite aprender más sobre diferentes medios de transporte y avances tecnológicos. Esto estimula su curiosidad y conocimiento del mundo que les rodea.
  • Preparación para oportunidades futuras: A medida que los niños y niñas crecen, se enfrentarán a nuevas oportunidades académicas y profesionales. El dominio del vocabulario sobre transportes en inglés les proporciona una base sólida para futuros estudios o carreras relacionadas con la ingeniería, la logística, la aviación, el transporte marítimo y muchos otros campos. Además, muchas empresas valoran el conocimiento del inglés y el vocabulario específico en sus procesos de contratación.
  • Facilita la comprensión de contenido multimedia: La industria del entretenimiento y los medios de comunicación, como películas, programas de televisión y videojuegos, a menudo utilizan el inglés como idioma principal. Aprender vocabulario sobre transportes en inglés permite a los niños y niñas disfrutar y comprender mejor este tipo de contenido, lo cual amplía sus opciones de entretenimiento y les brinda acceso a historias y experiencias de transporte de diferentes partes del mundo.
  • Conexión con la tecnología: Muchos avances tecnológicos en el ámbito del transporte provienen de países de habla inglesa. Al aprender vocabulario sobre transportes en inglés, los niños y niñas pueden estar al tanto de los últimos desarrollos tecnológicos, investigaciones y descubrimientos en este campo. Esto les permite comprender y adaptarse a los cambios en la industria del transporte y estar preparados para los avances futuros.
  • Ampliación de horizontes y perspectivas: Aprender vocabulario sobre transportes en inglés proporciona a los niños y niñas una visión de las diferentes formas de transporte y los diversos sistemas de movilidad utilizados en distintas partes del mundo. Esto les permite ampliar su conocimiento y comprensión de la diversidad de medios de transporte existentes, así como de las prácticas y tendencias globales. Además, al aprender sobre transportes en inglés, también se familiarizan con términos técnicos y conceptos relacionados, lo cual enriquece su comprensión y perspectiva en este ámbito.
  • Desarrollo de habilidades lingüísticas y cognitivas: Aprender vocabulario sobre transportes en inglés ayuda a mejorar las habilidades lingüísticas en general, como la gramática y el vocabulario en ambos idiomas. Además, numerosos estudios han demostrado que el aprendizaje de un segundo idioma, como el inglés, estimula el desarrollo cognitivo, mejora la memoria, la concentración y las habilidades de resolución de problemas.

De la A a la Z

Se incluye vocabulario para cada una de las letras del abecedario:

Aeropuerto, …, ambulancia, amortiguador, ancla, andén, …, apisonadora, …, autobús escolar, autocaravana, automóvil, autovía, autovolquete, avioneta, …, barco de pesca, barco de vela, barco mercante, barrera de tráfico, bicicleta, bicitaxi, billete de avión, biplaza descapotable, …, bote de pedales, bote de remos, …, camión articulado, camión cisterna, camión de bomberos, …, camión de comida, camión de la basura, …, camión de reparto, camión grúa, camioneta, camper, canoa, caravana, …, carretera de peaje, carril bici, carrito de equipaje, carro de golf, casco, catamarán, ceda el paso, ciclismo, …, coche clásico, coche de carreras, coche de policía, coche deportivo, coche descapotable, coche eléctrico, coche todoterreno, cohete espacial, …, consigna, contenedor, control de pasaportes, controlador de tráfico aéreo, …, cruce de ferrocarril, crucero, cupé, …, deslizador, …, dirección obligatoria, dirigible, …, equipaje, escalera mecánica, espejo retrovisor, …, estación de tren, estacionamiento, estrechamiento de calzada, excavadora, exprés, ferrocarril de montaña, …, ferry, …, final de autopista, final de carril, flota, freno de disco, freno de mano, funicular, furgoneta de reparto, garaje, gasolinera, gato de coche, gire a la izquierda, globo aerostático, …, grúa, guardia, hélice de barco, helicóptero, hormigonera, …, intersección, kart, kayac, …, lancha rápida, lata de gasolina, …, límite de altura, límite de longitud, límite de velocidad, limpiaparabrisas, limusina, llanta de aleación, llave de tuercas, …, locomotora, lubricante, …, matrícula, mecánico, metro, microcoche, minibús, …, monopatín, monorraíl, moto acuática, motocicleta, motonieve, motor, …, nave espacial, navegación, neumáticos, …, palanca de cambios, paracaídas, parachoques, …, parquímetro, pasajero, pasaporte, paso de cebra, paso de peatones, patines, patinete, peaje, pendiente, perfil irregular, peso, pintura en aerosol, pistón, …, precaución, prohibido adelantar, prohibido aparcar, prohibido girar a la derecha, prohibido parar, prohibido pasar, …, quad, radiador, recargar, recogida de equipaje, reloj, remolque, reparar, reserva en línea, restaurante, revisor, rotonda, rueda, ruta, safari, sala de espera, satélite, …, segway, semáforo, semirremolque, señal de cruce, señal de dirección, señal de discapacitados, señal de estacionamiento, señal de stop, señal de tráfico, señalización, servicio de caballeros, servicio de señoras, silla de ruedas eléctrica, submarino, superdeportivo, tanque, taquilla, taxi, teleférico, teleférico de montaña, timón, todoterreno, …, tractor, tráfico, tren eléctrico, transbordador espacial, transmisión automática, transmisión manual, transporte público, tranvía, tren bala, tren de alta velocidad, tren de carga, …, triciclo, trineo, trineo de vela, trolebús, …, tuk tuk, vagón cisterna, …, vagón de tranvía, vagón de tren, valla, vehículo anfibio, vehículo remolcador, velero, velocímetro, vía de ferrocarril, viajero, viento, volante, yate, zepelín.

Vocabulario ilustrado español-inglés: Deportes

Libro para colorear y cuaderno de caligrafía de gran tamaño, con 75 páginas y más de 300 dibujos en color sobre deportes. La descripción en español y en inglés facilitará el aprendizaje bilingüe de nuevo vocabulario.

Para todas las edades

Es un libro recomendado para niños y adultos. La sencillez de las ilustraciones y los conceptos llamarán la atención de los más pequeños, y también facilitarán la lectura y el aprendizaje para el público juvenil y adulto.

Deportes: Vocabulario ilustrado español inglés

Vocabulario bilingüe con ilustraciones en color

Libro para colorear y cuaderno de caligrafía de gran tamaño (21,5 x 28 cm) con 75 páginas y más de 300 dibujos en color, con la descripción en español y en inglés.

Vocabulario ilustrado español-inglés: Deportes

Disponible en Amazon

Puedes disfrutar de este libro en tres posibles formatos:

Cuaderno de caligrafía español-inglés

Todas las palabras están ilustradas de manera sencilla para facilitar el aprendizaje de nuevo vocabulario con un mínimo esfuerzo. Los dibujos se pueden colorear y se dispone de la imagen original en color como modelo. También se incluye el texto con letra escolar ligada y punteada para practicar la escritura.

Agua mineral, Alpinista, Anillas
Más de 300 Ilustraciones en color y para colorear, y texto bilingüe con letra caligráfica punteada para repasar

Estimulación, desarrollo y aprendizaje

Practicar caligrafía sobre deportes con vocabulario en español e inglés y colorear dibujos de deportes puede beneficiar a los niños y niñas de diversas formas: mejora su escritura a mano, amplía su vocabulario en ambos idiomas, les conecta con el mundo deportivo, estimula su creatividad y habilidades visuales, desarrolla su coordinación motora, promueve la concentración y les proporciona una actividad relajante. Esta combinación de prácticas fomenta el aprendizaje, la expresión artística y el desarrollo de habilidades tanto cognitivas como motoras, al tiempo que les permite disfrutar de una experiencia visualmente atractiva y entretenida relacionada con el mundo deportivo:

  • Estimula la memoria y el aprendizaje: Al practicar caligrafía y colorear dibujos de deportes, los niños y niñas están utilizando tanto su memoria visual como su memoria muscular. Esto les ayuda a recordar mejor el vocabulario y la ortografía de las palabras relacionadas con los deportes, tanto en español como en inglés. Además, el acto de colorear puede ayudar a los niños y niñas a recordar mejor las palabras que están aprendiendo.
  • Estimulación sensorial: La caligrafía y el coloreado de las ilustraciones implican el uso de diferentes materiales, tales como lápices, colores y papel. Estos elementos proporcionan una experiencia táctil y sensorial que ayuda a captar la atención de los niños y niñas, manteniéndolos comprometidos en la actividad y fomentando su concentración.
  • Mejora la coordinación ojo-mano: Tanto la caligrafía como el coloreado requieren coordinación entre los ojos y las manos. La práctica regular de la caligrafía y el coloreado contribuye al desarrollo de destrezas motoras finas, tales como el control del lápiz, la precisión y la coordinación. Al practicar estas habilidades, los niños y niñas pueden mejorar su coordinación ojo-mano, lo cual es beneficioso para su desarrollo motor.
  • Fomenta la creatividad y la imaginación: La combinación de la caligrafía y el coloreado de dibujos de deportes brinda una oportunidad para la expresión artística y la creatividad. Al colorear los dibujos de deportes se pueden explorar diferentes combinaciones de colores, estilos e instrumentos tales como lápices y rotuladores. Esto estimula la imaginación y la originalidad, permitiendo a cada persona personalizar sus creaciones y expresar su propio estilo visual. La práctica de la caligrafía y el coloreado de dibujos también proporciona una experiencia visualmente atractiva y entretenida.
  • Fomenta el interés en la actividad física: Los deportes son una parte integral de nuestra sociedad y cultura. Practicar la caligrafía y colorear dibujos de deportes ayuda a los niños y niñas a conectarse con el mundo deportivo, a familiarizarse con diferentes disciplinas y a comprender la importancia del deporte en la vida diaria. Esta conexión promueve el interés por la actividad física, fomenta la adopción de estilos de vida saludables y les permite explorar sus propios intereses y talentos deportivos. Esto es importante para su salud y bienestar a largo plazo, ya que puede motivarles a participar en actividades físicas y deportivas.
  • Amplía el conocimiento cultural: Los deportes son una parte importante de muchas culturas en todo el mundo. Al aprender el vocabulario en español e inglés relacionado con los deportes, los niños y niñas pueden aprender sobre diferentes deportes populares en diferentes países y culturas. Esto les ayuda a desarrollar una comprensión más amplia y profunda de la diversidad cultural.
  • Relajación y reducción del estrés: Tanto la caligrafía como el coloreado de dibujos de deportes pueden tener un efecto relajante y terapéutico. Estas actividades permiten a los niños y niñas concentrarse en una tarea específica, lo cual puede ayudar a calmar la mente y reducir los niveles de estrés. Al centrar su atención en el trazo de las letras y el coloreado de los dibujos, los niños y niñas encuentran un espacio de tranquilidad que promueve la relajación y la concentración.

Para aprender inglés fácilmente

El cuaderno de actividades perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Portero, Press de banca, Press de pecho, Primavera, Protector solar, Proteína, Proteína de suero, Punching ball, Puntuación, Rafting
Más de 70 páginas de gran tamaño (21,5 x 28 cm) con ilustraciones en color y vocabulario en español y en inglés

Mejora de habilidades lingüísticas y estimulación del interés por los deportes

El aprendizaje del vocabulario sobre deportes en inglés proporciona a los niños y niñas habilidades de comunicación global, acceso a recursos deportivos y oportunidades de participación en competiciones internacionales, mejora de las habilidades lingüísticas, promoción de la actividad física y estilos de vida saludables, así como el desarrollo de habilidades interculturales. Estas habilidades les benefician tanto a nivel personal como académico, preparándoles para un mundo cada vez más interconectado y global:

  • Comunicación global: El inglés es uno de los idiomas más hablados en el mundo y es ampliamente utilizado en el ámbito deportivo a nivel internacional. Aprender vocabulario sobre deportes en inglés les permite a los niños y niñas comunicarse de manera efectiva con personas de diferentes países y culturas, lo que les brinda una ventaja en un mundo cada vez más globalizado.
  • Acceso a recursos y oportunidades: El aprendizaje del vocabulario sobre deportes en inglés amplía el acceso a una amplia gama de recursos relacionados con el deporte, como libros, artículos, videos y páginas web en inglés. Esto les permite explorar y aprender más sobre diferentes deportes, equipos, atletas y eventos alrededor del mundo, lo que enriquece su conocimiento y comprensión del mundo deportivo.
  • Mejora de las habilidades lingüísticas: Aprender vocabulario sobre deportes en inglés ayuda a desarrollar y mejorar las habilidades lingüísticas de los niños y niñas. Al aprender nuevas palabras y expresiones en el contexto deportivo, amplían su vocabulario y mejoran su capacidad de comunicación oral y escrita en inglés. Esto les beneficia en su desarrollo académico y en futuras oportunidades laborales.
  • Promoción de la actividad física y estilos de vida saludables: El aprendizaje del vocabulario sobre deportes en inglés fomenta el interés y la participación en actividades físicas. Al conocer los nombres de diferentes deportes en inglés, los niños y niñas pueden acceder a más información sobre ellos y explorar nuevas opciones para su práctica. Esto promueve un estilo de vida activo y saludable, así como el disfrute del deporte como parte de su rutina diaria.
  • Desarrollo de habilidades interculturales: Muchas competiciones y eventos deportivos de renombre, como por ejemplo los Juegos Olímpicos, utilizan el inglés como idioma principal de comunicación. Aprender vocabulario sobre deportes en inglés les brinda a los niños y niñas la oportunidad de aprender sobre diferentes culturas y perspectivas a través del deporte. Pueden descubrir cómo se practican y se perciben los deportes en otros países, lo que fomenta la comprensión intercultural y la apreciación de la diversidad.
  • Ampliación de oportunidades educativas y profesionales: El aprendizaje del vocabulario sobre deportes en inglés puede abrir puertas a diversas oportunidades educativas y profesionales en el campo deportivo. Muchas instituciones académicas y programas de estudio relacionados con el deporte requieren un buen dominio del inglés. Al tener conocimientos de vocabulario deportivo en inglés, los niños y niñas pueden acceder a programas educativos, becas y oportunidades de formación en centros especializados en el ámbito deportivo a nivel internacional. Además, en el campo profesional, el conocimiento del vocabulario sobre deportes en inglés puede representar una ventaja competitiva al buscar empleo en industrias como la gestión deportiva, el periodismo deportivo, y la traducción o interpretación en eventos deportivos, entre otros.

De la A a la Z

Se incluye vocabulario para cada una de las letras del abecedario:

Agua mineral, Alpinista, Avalancha
Baloncesto, Béisbol, Bicicleta
Cámara, Camilla, Campo de fútbol
Dardos, Dormir, Ducha
Equipo, Equitación, Escalada
Formación, Frisbi, Fútbol americano

abdominales, agua mineral, ajedrez, …, arquero, atleta, avalancha, bádminton, baloncesto, banda de resistencia, bandera de fuera de juego, …, banquillo, barómetro, barra, barra de dominadas, …, barras paralelas, barrita energética, báscula, bastón de trekking, bastones de esquí, bate, …, béisbol, biatlón, bicicleta, bicicleta estática, binocular, bmx, bobsleigh, bolos, bolsa de deporte, botas de esqui, botas de fútbol, botella, botiquín, boxeador, break dance, brújula, buceo, buzo, caballo, …, camilla, camisa, camisa polo, camiseta, camiseta de fútbol, …, campo de fútbol, cancha, canoa, cañón de nieve, …, casco, certificado, chaleco salvavidas, …, ciclismo, ciclista, cima, …, corredor, crampones, crema solar, cricket, cronómetro, cróquet, …, cuerda de saltar, curling, …, deporte acuático, diana, dieta, dirección, discos de pesas, disparo, dormido, …, entrenamiento, equipamiento de esquí, equitación, escalada, esgrima, esgrimista, espinilleras, espuela, esquís, establo, estadio, …, flexiones, formación, fórmula uno, frecuencia cardíaca, …, frisbi, fútbol, gafas de esquí, …, gimnasia rítmica, golf, gorro de baño, …, guantes de boxeo, guantes de esquí, hacer snorkel, hacer surf, herradura, herramienta, hockey sobre hielo, …, invierno, jalón dorsal, jinete, …, kárate, kart, kayac, kendo, kimono, lacrosse, latidos del corazón, levantador de pesas, levantamiento de pesas, levantar pesas, libro, línea de meta, linterna, linterna de cabeza, lucha, luchador, …, mancuerna, manga de viento, mapa, marcador, marchas, masa muscular, mate, mazo, medalla, …, meteorología, mitones, mochila, …, monopatín, montaña, mosquetón, moto acuática, motocross, motonieve, móvil, muay thai, mundial, músculo, natación, …, palo de cricket, palos de esquí, …, paracaidismo, paracaidista, paralelas, parkour, partido, pase de esquí, pasos, …, patinaje sobre hielo, patines, pedal, pelota de cricket, pelota de fitness, penalti, …, pesas rusas, pescar, peso muerto, pie, ping pong, piolet, …, platos y bielas, podio, …, polo, polvos de talco, portería de hockey, potro de madera, press de banca, …, proteína de suero, punching ball, puntuación, quad, …, rafting, rampa, raqueta de tenis, …, reloj de ajedrez, reloj deportivo, …, remo, …, ritmo cardíaco, …, rodilleras, rodillo, …, rugby, ruta, saco de boxeo, …, salto base, salto de caballo, salvavidas, …, senderismo, …, silbato de árbitro, silla de montar, silla de socorrista, silla plegable, sillín, …, slalom, snowboard, socorrista, sombrero, sudadera, sujetador deportivo, sumo, …, surfista, …, tablero de ajedrez, …, tacos, taekwondo, tándem, taquilla, tarjeta amarilla, …, tarjeta roja, taza, teleférico, …, telesilla, temporizador, tenis, tenis de mesa, tenista, …, tiro al arco, toalla, tobogán, todoterreno, torneo, torre, traje de baño, trampolín, transmisión, trineo, …, trofeo, tubo de oxígeno, …, uniforme, velocímetro, vestuario, vóleibol, waterpolo, windsurf, wushu, yoga, …, zapatillas deportivas.

Vocabulario ilustrado español-inglés: Animales

Libro para colorear y cuaderno de caligrafía de gran tamaño, con 75 páginas y más de 300 dibujos en color sobre animales. La descripción en español y en inglés facilitará el aprendizaje bilingüe de nuevo vocabulario.

Para todas las edades

Es un libro recomendado para niños y adultos. La sencillez de las ilustraciones y los conceptos llamarán la atención de los más pequeños, y también facilitarán la lectura y el aprendizaje para el público juvenil y adulto.

Vocabulario bilingüe con ilustraciones en color

Libro para colorear y cuaderno de caligrafía de gran tamaño (21,5 x 28 cm) con 75 páginas y más de 300 dibujos en color, con la descripción en español y en inglés.

Vocabulario ilustrado español-inglés: Animales

Disponible en Amazon

Puedes disfrutar de este libro en tres posibles formatos:

Cuaderno de caligrafía español-inglés

Todas las palabras están ilustradas de manera sencilla para facilitar el aprendizaje de nuevo vocabulario con un mínimo esfuerzo. Los dibujos se pueden colorear y se dispone de la imagen original en color como modelo. También se incluye el texto con letra escolar ligada y punteada para practicar la escritura.

Más de 300 Ilustraciones en color y para colorear, y texto bilingüe con letra caligráfica punteada para repasar

Estimulación, desarrollo y aprendizaje

Practicar caligrafía sobre animales con vocabulario en español e inglés combina el desarrollo de habilidades de escritura con la estimulación creativa y cognitiva. Además, promueve una mayor conexión con la naturaleza. Todo esto contribuye a un aprendizaje más completo y enriquecedor, al tiempo que se disfruta de una actividad divertida y entretenida:

  • Estimulación multisensorial: La combinación de la caligrafía, el vocabulario y el coloreado de dibujos de animales involucra múltiples sentidos y áreas del cerebro. Esto proporciona una experiencia de aprendizaje más completa y estimulante, ya que se utilizan la vista y la coordinación mano-ojo de manera simultánea. Estimular diferentes sentidos al practicar la caligrafía y colorear puede ayudar a mejorar la retención y comprensión del material.
  • Refuerzo de la creatividad y expresión personal: El coloreado de dibujos de animales permite a los niños expresar su creatividad y estilo personal. Pueden elegir diferentes combinaciones de colores y dar vida a los animales de formas únicas. Esta expresión artística promueve la imaginación y la originalidad, lo cual es beneficioso para el desarrollo de la creatividad.
  • Aprendizaje lúdico y entretenido: La práctica de la caligrafía y el vocabulario mediante el coloreado de dibujos de animales es una forma lúdica y entretenida de aprender. El aspecto visual y colorido de los dibujos de animales captura el interés y la atención, haciendo que el proceso de aprendizaje sea más atractivo y divertido. Esto puede aumentar la motivación y el compromiso con la actividad, lo que a su vez favorece un aprendizaje más efectivo.
  • Desarrollo de habilidades motoras: Tanto la caligrafía como el coloreado de dibujos requieren destreza motora y coordinación fina. Al practicar estas actividades de manera regular, se fortalecen los músculos de la mano y se mejora la coordinación entre la mano y los ojos. Estas habilidades motoras finas son fundamentales para actividades diarias como escribir, dibujar y manipular objetos pequeños.
  • Incremento del vocabulario y la comprensión: La combinación de la caligrafía, el vocabulario y el coloreado de dibujos de animales proporciona una oportunidad para aprender nuevas palabras y reforzar el vocabulario existente tanto en español como en inglés. Al escribir palabras relacionadas con animales y colorear ilustraciones, se refuerza la asociación entre la palabra escrita, su significado y su representación visual. Esto ayuda a mejorar la comprensión y la retención de las palabras aprendidas.
  • Reducción del estrés y la ansiedad: Tanto la caligrafía como el coloreado de dibujos de animales son actividades relajantes y terapéuticas que pueden ayudar a reducir el estrés y la ansiedad. Estas actividades permiten concentrarse en el momento presente, fomentando la relajación y la calma mental. Además, el tema de los animales puede generar una sensación de conexión con la naturaleza, lo cual también contribuye a reducir el estrés.

Para aprender inglés fácilmente

El cuaderno de actividades perfecto para niños y niñas, con el que aprenderán el abecedario y vocabulario básico sobre animales en español y en inglés de manera sencilla y progresiva.

Más de 70 páginas de gran tamaño (21,5 x 28 cm) con ilustraciones en color y vocabulario en español y en inglés

Mejora de habilidades lingüísticas y estimulación del interés por la naturaleza

El aprendizaje de vocabulario sobre animales en inglés desde temprana edad proporciona a los niños y niñas ventajas académicas, cognitivas y comunicativas. Les abre las puertas a un mundo globalizado, estimula su interés por la naturaleza y mejora sus habilidades lingüísticas en general. Algunas de las ventajas que les puede proporcionar este libro son las siguientes:

  • Apertura a nuevas oportunidades: El inglés es considerado el idioma global de la comunicación. Aprender vocabulario sobre animales en inglés desde temprana edad les brinda a los niños y niñas una ventaja competitiva en un mundo cada vez más interconectado. Les permitirá comunicarse con personas de diferentes culturas y países, ampliando así sus perspectivas y oportunidades futuras tanto académicas como profesionales.
  • Desarrollo cognitivo: Aprender vocabulario sobre animales en inglés estimula el desarrollo cognitivo de los niños y niñas. Numerosas investigaciones han demostrado que el aprendizaje de un segundo idioma, especialmente desde edades tempranas, mejora la memoria, la concentración y las habilidades de resolución de problemas. Al aprender vocabulario de animales en inglés, los niños y niñas están ejercitando su mente y desarrollando habilidades cognitivas que les serán útiles en diversas áreas académicas.
  • Acceso a recursos educativos: Muchos materiales educativos, libros y recursos en línea sobre el mundo animal están disponibles en inglés. Al mejorar el vocabulario sobre animales en inglés, los niños y niñas tendrán acceso a una amplia gama de recursos que les permiten explorar y aprender más sobre la fauna mundial. Esto enriquecerá su conocimiento y comprensión del mundo natural, así como su capacidad para investigar y buscar información de manera independiente.
  • Preparación para la vida global: En un mundo cada vez más globalizado, es fundamental que los niños y niñas se preparen para interactuar y colaborar con personas de diferentes culturas y antecedentes lingüísticos. El aprendizaje del vocabulario sobre animales en inglés les brinda una base sólida para desarrollar habilidades de comunicación intercultural y les ayuda a sentirse más cómodos y confiados al relacionarse con personas de habla inglesa.
  • Estimulación del interés por la naturaleza: El aprendizaje del vocabulario sobre animales en inglés puede despertar el interés de los niños y niñas por la naturaleza y la conservación de los animales. Al aprender sobre diferentes especies y sus características en inglés, pueden desarrollar un mayor aprecio por la diversidad de la vida en el planeta y adquirir conciencia sobre la importancia de proteger el medio ambiente.
  • Mejora de habilidades lingüísticas en general: Aprender vocabulario sobre animales en inglés contribuye al desarrollo general de las habilidades lingüísticas de los niños y niñas. El contacto con un segundo idioma enriquece su vocabulario y les ayuda a comprender y utilizar estructuras gramaticales de manera más precisa. Además, el aprendizaje de vocabulario sobre animales fomenta la asociación de palabras con imágenes y conceptos, lo cual fortalece su capacidad de comprensión y expresión oral y escrita.

De la A a la Z

Se incluye vocabulario para cada una de las letras del abecedario:

Abeja, abubilla, ácaro, águila, airedale terrier, alosaurio, alpaca, amargasaurio, anquilosaurio, antílope, apatosaurio, araña, árbol de hoja caduca, ardilla, ardilla listada, atún, avestruz, avispa, avoceta, azendohsaurio, babuino, bactrosaurus, bagre, ballena, barionix, basilosaurio, basset hound, beagle, beipiaosaurio, bisonte, border collie, boxer, boyero de berna, braquiosaurio, buey, búfalo, búfalo de agua, búho, buitre, bull terrier, bulldog francés, bullmastiff, burro, caballo, cabra, calamar, cálao, camaleón, camarasaurio, camarón, camello, cangrejo, canguro, caniche, …, caracol, caracol de mar, carbonero, cardenal, carnero, casa de pájaros, casa de perro, castor, cebra, celofisis, cerdo, chihuahua, chinche, chinche boxelder, ciempiés, ciervo, cigarra, cisne, coala, cocodrilo, codorniz, colibrí, colmena, conejillo de indias, conejo, coral, corgi, coritosaurio, correcaminos, criolofosauro, cucaracha, cuervo, dacentrurus, dálmata, delfín, dilofosaurio, dimorfodon, dinosaurio, dóberman, dodo, dracorex, dragón barbudo, elasmosaurio, elefante, erizo, erizo de mar, escarabajo, escarabajo de tierra, escelidosaurio, escorpión, escutelosaurio, espátula, espinosaurio, estegosaurio, estrella de mar, fénec, flamenco, foca, fósil, frailecillo, gacela, gallina, gallo, ganso, garza, gato, gato negro, gaviota, golondrina, gorila, gorrión, graciliceratops, grillo, gruya, gusano, halcón, hámster, herrerasaurio, hiena, hipopótamo, hormiga, huella, huevo de dinosaurio, hurón, husky siberiano, ictiosauro, insecto, insecto seco en ámbar, jabalí, jaguar, jirafa, kentrosaurio, kiwi, kronosaurio, labrador retriever, lagarto, lambeosaurio, lenguado, león, leona, leopardo, lepisma, libélula, llama, lobo, loro, luciérnaga, lucio, lucioperca, malamute, mamut, mandarín, mapache, mariposa, mariquita, martín pescador, medusa, microbio, mono, morena, morsa, mosasaurio, mosca, mosquito, murciélago, nariz de cerdo, nido, nido con huevos, nido vacío, nodosaurio, nutria, omaspides, orangután, orca, ordeño, ornitorrinco, oruga, oso, oso hormiguero, oso panda, oso pardo, oso polar, ostrero, oveja, pájaro, paloma, panda, panda rojo, paquicefalosaurio, parasaurolophus, parque, patio de juegos, pato, pavo, pavo real, pelícano, perca, perdiguero, perezoso, perro, perro guía, perro salchicha, petirrojo, pez, pez cirujano, pez dorado, pez espada, pez globo, pez martillo, pez payaso, pez tropical, pez volador, pingüino, piñonero, piquituerto común, piraña, plateosaurio, pluma, podenco faraónico, polilla, pollito de frente, pollito recién nacido, pollo, pomeranio, protoceratops, pteranodón, pterodáctilo, pulpo, rana, rape, rata, ratón, raya, refugio, revisión médica, rhamphorhynchus, rinoceronte, rosetón, salmón, san bernardo, sauropelta, saurópodo, serpiente, shih-tzu, suricata, tejón, telaraña, tiburón, tiburón martillo, tigre, tiracosaurio, tiranosaurio, tortuga, transportador de mascotas, triceratops, tucán, uómbat, vaca, vacuna, velociraptor, víbora, yak, yinlong, zoo, zorrillo, zorro.

HTML. Unidad 8. Vídeo y audio.

Introducción

Ahora que estamos cómodos añadiendo imágenes simples a una página web, el siguiente paso será empezar a agregar reproductores de audio y video a tu documento HTML. En este artículo veremos cómo hacerlo con los elementos  <video> y <audio>; luego terminaremos viendo como agregar subtítulos a nuestros videos.

Vídeo y audio en Internet

Los desarrolladores web han querido usar audio y video en la web por mucho tiempo, desde comienzos del 2000 cuando empezamos a tener un ancho de banda suficientemente rápido para soportar cualquier tipo de video (los archivos de video son mucho más grandes que texto o imágenes). En los inicios, las tecnologías web nativas como HTML no tenían el soporte para incrustar audio y video en la Web, tecnologías privadas (o basadas en plugins) como Flash (y después, Silverlight) se convirtieron populares para manipular este tipo de contenido. Este tipo de tecnología funcionó bien, pero tenía ciertos problemas, incluídos el no trabajar bien con las características de HTML/CSS, problemas de seguridad y problemas de accesibilidad.

Una solución nativa podría resolver mucho de esto si es implementado correctamente. Afortunadamente, unos pocos años después la especificación HTML5 tenía tales características agregadas, con los elementos <video> y <audio>, y algo nuevo JavaScript APIs para controlar estos. No veremos Javascript aquí — solo los fundamentos básicos que se pueden lograr con HTML.

No te enseñaremos como crear archivos de audio y video — eso requiere un conocimiento completamente diferente. Por el contrario, te proporcionamos archivos de audio y video de muestra con códigos de ejemplo disponibles en «https://fernandoruizrico.com/test-audio-and-video/» para que tu mismo experimentes, en caso de que no puedas conseguirlos por ti mismo.

El elemento <video>

El elemento <video> nos permite incrustar video fácilmente. De la misma manera que para el elemento <img>, el atributo src (source) contiene una ruta al video que deseas incrustar. Funciona de la misma manera. Los usuarios deben ser capaces de controlar la reproducción de video y audio (esto es especialmente crítico en personas que padecen  epilepsia). Se debe utilizar el atributo controls para incluir la interfaz de control del browser, o construir la nuestra utilizando la JavaScript API apropiada. Como mínimo la interfaz debe incluir una manera de empezar y terminar la reproducción, y ajustar el volumen. Un ejemplo muy simple podría ser el siguiente:

<video src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm" controls></video>

Podemos insertar un párrafo dentro de la etiqueta  <video> (denominado contenido de reserva) — y será mostrado si el navegador desde el que se está accediendo a la página no soporta el elemento <video>, permitiéndonos proveer un «fallback» para navegadores más antiguos. Se puede elegir cualquier contenido para dicho párrafo; en nuestro caso proporcionamos un enlace directo al archivo de vídeo, para que el usuario pueda al menos acceder de alguna manera, independientemente del navegador que esté usando.

<video src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm" controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p>
</video>

Atributos «width» y «height»

Podemos controlar el tamaño del vídeo con estos atributos o con CSS (esta es la opción más recomendable). En ambos casos, los vídeos mantienen su relación anchura – altura nativa. Si la relación de aspecto no se mantiene con los tamaños establecidos, el vídeo crecerá para rellenar el espacio horizontalmente y el el espacio sin rellenar sólo recibirá un color de fondo sólido de forma predeterminada. Por ejemplo, para establecer la anchura del vídeo a 720px y mantener la relación de aspecto, podemos utilizar un código similar al siguiente:

<video width="720"
       src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm" 
       controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

Ejercicio propuesto: Película de animación «Caminandes»

Crea una página web con el ejemplo anterior y copia el código tres veces para mostrar el mismo vídeo tres veces en total. Cambia el ancho para establecer un valor diferente para cada vídeo (1080, 720 y 480) y cambia también el atributo src para que corresponda con el de cada vídeo. Finalmente, verifica los resultados en tu navegador (actualiza la página web para asegurarte de que el navegador esté mostrando los últimos cambios en tu código). No olvides incluir todas las etiquetas HTML básicas necesarias y validar su código.

Vídeos:

https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm

https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm

https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_480p.mp4

<video width="1080"
       src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm" 
       controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

<video width="720"
       src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm" 
       controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

...

El atributo «poster»

Puedes especificar una URL para mostrar una imagen (atributo poster) hasta que el usuario reproduzca el vídeo. Si este atributo no se especifica, no se muestra nada hasta que el primer fotograma esté disponible, momento en el cual se mostrará esa imagen como póster.

<video width="1080"
       src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm" 
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/poster.jpg"
       controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

Ejercicio propuesto: Película de animación «Caminandes»

Modifica el código del ejercicio anterior, donde tienes el mismo vídeo con tres tamaños diferentes. Ahora tiene que usar el atributo poster para configurar tres imágenes diferentes (puede encontrar debajo los enlaces a los carteles, que están disponibles en https://fernandoruizrico.com/test-audio-and-video/, o puedes usar otras imágenes que te gusten). Cuando termines, verifica los resultados en tu navegador (actualiza tu página web para asegurarte de que el navegador esté mostrando los últimos cambios en tu código). No olvides incluir todas las etiquetas HTML básicas necesarias y validar tu código.

Posters:

https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/poster.jpg

https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/mine.png

https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/share.png

<video width="1080"
       src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm" 
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/poster.jpg"
       controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

<video width="720"
       src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm" 
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/mine.png"
       controls>
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

...

Compatibilidad con los navegadores

Normalmente se utilizan algunos códecs para comprimir vídeo y audio para conseguir que los archivos sean más manejables, ya que el audio y el vídeo sin procesar son excesivamente grandes. Cada navegador web admite una variedad de códecs, que se utilizan para convertir el audio y el vídeo comprimidos en datos binarios y viceversa. Cada códec ofrece sus propias características positivas y negativas que afectan a las decisiones sobre cuál utilizar. Para maximizar la probabilidad de que tu sitio web o aplicación funcione en el navegador de un usuario, es posible que debas proporcionar cada archivo multimedia en varios formatos. Si tu página web y el navegador del usuario no comparten un formato en común, los ficheros de audio o vídeo simplemente no se reproducirán.

Debemos tener en cuenta un aspecto adicional respecto a este tema: los navegadores móviles pueden admitir formatos adicionales no admitidos por sus equivalentes de escritorio, al igual que es posible que no admitan los mismos formatos que la versión de escritorio. Además de eso, tanto los navegadores de escritorio como los móviles pueden estar diseñados para gestionar la reproducción de medios (ya sea para todos los formatos o solo para tipos específicos que no pueden gestionar internamente). Esto significa que la compatibilidad con los ficheros depende en parte del software que haya instalado el usuario.

Entonces, ¿cómo gestionamos la compatibilidad de formatos? Echa un vistazo al código actualizado del ejemplo:

<video width="1080"
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/mine.png"
       controls>
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm"
    type="video/webm">
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.mp4"
    type="video/mp4">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

Aquí hemos quitado el atributo src del elemento <video> y en su lugar incluimos elementos separados <source> que apuntan a sus propias fuentes. En este caso el navegador irá a los elementos <source> y reproducirá el primero de los elementos que soporte. En primer lugar intentará reproducir el vídeo utilizando el formato WebM, y si no lo reconoce como válido, entonces intentará reproducir el formato MP4. Incluir fuentes WebM y MP4 debería bastar para reproducir el video en la mayoría de los navegadores actuales. Pero en cualquier caso, si el navegador no soporta ninguno de los formatos especificados, también hemos incluido el mensaje de aviso con el enlace correspondiente.

Cada elemento  <source>  también tiene un atributo type . Es opcional, pero se recomienda que se incluyan, ya que contienen MIME types (en-US) de los archivos de vídeo y los navegadores pueden leerlos y omitir inmediatamente los vídeos que no soporten. Si no están incluidos, los navegadores cargarán e intentarán reproducir cada archivo hasta que encuentren uno que funcione, lo que llevará aún más tiempo y un consumo de recursos innecesario.

En este artículo sobre soporte de formatos multimedia puedes encontrar algunos de los MIME types (en-US) más comunes.

Ejercicio propuesto: Película de animación «CaminandeS»

Tienes que modificar el código del ejercicio anterior donde tienes tres vídeos que muestran la película animada «Caminandes», cada uno con un tamaño diferente y un póster diferente. Debes insertar ahora un par de elementos fuente para que los tres vídeos contengan enlaces para los códecs webm y mp4 (puedes encontrar los enlaces en el ejemplo que tienes a continuación y también en https://fernandoruizrico.com/test-audio-and -video/). Verifica los resultados en tu navegador y no olvides añadir todas las etiquetas HTML necesarias y validar tu código.

Fíjate que el ancho del vídeo se puede ajustar a través del atributo «width», y también vamos a utilizar el atributo «poster» para establecer la imagen que se mostrará antes de que se reproduzca cada vídeo:
<video width="1080"
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/mine.png"
       controls>
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.webm"
    type="video/webm">
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_1080p.mp4"
    type="video/mp4">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p> 
</video>

<video width="720"
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/share.png"
       controls>
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm"
    type="video/webm">
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.mp4"
    type="video/mp4">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p>
</video>

...

Ejercicio propuesto: Película de animación «Sintel»

Crea una nueva página web con el siguiente código para mostrar la película animada «Sintel». Después de eso, duplica el código un par de veces para mostrar tres vídeos en total. Cambia el tamaño de los videos a 1080, 720 y 480 y configura los elementos <source> en consecuencia (elimina también el antiguo atributo src, de modo que obtengas un código similar al que se muestra en el siguiente ejemplo). Finalmente, cambia la imagen del póster para que cada vídeo muestre una imagen diferente cuando se acabe de cargar la página. Puedes encontrar los enlaces a los vídeos y carteles en https://fernandoruizrico.com/test-audio-and-video/, y también aquí:

Vídeos (1080 px):

https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-1080p.mp4

https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-1080p.ogv

Vídeos (720 px):

https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-720p.mp4

https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-720p.ogv

Vídeos (480 px):

https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-480p.mp4

https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-480p.ogv

Pósters:

https://fernandoruizrico.com/examples/test-media/video/sintel/stills/poster.jpg

https://fernandoruizrico.com/examples/test-media/video/sintel/stills/scales.png

https://fernandoruizrico.com/examples/test-media/video/sintel/stills/dragon.png

<video 
  width="1080" controls
  poster="https://fernandoruizrico.com/examples/test-media/video/sintel/stills/scales.png">
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-1080p.mp4"
    type="video/mp4">
  <source
    src="https://fernandoruizrico.com/examples/test-media/video/sintel/trailer/sintel_trailer-1080p.ogv"
    type="video/ogg">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p>
</video>

...

Otras funcionalidades del elemento <video>

Hay varias características adicionales que puedes incluir en un vídeo HTML5. Echa un vistazo al ejemplo que aparece a continuación:

<video controls width="720"
       autoplay loop muted preload="auto" 
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/poster.jpg">
  <source src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm" type="video/webm">
  <source src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.mp4" type="video/mp4">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p>
</video>

El atributo «autoplay»

Este atributo booleano le indica al navegador que el audio o el vídeo deben empezar a reproducirse de inmediato, mientras se carga el resto de la página. Conviene puntualizar que se desaconseja utilizar la reproducción automática ya que los usuarios pueden encontrarlo un poco molesto. Puedes consultar este enlace (autoplay guide) para obtener información adicional sobre cómo usar este atributo de manera adecuada.

El atributo «loop»

Si lo activamos, el vídeo (o audio) comenzará a reproducirse de nuevo cada vez que se acabe. Esta funcionalidad también puede resultar molesta en ocasiones, por lo que se recomienda utilizarlo solo si es realmente necesario.

El atributo «muted»

Este atributo booleano indica la configuración predeterminada del audio contenido en el vídeo. Si está activado, el audio se silenciará inicialmente. Su valor predeterminado es falso, lo que significa que el audio se reproducirá cuando se reproduzca el vídeo.

El atributo «preload»

El objetivo de este atributo enumerado es proporcionar una sugerencia al navegador sobre qué cree el desarrollador que resultará en una mejor experiencia para el usuario . Puede tener uno de los siguientes valores:

  • «none»: sugiere bien que el desarrollador cree que el usuario no tendrá que consultar el vídeo, o que el servidor desea minimizar su tráfico; es decir, esta sugerencia indica que el vídeo no se debe almacenar en caché.
  • «metadata»: sugiere que aunque el autor piensa que el usuario no tendrá que consultar este vídeo, es razonable capturar los metadatos (p. ej. longitud).
  • «auto»: sugiere que el usuario necesita tener prioridad; es decir, esta sugerencia indica que, si es necesario, se puede descargar el vídeo completo, incluso aunque el usuario no vaya a usarlo.
  • la cadena vacía: que es un sinónimo del valor «auto».

Si no está configurado, su valor predeterminado está definido por el navegador (es decir, cada navegador puede elegir su propio valor predeterminado), aunque la especificación aconseje que se establezca a «metadata».

Ejercicio propuesto: atributos adicionales

Siguiendo los ejemplos anteriores, crea una nueva página web con tres vídeos cualquiera y establece diferentes valores de los siguientes atributos: «loop», «muted» y «preload». También puedes probar el atributo de reproducción automática, aunque debes tener en cuenta que algunos navegadores pueden tener esta función desactivada. Finalmente verifica los resultados en tu navegador y valida el código.

<video controls width="720"
       loop muted
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/poster.jpg">
  <source src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm" type="video/webm">
  <source src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.mp4" type="video/mp4">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p>
</video>

<video controls width="720"
       loop preload="metadata"
       poster="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/stills/poster.jpg">
  <source src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.webm" type="video/webm">
  <source src="https://fernandoruizrico.com/examples/test-media/video/caminandes-llamigos/caminandes_llamigos_720p.mp4" type="video/mp4">
  <p>Tu navegador no soporta vídeo en formato HTML5. Haz click <a href="https://fernandoruizrico.com/test-audio-and-video/">aquí</a> para poder visualizarlo.</p>
</video>

...

Ejercicio propuesto: Tus 10 vídeos preferidos

Crea una página web para mostrar los diez vídeos que más te gusten. Debes establecer al menos los atributos de «width» y «poster» y también el elemento de <source> para asegurarte de que todos se muestren de la manera correcta, como en los ejemplos anteriores.

Puedes encontrar vídeos de ejemplo en los siguientes enlaces: https://senkorasic.com/testmedia/, https://archive.org/details/BigBuckBunny_124, https://archive.org/download/ElephantsDream/, https://tools.woolyss.com/html5-audio-video-tester/, https://test-videos.co.uk/, http://losplayer.com/?page_id=1880, https://dafftube.org/video-links/, https://github.com/mediaelement/mediaelement-files, http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5, https://sample-videos.com/, http://samples.mplayerhq.hu/, https://www.clipcanvas.com/a/video-clip-formats-and-codec-samples, https://peach.blender.org/download/, https://download.blender.org/peach/bigbuckbunny_movies/, https://orange.blender.org/download/, https://github.com/mdn/learning-area/tree/master/html/multimedia-and-embedding/video-and-audio-content, etc.

El elemento <audio>

The HTML <audio> element is used to embed sound content in documents. It may contain one or more audio sources, represented using the src attribute or the <source> element: the browser will choose the most suitable one. It works just like the <video> element, with a few small differences as outlined below. A typical example might look like so:

<figure>
    <figcaption>Trance 2. Instrumental Background Music.</figcaption>
    <audio
        controls
        src="https://fernandoruizrico.com/examples/test-media/audio/Twisterium-Trance2.wav">
        <p>Your browser doesn't support HTML5 audio. Click <a href="https://fernandoruizrico.com/test-audio-and-video/">here</a>  para poder visualizarlo.</p>
    </audio>
</figure>

<figure>
    <figcaption>Space battle. Space Fantasy Spot Effect.</figcaption>
    <audio
        controls
        src="http://bbcsfx.acropolis.org.uk/assets/07042219.wav">
        <p>Your browser doesn't support HTML5 audio. Click <a href="http://bbcsfx.acropolis.org.uk">here</a> instead.</p>
    </audio>
</figure>

The above example shows simple usage of the <audio> element. In a similar manner to the <img> and <video> elements, we include a path to the media we want to embed inside the src attribute. We can include other attributes to specify information such as whether we want it to loop, whether we want to show the browser’s default audio controls, etc.

As with the <video> tag, the content inside the opening and closing <audio></audio> tags is shown as a fallback in browsers that don’t support the element.

This takes up less space than a video player, as there is no visual component — you just need to display controls to play the audio. Other differences from HTML video are as follows:

  • The <audio> element doesn’t support the width/height attributes — again, there is no visual component, so there is nothing to assign a width or height to.
  • It also doesn’t support the poster attribute — again, no visual component.

Ejercicio propuesto: ejemplos de audio

Following the previous example, create a web page to insert at least ten figures containing audio samples. Update the caption of each figure to show a brief description of each audio file, and check the results in your browser. Do not forget to add all necessary HTML basic tags and validate your code.

You can find thousands of audio samples at: http://bbcsfx.acropolis.org.uk/

El elemento <iframe>

By now you should really be getting the hang of embedding things into your web pages, including images, video and audio. At this point we will like to take somewhat of a sideways step, looking at an element that allow you to embed a wide variety of content types into your webpages: the <iframe> element.

Incrustar un vídeo de YouTube

In this section we are going to jump straight into an active learning example to immediately give you a real idea of just what embedding technologies are useful for. The online world is very familiar with Youtube, but many people don’t know about some of the sharing facilities it has available. Let’s look at how Youtube allows us to embed a video in any page we like using an <iframe>:

  1. First, go to Youtube and find a video you like.
  2. Below the video, you’ll find a Share button — select this to display the sharing options.
  3. Select the Embed button and you’ll be given some <iframe> code — copy this.
<figure>
    <figcaption>Nyan Cat [original].</figcaption>
    <iframe width="560" height="315" src="https://www.youtube.com/embed/QH2-TGUlwu4" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</figure>

Ejercicio propuesto: Tus 10 vídeos de YouTube preferidos

Following the previous example, create a web page to insert at least ten figures containing videos from Youtube. Update the caption of each figure to show a brief description of each video, and check the results in your browser. Do not forget to add all necessary HTML basic tags and validate your code.

Incrustar un mapa de Google Maps

You will also find quite interesting embedding a Google Map. Let’s see how to do this with an example:

  1. Go to Google Maps and find a map you like.
  2. Click on the «Hamburger Menu» (three horizontal lines) in the top left of the user interface.
  3. Select the Share or embed map option.
  4. Select the Embed map option, which will give you some <iframe> code — copy this.
<figure>
    <figcaption>IES San Vicente.</figcaption>
    <iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3126.6024620057733!2d-0.5317505844743932!3d38.4044398796498!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0xd6233fea3991575%3A0xf28fcef8c48c1513!2sIES%20San%20Vicente!5e0!3m2!1ses!2ses!4v1601811180214!5m2!1ses!2ses" width="600" height="450" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>
</figure>

Ejercicio propuesto: Tus 10 ubicaciones preferidas

Following the previous example, create a web page to insert at least ten figures containing locations from Google Maps. Update the caption of each figure to show a brief description of each location, and check the results in your browser. Do not forget to add all necessary HTML basic tags and validate your code.

Test

Comprueba tus conocimientos con este test sobre audio y vídeo y otros conceptos relacionados con esta unidad.

HTML. Unidad 6. Tablas.

Introducción

Esta unidad te ayudará a comenzar con las tablas HTML. Vamos a exponer conceptos básicos como filas y celdas, encabezados, celdas que abarcan múltiples columnas y filas, y la forma de agrupar todas las celdas de una columna para aplicarles estilo en el futuro (utilizando CSS).

¿Qué es una tabla?

Una tabla es un conjunto estructurado de datos distribuidos en filas y columnas (datos tabulados). Una tabla permite buscar con rapidez y facilidad valores entre diferentes tipos de datos que indiquen algún tipo de conexión. Por ejemplo, una persona y su edad, o un horario, o información sobre diversos países, como se muestra en este ejemplo:

Países Capitales Población Idioma
USA Washington, D.C. 309 millones Inglés
Suecia Estocolmo 9 millones Sueco

Las tablas se utilizan con mucha frecuencia en la sociedad desde hace años, como lo demuestra este documento censal de los EUA de 1800:

Por lo tanto, no es de extrañar que los creadores de HTML proporcionen un medio con el que estructurar y presentar datos en tablas en la web.

¿Cómo crear una tabla?

Veamos un ejemplo práctico y construyamos una tabla simple.

1. Hola, soy tu primera celda. 2. Soy tu segunda celda. 3. Soy tu tercera celda. 4. Soy tu cuarta celda.
5. Segunda fila, primera celda. 6. Segunda fila, segunda celda. 7. Segunda fila, tercera celda. 8. Segunda fila, cuarta celda.

Construyamos la tabla paso a paso:

  1. El contenido de cada tabla está delimitado por las etiquetas <table> ... </table>:
<table>
    1. Hola, soy tu primera celda.
    2. Soy tu segunda celda.
    3. Soy tu tercera celda.
    4. Soy tu cuarta celda.
    5. Segunda fila, primera celda.
    6. Segunda fila, segunda celda.
    7. Segunda fila, tercera celda.
    8. Segunda fila, cuarta celda.
</table>
  1. El contenedor más pequeño dentro de una tabla es la celda, que se crea utilizando el elemento <td> (‘td’ significa ‘table data’). Pondremos el contenido de cada celda entre estas etiquetas:
<table>
    <td>1. Hola, soy tu primera celda.</td>
    <td>2. Soy tu segunda celda.</td>
    <td>3. Soy tu tercera celda.</td>
    <td>4. Soy tu cuarta celda.</td>
    <td>5. Segunda fila, primera celda.</td>
    <td>6. Segunda fila, segunda celda.</td>
    <td>7. Segunda fila, tercera celda.</td>
    <td>8. Segunda fila, cuarta celda.</td>
</table>
  1. Como se puede observar, las celdas no se colocan unas debajo de las otras, sino que se distribuyen automáticamente en la misma fila. Cada elemento <td> crea una celda individual, que se va colocando al final de la fila, haciendo que cada celda que añadamos incremente el tamaño de la fila. Para conseguir que la fila pare de crecer y las siguientes celdas se coloquen en una segunda fila, debemos usar el elemento <tr> (‘tr’ significa ‘table row’). Vamos a hacer esto ahora (encerraremos cada fila en un elemento <tr>, y dentro tendremos los elementos <td> con los contenidos individuales de cada celda):
<table>
    <!-- Primera fila -->
    <tr>
        <td>1. Hola, soy tu primera celda.</td>
        <td>2. Soy tu segunda celda.</td>
        <td>3. Soy tu tercera celda.</td>
        <td>4. Soy tu cuarta celda.</td>
    </tr>

    <!-- Segunda fila -->
    <tr>
        <td>5. Segunda fila, primera celda.</td>
        <td>6. Segunda fila, segunda celda.</td>
        <td>7. Segunda fila, tercera celda.</td>
        <td>8. Segunda fila, cuarta celda.</td>
    </tr>
</table>

Importante: Bordes de la tabla

Por defecto, el navegador no mostrará los bordes de las tablas. Para conseguir que se muestren los bordes, usaremos un poco de código CSS. De momento insertaremos el siguiente código en la sección <head> de cada fichero html que creemos (aprenderemos el significado de este código en otra unidad):

<head>
    ...
    <style>
        table {
            border-collapse: collapse;
        }
        table, th, td {
            border: 1px solid black;
        }
    </style>
</head>
<body>
    ...
</body>

Ejercicio propuesto: Tablas simples

Crea una nueva página web, copia y pega un par de veces la tabla del ejemplo anterior y cambia el contenido para obtener el siguiente resultado:

Importante: no olvides utilizar el código CSS del encabezado del documento para mostrar los bordes de la tabla.
uno dos tres cuatro
cinco seis siete ocho
uno dos tres
cuatro cinco seis
siete ocho nueve

Tablas con imágenes

Puedes insertar cualquier contenido dentro de las celdas de una tabla. Por ejemplo, imágenes:

<table>
    <tr>
        <td><img src="https://picsum.photos/id/10/300/200" /></td>
        <td><img src="https://picsum.photos/id/1000/200/200" /></td>
    </tr>
    <tr>
        <td><img src="https://picsum.photos/id/1003/200/200" /></td>
        <td><img src="https://picsum.photos/id/1011/300/200" /></td>
    </tr>
</table>

Ejercicio propuesto: Imágenes de prueba

Crea una tabla de dos columnas y al menos diez filas, e inserta varias imágenes, como se muestra en el ejemplo anterior (con bordes). Copia la misma tabla en un archivo nuevo y añade el código CSS necesario para observar el resultados ahora sin bordes.

Puedes usar por ejemplo imágenes que aparecen en «https://picsum.photos/images» . Sólo necesitas escoger una imagen y utilizar el «id» y el «size» correspondiente. Por ejemplo, «https://picsum.photos/id/1/200/200» es la imagen #1 (width=200px and height=200px). O «https://picsum.photos/id/103/300/200» es la imagen #103 (width=300px and height=200px).

Añadiendo encabezados con elementos <th>

Ahora prestemos atención a los encabezados de las tablas. Son celdas especiales que van al comienzo de una fila o columna y definen el tipo de datos que contiene esa fila o columna. Para ilustrar por qué son útiles, primero echemos un vistazo a la siguiente tabla:

Table without headers
Dog name Breed Age Eating Habits
Knocky Jack Russell 12 Eats everyone’s leftovers
Poppy Poodle 9 Nibbles at food
Buddy Streetdog 10 Hearty eater
Bailey Cocker Spaniel 5 Will eat till he explodes

Como podemos observar, aunque se puede distinguir perfectamente el contenido de la tabla, no resulta tan fácil hacer referencias cruzadas. Si los encabezados de columna y fila destacaran de alguna manera, podríamos interpretar más fácilmente el contenido de las celdas.

Para reconocer los encabezados de la tabla como encabezados, tanto visual como semánticamente, puedes usar el elemento <th> (‘th’ significa ‘table header’, encabezado de tabla). Funciona exactamente igual que un <td>, excepto que denota un encabezado, no una celda normal. Si cambiamos todos los elementos <td> de la tabla por elementos <th>, los datos que contienen se verán resaltados por defecto de alguna forma. Por ejemplo:

Table with headers
Dog name Breed Age Eating Habits
Knocky Jack Russell 12 Eats everyone’s leftovers
Poppy Poodle 9 Nibbles at food
Buddy Streetdog 10 Hearty eater
Bailey Cocker Spaniel 5 Will eat till he explodes

En el futuro cambiaremos los estilos de los elementos <td> y <th> utilizando CSS. Por ahora, concentrémonos en el código HTML:

<table>
    <tr>
        <th>Dog name</th>
        <th>Breed</th>
        <th>Age</th>
        <th>Eating Habits</th>
    </tr>
    <tr>
        <th>Knocky</th>
        <td>Jack Russell</td>
        <td>12</td>
        <td>Eats everyone's leftovers</td>
    </tr>
    <tr>
        <th>Poppy</th>
        <td>Poodle</td>
        <td>9</td>
        <td>Nibbles at food</td>
    </tr>
    <tr>
        <th>Buddy</th>
        <td>Street dog</td>
        <td>10</td>
        <td>Hearty eater</td>
    </tr>
    <tr>
        <th>Bailey</th>
        <td>Cocker Spaniel</td>
        <td>5</td>
        <td>Will eat till he explodes</td>
    </tr>        
</table>

Ejercicio propuesto: Paseador de perros

Crea una página web con una tabla similar a la del ejemplo anterior, para guardar la información de todos los clientes de un paseador de perros. Primero debe agregar tres columnas adicionales (para mantener el nombre de los propietarios, sus números de teléfono y las fotos de los perros). Después de eso, debes insertar varias filas para mostrar los datos de al menos diez perros.

En este caso puedes utilizar otro sitio web para obtener imágenes de prueba sobre perros: «https://placedog.net/images«. Accede a esta URL y sigue las instrucciones que aparecen en la parte superior de la página para insertar cada imagen. Por ejemplo:
Dog name Owner Phone number Breed Age Eating Habits Picture
Knocky Fernando Ruiz 111222333 Jack Russell 12 Eats everyone’s leftovers
Poppy John Doe 222333444 Poodle 9 Nibbles at food
Buddy Peter Stark 333444555 Street dog 10 Hearty eater
Bailey Steve Doe 666777888 Cocker Spaniel 5 Will eat till he explodes

Añadir un título a tu tabla con <caption>

Puedes dar un título a tu tabla colocándolo dentro de un elemento <caption> y anidándolo dentro del elemento <table>. Debes ponerlo justo debajo de la etiqueta de apertura <table>:

<table>
  <caption>Dinosaurios en el período Jurásico</caption>

  ...
</table>

Como puedes deducir a partir del breve ejemplo anterior, el título debe contener una descripción del contenido de la tabla. Esto es útil para todos los lectores que deseen descubrir de un vistazo si la tabla les resulta útil mientras ojean la página, pero es útil especialmente para usuarios ciegos. En lugar de que un lector de pantalla lea el contenido de muchas celdas solo para averiguar de qué trata la tabla, el lector puede contar con el título para luego decidir si leer la tabla con mayor detalle.

Ejercicio propuesto: Tabla sencilla con título y encabezados

Crea una página web con una tabla similar a la siguiente e inserta algunas filas adicionales (al menos diez).

Utiliza un elemento <caption> para poner el texto «Tabla simple con encabezados», y utiliza el elemento <th> para los encabezados «Nombre» and «Apellidos» headers.
Tabla simple con encabezados
Nombre Apellidos
John Doe
Fernando Ruiz

Ejercicio propuesto: Lista de países

Crea una tabla con cinco columnas y al menos diez filas, e inserta los datos relacionados con varios países. Puedes enumerar, por ejemplo, los nombres de los países, sus capitales, su población, el idioma y varias imágenes, como hicimos en el ejemplo al principio de la unidad, pero añadiendo una nueva columna para mostrar una imagen. Tienes que usar encabezados de tabla (<th>) y un título (<caption>). Tu tabla se debería parecer a la que se muestra a continuación.

Puedes usar de nuevo la web «https://picsum.photos/images» para coger diversas imágenes que puedan resultar representativas de cada país.
Countries I like
Countries Capitals Population Language Images
USA Washington, D.C. 309 million English
Sweden Stockholm 9 million Swedish

Ampliar las filas y las columnas

Para proporcionar control adicional sobre cómo las celdas se ajustan o se expanden sobre las columnas, podemos usar el atributo colspan en los elementos <th> y <td>. Este atributo nos permitirá especificar cuántas columnas debe ocupar una celda (el valor por defecto es 1). De forma similar, podemos utilizar el atributo rowspan para especificar sobre cuántas filas se extiende una determinada celda.

El siguiente ejemplo muestra una tabla muy sencilla que enumera los nombres de las personas junto con información diversa sobre la membresía en un club. Hay solo cuatro filas (incluida una fila de encabezado), cada una con cuatro columnas (incluida una columna de encabezado):

Name ID Member Since Balance
Margaret Nguyen 427311 0.00
Edvard Galinski 533175 37.00
Hoshi Nakamura 601942 15.00
<table>
  <tr>
    <th>Name</th>
    <th>ID</th>
    <th>Member Since</th>
    <th>Balance</th>
  </tr>
  <tr>
    <td>Margaret Nguyen</td>
    <td>427311</td>
    <td><time datetime="2010-06-03">June 3, 2010</time></td>
    <td>0.00</td>
  </tr>
  <tr>
    <td>Edvard Galinski</td>
    <td>533175</td>
    <td><time datetime="2011-01-13">January 13, 2011</time></td>
    <td>37.00</td>
  </tr>
  <tr>
    <td>Hoshi Nakamura</td>
    <td>601942</td>
    <td><time datetime="2012-07-23">July 23, 2012</time></td>
    <td>15.00</td>
  </tr>
</table>

Añadamos ahora otra columna que muestre la fecha en que finalizó la membresía de un usuario, junto con un encabezado sobre las fechas de «afiliación» y «cancelada» llamada «Fechas de membresía». Esto implica agregar intervalos de filas y columnas a la tabla, de modo que las celdas de encabezado puedan terminar en los lugares correctos. Veamos primero cómo quedaría la tabla:

Name ID Membership Dates Balance
Joined Canceled
Margaret Nguyen 427311 n/a 0.00
Edvard Galinski 533175 37.00
Hoshi Nakamura 601942 n/a 15.00

Observa que el área de encabezado aquí ocupa en realidad dos filas, una con los encabezados «Nombre», «ID», «Fechas de membresía» y «Saldo», y la otra con los encabezados «Afiliación» y «Cancelado», que son los subtítulos que aparecen debajo de «Fechas de membresía». Esto se logra mediante:

  • Poniendo los encabezados de la primera fila («Name», «ID», y «Balance») en una celda que se expanda a la fila siguiente, utilizando el atributo rowspan, de forma que tengan una altura de dos filas.
  • Poniendo el encabezado «Membership Dates» de la primera fila en una celda que se expanda a la siguiente columna usando el atributo colspan attribute, que provocará que el encabezado tenga una anchura de dos columnas.
  • Creando una segunda fila de elementos <th> que contenga los encabezados «Joined» y «Canceled». Como las otras celdas ya están ocupadas por sus equivalentes en la primera fila, y se expanden a la segunda, las nuevas celdas se deberían colocar correctamente debajo del encabezado «Membership Dates».

El código HTML es similar al del ejemplo anterior, excepto que debemos añadir una nueva columna en cada fila, y también tenemos que cambiar el encabezado, para que quede de la siguiente forma:

<table>
  <tr>
    <th rowspan="2">Name</th>
    <th rowspan="2">ID</th>
    <th colspan="2">Membership Dates</th>
    <th rowspan="2">Balance</th>
  </tr>
  <tr>
    <th>Joined</th>
    <th>Canceled</th>
  </tr>
  <tr>
    <th>Margaret Nguyen</td>
    <td>427311</td>
    <td><time datetime="2010-06-03">June 3, 2010</time></td>
    <td>n/a</td>
    <td>0.00</td>
  </tr>
  <tr>
    <th>Edvard Galinski</td>
    <td>533175</td>
    <td><time datetime="2011-01013">January 13, 2011</time></td>
    <td><time datetime="2017-04008">April 8, 2017</time></td>
    <td>37.00</td>
  </tr>
  <tr>
    <th>Hoshi Nakamura</td>
    <td>601942</td>
    <td><time datetime="2012-07-23">July 23, 2012</time></td>
    <td>n/a</td>
    <td>15.00</td>
  </tr>
</table>

Las diferencias que importan aquí (relativas a la expansión de filas y columnas) se encuentran en las primeras líneas del código del ejemplo anterior. Simplemente utilizamos rowspan para conseguir que los encabezados «Name», «ID», y «Balance» ocupen dos filas en vez de una, y usamos colspan para conseguir que el encabezado «Membership Dates» se extienda a lo largo de dos columnas.

Ejercicio propuesto: Tu horario

Crea una página web para mostrar tu horario del instituto. Deberías crear una tabla similar a la que se muestra a continuación.

Se deben utilizar elementos <th> para los encabezados, y el atributo colspan para los recreos. También puedes usar el elemento <strong> para resaltar el nombre de la asignatura de cada celda.
Monday Tuesday Wednesday Thursday Friday
07:55h Computer Safety
Peter Williams
Computer Safety
Peter Williams
Computer Safety
Peter Williams
08:50h Network Services
Samuel Holland
Computer Safety
Peter Williams
Network Services
Samuel Holland
Computer Safety
Peter Williams
09:45h Network Operating Systems
Lucy Scott
Network Services
Samuel Holland
Web Applications
Fernando Ruiz
Network Services
Samuel Holland
Network Services
Samuel Holland
10:40h B R E A K
11:00h Network Operating Systems
Lucy Scott
Network Operating Systems
Lucy Scott
Business and Entrepreneurial Initiative
Rick Harris
Web Applications
Fernando Ruiz
Network Services
Samuel Holland
11:55h Business and Entrepreneurial Initiative
Rick Harris
Network Operating Systems
Lucy Scott
Network Operating Systems
Lucy Scott
Web Applications
Fernando Ruiz
Web Applications
Fernando Ruiz
12:50h B R E A K
13:10h Network Services
Samuel Holland
Business and Entrepreneurial Initiative
Rick Harris
Network Operating Systems
Lucy Scott
Network Operating Systems
Lucy Scott
Web Applications
Fernando Ruiz
14:05h Network Services
Samuel Holland
Web Applications
Fernando Ruiz
Network Operating Systems
Lucy Scott

Estructurar la tabla con <thead>, <tbody> and <tfoot>

A medida que la estructura de las tablas se vuelve más compleja, es útil darles una estructura más definida. Una forma clara de hacerlo es con <thead><tfoot> y <tbody>, que te permiten marcar un encabezado, un pie de página y una sección del cuerpo de la tabla.

The table header
First cell in the table body Second cell in the table body
<table>
    <thead>
        <tr>
            <th colspan="2">The table header</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>First cell in the table body</td>
            <td>Second cell in the table body</td>
        </tr>
    </tbody>
</table>

Estos elementos no mejoran las características de accesibilidad de la tabla para los usuarios de lectores de pantalla ni su aspecto visual en sí. Sin embargo, son muy útiles para la aplicación de estilo y la compaginación, porque actúan como soportes útiles para añadir CSS a tu tabla. Como ejemplos interesantes, en el caso de una tabla extensa, puedes hacer que el encabezado y el pie de página se repitan en cada página impresa, y también que el cuerpo de la tabla se muestre en una sola página y desplazarte por los contenidos arriba y abajo con la barra de desplazamiento.

Para utilizar todos estos elementos solo debes tener en cuenta las siguientes consideraciones:

  • El elemento <thead> debe delimitar el encabezado de la tabla; esta suele ser la primera fila, que contiene los encabezados de las columnas, pero no siempre es así. Si utilizas los elementos <col>/<colgroup>, el encabezado de la tabla debe estar justo debajo.
  • El elemento <tfoot> delimita la parte de la tabla correspondiente al pie de página; esta podría ser una fila final con elementos en las filas anteriores. Puedes incluir el pie de página de la tabla justo en la parte inferior de la tabla, donde esperarías que esté, o justo debajo del encabezado (y el navegador lo mostrará aun así en la parte inferior de la tabla).
  • El elemento <tbody> delimita las otras partes del contenido de la tabla que no están en el encabezado o en el pie de página de la tabla. Aparecerá debajo del encabezado de la tabla o, a veces, en el pie de página, según cómo hayas decidido estructurarlo.

Los elementos <thead> +<tbody>

Añadamos por ejemplo los elementos <thead> y <tbody> a la tabla de los miembros del club:

Name ID Membership Dates Balance
Joined Canceled
Margaret Nguyen 427311 n/a 0.00
Edvard Galinski 533175 37.00
Hoshi Nakamura 601942 n/a 15.00
<table>
  <thead>
    <tr>
      <th rowspan="2">Name</th>
      <th rowspan="2">ID</th>
      <th colspan="2">Membership Dates</th>
      <th rowspan="2">Balance</th>
    </tr>
    <tr>
      <th>Joined</th>
      <th>Canceled</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">Margaret Nguyen</td>
      <td>427311</td>
      <td><time datetime="2010-06-03">June 3, 2010</time></td>
      <td>n/a</td>
      <td>0.00</td>
    </tr>
    <tr>
      <th scope="row">Edvard Galinski</td>
      <td>533175</td>
      <td><time datetime="2011-01013">January 13, 2011</time></td>
      <td><time datetime="2017-04008">April 8, 2017</time></td>
      <td>37.00</td>
    </tr>
    <tr>
      <th scope="row">Hoshi Nakamura</td>
      <td>601942</td>
      <td><time datetime="2012-07-23">July 23, 2012</time></td>
      <td>n/a</td>
      <td>15.00</td>
    </tr>
  </tbody>
</table>

Ejercicio propuesto: Miembros de un club

Crea una página web para mostrar una lista con los miembros de un club, tal como lo hemos hecho en el ejemplo anterior. Puede usar el mismo código fuente que se explicó anteriormente, pero debes añadir un par de columnas: una para escribir la dirección de correo electrónico de cada miembro y la otra para mostrar sus fotos. También debes añadir varias filas a la tabla para que contenga al menos diez miembros del club (puede usar nombres, fechas y saldos aleatorios).

Los elementos <thead> +<tbody> +<tfoot>

Ahora vamos a ver todos estos nuevos elementos en acción con otra tabla, donde usaremos todas las secciones posibles (<thead>, <tbody> y <tfoot>). Echa un vistazo al siguiente ejemplo:

How I chose to spend my money
Purchase Location Date Evaluation Cost (€)
SUM 118
Haircut Hairdresser 12/20 Great idea 30
Lasagna Restaurant 12/20 Regrets 18
Shoes Shoeshop 13/20 Big regrets 65
Toothpaste Supermarket 13/20 Good 5

Debemos poner las filas de los encabezados dentro del elemento <thead>, la fila de la suma dentro de un elemento <tfoot>, y el resto del contenido dentro de un elemento <tbody>. Verás que añadiendo el elemento <tfoot> provoca que la fila de la suma se coloque al final de la tabla. Y para acabar, añadiremos el atributo colspan para conseguir que la celda de la suma se expanda por las cuatro primeras columnas. De esta forma, el número aparece debajo de la columna de costes.

<table>
    <caption>How I chose to spend my money</caption>
    <thead>
        <tr>
            <th>Purchase</th>
            <th>Location</th>
            <th>Date</th>
            <th>Evaluation</th>
            <th>Cost (€)</th>
        </tr>
    </thead>
    <tfoot>
        <tr>
            <td colspan="4">SUM</td>
            <td>118</td>
        </tr>
    </tfoot>
    <tbody>
        <tr>
            <td>Haircut</td>
            <td>Hairdresser</td>
            <td>12/20</td>
            <td>Great idea</td>
            <td>30</td>
        </tr>
        <tr>
            <td>Lasagna</td>
            <td>Restaurant</td>
            <td>12/20</td>
            <td>Regrets</td>
            <td>18</td>
        </tr>
        <tr>
            <td>Shoes</td>
            <td>Shoeshop</td>
            <td>13/20</td>
            <td>Big regrets</td>
            <td>65</td>
        </tr>
        <tr>
            <td>Toothpaste</td>
            <td>Supermarket</td>
            <td>13/20</td>
            <td>Good</td>
            <td>5</td>
        </tr>
    </tbody>
</table>

Ejercicio propuesto: Cómo gastar tu dinero

Crea una página web para especificar cómo gastarías tu dinero. Puedes usar el mismo código fuente que en el ejemplo anterior, pero debes realizar los siguientes cambios: agrega varias filas con cualquier cosa que te gustaría hacer (al menos diez filas), y finalmente en la columna «Ubicación» debes usar imágenes en lugar de texto.

Puedes acceder de nuevo a la página web «https://picsum.photos/images» para obtener imágenes de tus sitios preferidos.

Ejercicio propuesto: Títulos

Añade títulos a las tablas que has creado anteriormente y que aún no tienen ningún título. No olvides volver a validar tu código.

Ejercicio propuesto: Estructura de tabla

Añade secciones de encabezado, pie y cuerpo a todas las tablas que hayas creado en ejercicios anteriores y aún no tengan esas secciones. No olvides volver a validar tu código.

Test

Comprueba tus conocimientos con este test sobre tablas y otros conceptos relacionados con esta unidad.

HTML. Unidad 10. Formularios avanzados.

Cómo estructurar un formulario HTML

Una vez examinados los conceptos básicos, vamos a ver más en detalle los elementos que se utilizan para proporcionar estructura y significado a las diferentes partes de un formulario. La flexibilidad que presentan los formularios los convierte en una de las estructuras más complejas y completas en HTML, puesto que puedes crear cualquier tipo de formulario básico a partir de los elementos y atributos destinados a esta función. El uso de una estructura correcta al crear un formulario HTML te ayudará a garantizar que el formulario presente las características de usabilidad y accesibilidad adecuadas.

El elemento <form>

Tal como explicamos en la unidad anterior, el elemento <form> se utiliza para definir un formulario y los atributos que determinan su comportamiento. Cada vez que desees crear un formulario HTML, debes empezar utilizando este elemento y anidando todo el contenido dentro de él.

Es posible usar controles de formulario fuera de un elemento <form>. Si lo haces, por defecto ese control no tendrá nada que ver con ningún formulario específico, a menos que lo asocies a algún formulario con el atributo form. Esto se introdujo para permitir vincular explícitamente un control a un formulario, incluso si no está dentro de él.

A continuación vamos a exponer los elementos que se pueden utilizar en un formulario.

Los elementos <fieldset> y <legend>

El elemento <fieldset> es una forma cómoda de crear grupos de controles de formulario (también denominados widgets) que comparten el mismo propósito, con fines semánticos y de aplicación de estilo. Puedes etiquetar un elemento <fieldset> incluyendo un elemento  <legend>  justo debajo de la etiqueta de apertura <fieldset>. El contenido textual del elemento <legend> describe formalmente el propósito del elemento <fieldset> que está incluido dentro.

Para lograr la máxima usabilidad/accesibilidad, se recomienda rodear cada lista de ítems relacionados con un <fieldset>, acompañado con un título dentro de un elemento <legend> que proporcione una descripción general de la lista. Cada uno de los ítems de esa lista estará compuesto a su vez por pares individual de elementos <label>/<input>. Por ejemplo, si utilizamos varios botones de radio o casillas de verificación para elegir una o varias opciones relativas a un dato específico, habitualmente colocaremos un <label> inmediatamente después cada opción, e indicaremos el propósito del grupo de botones de radio o casillas de verificación mediante el elemento <legend>.

Muchas tecnologías de asistencia utilizarán el elemento <legend> como si fuera una parte de la etiqueta de cada control dentro del elemento <fieldset> correspondiente. Por ejemplo, algunos lectores de pantalla como Jaws y NVDA leerán el contenido de la leyenda antes de decir la etiqueta de cada control.

Aquí tenemos un pequeño ejemplo:

<form>
  <fieldset>
    <legend>Tamaño del zumo de frutas</legend>
    <p>
      <label><input type="radio" name="size" value="small">Pequeño</label>
    </p>
    <p>
      <label><input type="radio" name="size" value="medium">Mediano</label>
    </p>
    <p>
      <label><input type="radio" name="size" value="large">Grande</label>
    </p>
  </fieldset>
</form>
Tamaño del zumo de frutas

El caso de uso que se muestra en este ejemplo es uno de los más habituales. Cada vez que tengamos un conjunto de botones de opción o casillas de verificación, deberíamos anidarlos dentro de un elemento <fieldset>. De esta forma, al leer el formulario anterior, un lector de pantalla dirá «Tamaño del zumo de fruta: pequeño» para el primer control de formulario, «Tamaño del zumo de fruta: mediano» para el segundo y «Tamaño del zumo de fruta: grande» para el tercero.

El elemento <fieldset> también se puede usar en muchos otros casos, simplemente con el propósito de dividir un formulario en diferentes secciones. Idealmente, si un formulario se alarga mucho, podremos mejorar su usabilidad colocando las diferentes opciones que estén relacionadas dentro de secciones independientes.

Ejercicio propuesto: Bebida y hamburguesa

Utilizando el código del ejemplo anterior, crea una página web para elegir el tamaño tanto de una bebida como de una hamburguesa, ambas opciones dentro de un <fieldset> diferente con el <legend> correspondiente. Además, como se hizo antes, el usuario debería poder elegir entre tres tamaños diferentes: pequeño, mediano y grande:

Bebida

Hamburguesa

Un formulario con secciones

Es importante recordar que el marcado de un formulario se realiza utilizando HTML. Esto significa que podemos utilizar cualquiera de las etiquetas habituales para organizar cada una de las opciones y conseguir que el formulario sea más legible. Por ejemplo, como podemos ver en los ejemplos anteriores, es una práctica común anidar cada etiqueta y su widget dentro de elementos <p>. También se recomienda el uso de listas para estructurar múltiples casillas de verificación o botones de radio.

Además del elemento <fieldset>, también es una práctica común usar títulos HTML (por ejemplo, <h1>, <h2>) y seccionamiento (por ejemplo, <section>) para estructurar formularios complejos. Depende de cada desarrollador encontrar un estilo de codificación que permita obtener formularios accesibles y con una alta usabilidad. Cada sección que agrupe cierta funcionalidad debe estar contenida en un elemento <section> separado, con elementos <fieldset> para agrupar por ejemplo botones de radio que nos permitan seleccionar un valor específico para una determinada opción.

Pongamos estas ideas en práctica y construyamos un formulario un poco más complejo: un formulario de pago. Este formulario contendrá más tipos de controles que el ejemplo anterior. Sigue las instrucciones que se muestran a continuación y fíjate en los elementos que estamos usando para estructurar el formulario.

  1. Primero, crearemos el formulario añadiendo el elemento externo <form>:
<form>
    ...
</form>
  1. Dentro de las etiquetas <form>, añadiremos un encabezado y un párrafo para indicar a los usuarios cuáles serán los campos obligatorios:
<form>
  <h1>Formulario de Pago</h1>
  <p>Los campos obligatorios se han marcado con <strong>*</strong>.</p>
  ...
</form>
  1. También añadiremos un simple <button> de tipo submit, en la parte inferior, para enviar los datos del formulario:
<form>
  <h1>Formulario de Pago</h1>
  <p>Los campos obligatorios se han marcado con <strong>*</strong>.</p>
  ...
  <p><button type="submit">Validar el pago</button></p>
</form>
  1. Luego añadiremos una sección más grande de código en el formulario, debajo de nuestra entrada anterior. Aquí verás que estamos encerrando los campos de información de contacto dentro de un elemento <section> distinto. Además, tenemos un conjunto de tres botones de radio, cada uno de los cuales colocamos en una nueva línea. También tenemos dos <input> de texto estándar y sus elementos <label> asociados, cada uno contenido dentro de un <p>, y un input de contraseña para introducir una clave:
<form>
  <h1>Formulario de Pago</h1>
  <p>Los campos obligatorios se han marcado con <strong>*</strong>.</p>
  <section><fieldset>
    <legend><h2>Información de contacto</h2></legend>
    <fieldset>
      <legend>Tratamiento</legend>
      <label><input type="radio" name="title" value="sr">Sr/Sra</label><br>
      <label><input type="radio" name="title" value="dr">Dr/Dra</label><br>
      <label><input type="radio" name="title" value="otro">Otro</label> <br>
    </fieldset>
    <p><label>Nombre: <input type="text" name="name" required> *</label></p>
    <p><label>Correo electrónico: <input type="email" name="email" required> *</label></p>
    <p><label>Contraseña: <input type="password" name="password" required> *</label></p>
  </fieldset></section>
  ...
  <p><button type="submit">Validar el pago</button></p>
</form>
  1. El segundo elemento <section> de nuestro formulario contiene la información de pago. Tenemos tres controles distintos junto con sus etiquetas, cada uno contenido dentro de un <p>. El primero es un menú desplegable (<select>) para seleccionar el tipo de tarjeta de crédito. El segundo es un elemento <input> de tipo tel, para introducir un número de tarjeta de crédito. Aunque podríamos haber usado el tipo número, no queremos la interfaz de usuario del spinner del número. El último es un elemento <input> de tipo fecha, para introducir la fecha de vencimiento de la tarjeta. Este campo aparecerá con un widget de selector de fecha en navegadores compatibles y se revertirá a una entrada de texto normal en navegadores no compatibles.
<form>
  <h1>Formulario de Pago</h1>
  <p>Los campos obligatorios se han marcado con <strong>*</strong>.</p>

  <section><fieldset>
    <legend><h2>Información de contacto</h2></legend>
    <fieldset>
      <legend>Tratamiento</legend>
      <label><input type="radio" name="title" value="sr">Sr/Sra</label><br>
      <label><input type="radio" name="title" value="dr">Dr/Dra</label><br>
      <label><input type="radio" name="title" value="otro">Otro</label> <br>
    </fieldset>
    <p><label>Nombre: <input type="text" name="name" required /> *</label></p>
    <p><label>Correo electrónico: <input type="email" name="email" required> *</label></p>
    <p><label>Contraseña: <input type="password" name="password" required> *</label></p>
  </fieldset></section>

  <section><fieldset>
    <legend><h2>Información de pago</h2></legend>
    <p><label>Tipo de tarjeta:
      <select name="card_type">
        <option value="visa">Visa</option>
        <option value="mc">Mastercard</option>
        <option value="amex">American Express</option>
      </select>
    </label></p>
    <p><label>Número de tarjeta: <input type="tel" name="card_number" required> *
    </label></p>
    <p><label>Fecha de vencimiento: <input type="date" name="expiration" required> *
    </label></p>
  </fieldset></section>

  <p><button type="submit">Validar el pago</button></p>
</form>

Ejercicio propuesto: Formulario de pago

Utilizando el código del ejemplo anterior, crea un formulario de pago más sofisticado. Dentro de la sección «Información de contacto», debes añadir un grupo de botones de opción para que el usuario pueda seleccionar su estado (ya sea «Estudiante», «Profesor» u «Otro») y un nuevo campo de texto para introducir el número de teléfono. Y dentro de la sección «Información de pago» tienes que añadir una nueva casilla de selección para que el usuario pueda elegir el tipo de pago preferido (ya sea «Tarjeta de crédito» o «Paypal») y un nuevo campo de correo electrónico para introducir la cuenta Paypal:

FORMULARIO DE PAGO (Los campos obligatorios se han marcado con *)

Información de contacto
Profesión


Tratamiento






Información de pago






Un ejemplo real: formularios de buscadores

Buscando texto

Ahora vamos a crear un formulario muy sencillo que proporcionará todos los datos necesarios (un texto simple) para realizar búsquedas en algunos de los buscadores más conocidos:

<form action="https://google.com/search" method="GET">
  <label>Google: <input type="text" name="q" required /></label>
  <button type="submit">Buscar</button>
</form>
...
<form action="https://duckduckgo.com/" method="GET">
  <label>DuckDuckGo: <input type="text" name="q" required /></label>
  <button type="submit">Buscar</button>
</form>
...
<form action="https://bing.com/search" method="GET">
  <label>Bing: <input type="text" name="q" required /></label>
  <button type="submit">Buscar</button>
</form>

Habrás notado que cuando presionas el botón de enviar, la consulta (parámetro q) se incluye en la URL, y de esta manera el motor de búsqueda sabrá qué buscar. Por ejemplo, si estamos buscando la palabra «perros» en Google, la URL resultante al enviar el formulario será esta: https://www.google.es/search?q=dog.

Ejercicio propuesto: Búsqueda de texto

Usando el ejemplo del formulario anterior para buscar información en Google, DuckDuckGo y Bing, desarrolla una página web similar a la de abajo para buscar información en varios motores de búsqueda (al menos cinco).

La única diferencia de un formulario a otro es el valor del atributo action (“https://google.com/search”, “https://duckduckgo.com/”, “https://bing.com/search”, “https://www.ecosia.org/search”, “https://search.givewater.com/serp”, etc.). Esta dirección se puede adivinar echando un vistazo a la URL cuando estás utilizando cada motor de búsqueda en particular.

BÚSQUEDA DE TEXTO

Buscando imágenes

Ahora cambiaremos un poco el código para que los resultados proporcionados por los motores de búsqueda sean imágenes en lugar de texto. En algunos casos solo necesitamos cambiar el atributo action, pero a veces tenemos que agregar algunos campos adicionales:

<form action="https://google.com/search" method="GET">
  <label>Google: <input type="text" name="q" required></label>
  <input type="hidden" name="tbm" value="isch">
  <button type="submit">Buscar</button>
</form>
...
<form action="https://duckduckgo.com/" method="GET">
  <label>DuckDuckGo: <input type="text" name="q" required></label>
  <input type="hidden" name="iax" value="images">
  <input type="hidden" name="ia" value="images">
  <button type="submit">Buscar</button>
</form>
...
<form action="https://search.givewater.com/serp" method="GET">
  <label>giveWater: <input type="text" name="q" required></label>
  <input type="hidden" name="qc" value="images">
  <button type="submit">Buscar</button>
</form>

Podrás apreciar que cuando presionas el botón de enviar, esos campos ocultos (que no son introducidos por el usuario) se incluyen automáticamente en la URL para que el motor de búsqueda sepa que tiene que mostrar imágenes en lugar de texto. De esta manera, en este ejemplo estamos pasando dos parámetros: q (la cadena de búsqueda) y tbm (para buscar imágenes). Por ejemplo, si estamos buscando imágenes sobre perros en Google, la URL resultante al enviar el formulario será esta: https://www.google.es/search?q=dog&tbm=isch.

Ejercicio propuesto: Búsqueda de imágenes

Usando el código del ejercicio anterior, desarrolla una nueva página web para buscar imágenes en varios motores de búsqueda (al menos cinco).

Para buscar imágenes usando Bing y Ecosia, solo tienes que usar el valor correcto para el atributo action (“https://bing.com/images/search”, “https://www.ecosia.org/images”). Solo tienes que usar los campos ocultos para Google (tbm), DuckDuckGo (iax, ia) y giveWater (qc), como se hizo en el ejemplo anterior. Tanto las direcciones como los campos ocultos se pueden adivinar echando un vistazo a la URL cuando estás utilizando cada motor de búsqueda en particular.

BÚSQUEDA DE IMÁGENES

Eligiendo entre búsqueda de texto e imágenes

Ahora centrémonos en el motor de búsqueda de Google y avancemos un paso más para añadir una casilla de verificación que le dé al usuario la opción de elegir entre buscar texto o imágenes:

<form action="https://google.com/search">
  <label>Google: <input type="text" name="q" required /></label>
  <label>Buscar imágenes <input type="checkbox" name="tbm" value="isch" /></label>
  <button>Buscar</button>
</form>

Ejercicio propuesto: Texto o imágenes

Desarrolla una página web para buscar texto o imágenes en los motores de búsqueda de Google y giveWater. Debes proporcionar al usuario una casilla de verificación para que pueda cambiar fácilmente de un tipo a otro:

BÚSQUEDA DE TEXTO

Filtrando los resultados

Finalmente, centrémonos nuevamente en el motor de búsqueda de Google para añadir varios controles de manera que el usuario pueda filtrar los resultados al buscar imágenes. También añadiremos un botón de reinicio para establecer los valores predeterminados:

<fieldset>
<form action="https://google.com/search" method="GET">
  <p>Buscar: <input type="text" name="q" class="big" required></p>

  <fieldset>
    <legend>Tamaño</legend>
    <select name="tbs"> 
      <option selected disabled>Cualquier tamaño</option>
      <option value="isz:l">Grande</option>
      <option value="isz:m">Mediano</option>
      <option value="isz:i">Icono</option>
    </select>
  </fieldset>
  <fieldset>
    <legend>Color</legend>        
    <select name="tbs"> 
      <option selected disabled>Cualquier color</option>
      <option value="ic:color">Color</option>
      <option value="ic:gray">Blanco y negro</option>
      <option value="ic:trans">Transparente</option>
   </select>
  </fieldset> 
  <fieldset>       
    <legend>Tipo</legend>        
    <select name="tbs"> 
      <option selected disabled>Cualquier tipo</option>
      <option value="itp:clipart">Clip art</option>
      <option value="itp:lineart">Dibujo lineal</option>
      <option value="itp:animated">GIF</option>
    </select>
  </fieldset>  
  <fieldset>     
    <legend>Fecha</legend>        
    <select name="tbs"> 
      <option selected disabled>Cualquier fecha</option>
      <option value="qdr:d">Últimas 24 horas</option>
      <option value="qdr:w">Última semana</option>
    </select>
  </fieldset> 
  <fieldset>       
    <legend>Licencia</legend>        
    <select name="tbs"> 
      <option selected disabled>Cualquier licencia</option>
      <option value="il:cl">Creative Commons</option>
      <option value="il:ol">Comercial y otras</option>
    </select>
  </fieldset>

  <input type="hidden" name="tbm" value="isch">

  <button type="reset">Reiniciar</button>
  <button type="submit">Buscar</button>
</form>
</fieldset>

Como verás, hemos añadido muchas opciones para establecer diferentes valores para un parámetro llamado “tbs” (hemos adivinado este parámetro y todos sus posibles valores observando la URL al buscar cualquier información en Google). De esta manera, en este ejemplo estamos pasando tres parámetros: q (la cadena de búsqueda), tbm (para buscar imágenes) y tbs (para filtrar los resultados). Por ejemplo, si estamos buscando imágenes GIF sobre perros, la URL resultante al enviar el formulario será esta: https://www.google.es/search?q=dog&tbm=isch&tbs=itp:animated.

También podrás apreciar que dentro de cada elemento estamos usando una opción predeterminada: <option selected disabled>...</option> para que, por defecto, ninguna de las opciones disponibles esté seleccionada y los resultados no estén filtrados.

Ejercicio propuesto: Filtrar imágenes con listas desplegables

Utilizando el código del ejemplo anterior, desarrolla una página web para buscar imágenes en Google y filtrar los resultados utilizando varias listas desplegables:

Buscar:

Tamaño
Color
Tipo
Fecha
Licencia

Ejercicio propuesto: Filtrando imágenes con botones de radio

Crea una nueva página web para buscar imágenes en Google y filtrar los resultados utilizando botones de radio:

Buscar:

Tamaño Grande
Mediano
Icono
Color Color
Blanco y negro
Transparente
Tipo Clip art
Dibujo lineal
GIF
Fecha Últimas 24 horas
Última semana
Licencia Creative Commons
Comercial y otros

Test

Comprueba tus conocimientos con este test sobre formato de texto y otros conceptos relacionados con esta unidad.

HTML. Unidad 9. Formularios.

Introducción

Esta unidad proporciona instrucciones y ejemplos que te ayudarán a aprender los conceptos básicos de los formularios web, que son una de las principales herramientas para interactuar con los usuarios. Por lo general, se utilizan para recopilar datos o para permitirles controlar una interfaz de usuario. Sin embargo, por razones históricas y técnicas, no siempre es obvio cómo utilizarlos en todo su potencial. En las secciones que se enumeran a continuación, cubriremos todos los aspectos esenciales de los formularios web, incluido el marcado de su estructura HTML, la validación de los datos del formulario y el envío de datos al servidor.

¿Qué son los formularios web?

Los formularios web son uno de los principales puntos de interacción entre un usuario y un sitio web o aplicación. Los formularios permiten a los usuarios la introducción de datos, que generalmente se envían a un servidor web para su procesamiento y almacenamiento (puedes consultar Enviar los datos de un formulario para más detalles), o se usan en el lado del cliente para provocar de alguna manera una actualización inmediata de la interfaz (por ejemplo, se añade otro elemento a una lista, o se muestra u oculta una función de interfaz de usuario).

El código HTML de un formulario web está compuesto por uno o más controles de formulario (a veces llamados widgets), además de algunos elementos adicionales que ayudan a estructurar el formulario general (a menudo se los conoce como formularios HTML). Los controles pueden ser campos de texto de una o varias líneas, cajas desplegables, botones, casillas de verificación o botones de opción, y se crean principalmente con el elemento <input>, aunque hay algunos otros elementos que también hay que conocer.

Los controles de formulario también se pueden programar para forzar la introducción de formatos o valores específicos (validación de formulario), y se combinan con etiquetas de texto que describen su propósito para los usuarios con y sin discapacidad visual.

Campos de un formulario

En las próximas secciones crearemos formularios web funcionales. Para ello presentaremos primero algunos controles de formulario y elementos estructurales comunes, y nos centramos también en las mejores prácticas de accesibilidad. A continuación, veremos con detalle las funciones de los diferentes controles de formulario, o widgets, y estudiaremos todas las diferentes opciones de que se dispone para la recopilación de diferentes tipos de datos. En este sección en particular, veremos el conjunto original de controles de formulario, disponible en todos los navegadores desde los primeros días de la web.

El elemento <label>

El elemento <label> nos permite definir una etiqueta para un control de un formulario HTML. Este es el elemento más importante si deseas crear formularios accesibles porque cuando se implementan correctamente, los lectores de pantalla leen la etiqueta de un elemento de formulario junto con las instrucciones relacionadas, y esto además resulta muy útil para los usuarios videntes. Tomemos este ejemplo que vimos en el artículo anterior:

<label>
  Nombre: <input type="text" name="nombre" />
</label>

Existe otra forma de asociar un control de formulario con una etiqueta. Un elemento <label> también se pueden asociar correctamente con un elemento <input> por su atributo for (que contiene el atributo id del elemento <input>):

<label for="nombre">
  Nombre: <input type="text" name="nombre" id="nombre" />
</label>

El resultado en ambos casos será el mismo:

Nombre:

Con la etiqueta <label> asociada correctamente con <input> por su atributo for (que contiene el atributo id del elemento <input>), un lector de pantalla leerá algo como «Nombre, editar texto». Si no hay ninguna etiqueta, o si el control de formulario no está asociado implícita o explícitamente con alguna etiqueta, un lector de pantalla leerá algo así como «Editar texto en blanco», lo cual no es de mucha ayuda.

¡También se puede hacer clic en las etiquetas!

Otra ventaja de configurar correctamente las etiquetas es que puedes hacer clic o pulsar en la etiqueta para activar el control de formulario correspondiente. Esto es útil para controles como entradas de texto, donde puedes hacer clic tanto en la etiqueta como en la entrada de texto para proporcionar el foco al control de formulario, pero es útil especialmente para botones de opción y casillas de verificación, porque la zona sensible de este control puede ser muy pequeña, y puede ser útil para facilitar su activación.

Por ejemplo, al hacer clic en el texto de la etiqueta «Me gustan las cerezas» del ejemplo siguiente, cambiará el estado seleccionado de la casilla de verificación cereza:

<label>
  <input type="checkbox" name="cereza" value="cereza" />
  Me gustan las cerezas
</label><br />
<label>
  <input type="checkbox" name="platano" value="platano" />
  Me gustan los plátanos
</label><br />


Campos de entrada de texto

Los campos de texto <input> son los controles de formulario más básicos, y permiten al usuario introducir cualquier tipo de datos. Pueden tomar muchas formas diferentes según el valor de su atributo type. Se utiliza para crear la mayoría de los tipos de controles de formulario, que incluyen campos de texto de una sola línea, controles para la fecha y la hora, y también controles sin introducción de texto, como casillas de verificación, selectores de opción y selectores de color, e incluso botones.

Todos los controles de texto básicos comparten algunos comportamientos comunes:

  • Se pueden marcar como readonly (el usuario no puede modificar el valor de entrada, pero este se envía con el resto de los datos del formulario) o disabled (el valor de entrada no se puede modificar y nunca se envía con el resto de los datos del formulario).
  • Pueden tener un placeholder: se trata de un texto que aparece dentro de la caja de entrada de texto y que se usa para describir brevemente el propósito de la caja de texto.
  • Pueden presentar una limitación de tamaño (el tamaño físico de la caja de texto) y de la extensión máxima (el número máximo de caracteres que se pueden poner en la caja de texto).
  • Permiten corrección ortográfica (utilizando el atributo spellcheck), si el navegador la admite.

Debemos tener en cuenta que los campos de texto de los formularios HTML son controles de entrada de texto sencillos sin formato. Esto significa que no puedes usarlos para aplicar una edición enriquecida (negrita, cursiva, etc.). Todos los controles de formulario que encuentres con texto enriquecido son controles de formulario personalizados creados con HTML, CSS y JavaScript.

Campos de texto de una sola línea

Un campo de texto de una sola línea se crea utilizando un elemento <input> cuyo valor de atributo type se establece en text, u omitiendo por completo el atributo type (text es el valor predeterminado). El valor text de este atributo también es el valor alternativo si el navegador no reconoce el valor que has especificado para el atributo type (por ejemplo, si especificas type="color" y el navegador no está dotado en origen de un control de selección de colores).

Veamos este ejemplo en el que aparecen un par de campos de texto de una sola línea:

<label>
  Nombre (de 5 a 10 caracteres):
  <input type="text" name="nombre" required
         minlength="5" maxlength="10" size="15" 
         placeholder="Escriba aquí su nombre">
</label><br />
<label>
  Comentario:
  <input type="text" name="comentario" required
         placeholder="Escriba aquí su comentario">
</label><br />


HTML5 ha mejorado el campo de texto básico original de una sola línea al añadir valores especiales para el atributo type que imponen restricciones de validación específicas y otras características, por ejemplo, específicas para introducir direcciones URL o números. Los expondremos más adelante, y también puedes encontrar más información en el siguiente enlace: Los tipos de entrada en HTML5.

Campo de contraseña

Uno de los tipos de entrada originales era el tipo de campo de texto password:

<label>
  Contraseña: <input type="password" name="contrasena">
</label>

El valor de la contraseña no añade restricciones especiales al texto que se introduce, pero oculta el valor que se introduce en el campo (por ejemplo, con puntos o asteriscos) para impedir que otros puedan leerlo.

Ten en cuenta que esto sólo se aplica a nivel de interfaz de usuario; a menos que envíes tu formulario en modo seguro, se enviará como texto plano, lo que es malo desde el punto de vista de la seguridad porque alguien con malas intenciones podría interceptar tus datos y robar tus contraseñas, datos de tarjetas de crédito o cualquier otra cosa que hayas enviado. La mejor manera de proteger a los usuarios de esto es alojar cualquier página que contenga formularios en una ubicación de conexión segura (es decir, en una dirección https://), de modo que los datos se cifren antes de enviarse.

Los navegadores reconocen las implicaciones de seguridad de enviar datos de formulario por una conexión insegura y disponen de mensajes de advertencia para disuadir a los usuarios de usar formularios no seguros. Para obtener más información sobre las implementaciones de Firefox al respecto, consulta el artículo Contraseñas inseguras.

Campos de texto de varias líneas

El elemento <textarea> representa un control de edición de texto de varias líneas, útil cuando deseas permitir que los usuarios introduzcan una cantidad considerable de texto, por ejemplo, un comentario de una revisión o en un formulario de contactar:</p>

<label>Cuéntanos tu historia:
  <textarea name="historia" rows="5">
    Era una noche oscura y tormentosa...
  </textarea>
</label>

Puede usar los atributos rows y cols para especificar el tamaño exacto para el campo <textarea>. Establecer estos a veces es una buena idea para mantener la coherencia, ya que los valores predeterminados del navegador pueden diferir. También estamos usando un contenido predeterminado (el que aparece entre las etiquetas de apertura y cierre), ya que <textarea> no admite el atributo value, tal como veremos en la próximo sección.

El elemento <textarea> también acepta algunos atributos comunes de los que también disponen los elementos <input>, tales como autocomplete, autofocus, disabled, placeholder, readonly, and required.

Valores por defecto en los cuadros de texto

A continuación vamos a exponer una de las rareas que presenta HTML respecto a la sintaxis de <input> en contraposición con la de <textarea></textarea>. La etiqueta <input> es un elemento vacío, lo que significa que no necesita una etiqueta de cierre. Sin embargo, el elemento <textarea> no es un elemento vacío, lo que significa que debe cerrarse con la etiqueta de cierre adecuada. Esto tiene un impacto en una característica específica de los formularios: el modo en que se define el valor predeterminado. Para definir el valor por defecto de un elemento <input>, debemos usar el atributo value de esta manera:

<input type="text" value="por defecto este elemento se llena con este texto">

Por otro lado, si queremos definir un valor predeterminado para un elemento <textarea>, debemos colocarlo entre las etiquetas de apertura y cierre del elemento <textarea>, de esta forma:

<textarea>
Por defecto, este elemento contiene este texto
</textarea>

Casillas de verificación y botones de opción

Los elementos de selección (o checkable items, en inglés) son controles cuyo estado puede cambiar cuando se hace clic en ellos o en sus etiquetas asociadas. Hay dos tipos de elementos de selección: las casillas de verificación (o check boxes) y los botones de opción (o radio buttons). Ambos usan el atributo checked para indicar si el control de formulario está seleccionado por defecto o no.

Vale la pena señalar que estos controles no se comportan exactamente como otros controles de formulario. Para la mayoría de los controles de formulario, cuando se envía el formulario, se envían todos los controles que tienen un atributo name, incluso si en ellos no se ha introducido ningún valor. En el caso de elementos de selección, sus valores se envían solo si están seleccionados. Si no están seleccionados, no se envía nada, ni siquiera su nombre. Si están seleccionados pero no tienen ningún valor asignado, el nombre se envía con el valor on.

Casillas de verificación

Las casillas de verificación se crean estableciendo el atributo type del elemento <input> con el valor checkbox. Los elementos de este tipo se suelen representar como casillas que se marcan al activarse, como las que se pueden ver en muchos formularios oficiales en papel. La apariencia exacta depende de la configuración del sistema operativo en el que se ejecuta el navegador. Generalmente se trata de un cuadrado, pero puede tener esquinas redondeadas. Una casilla de verificación permite seleccionar diversas opciones para enviarlas en un formulario.

Veamos y probemos un ejemplo muy simple:

<label>
  <input type="checkbox" name="zanahorias" value="zanahorias" checked />
  ¿Te gustan las zanahorias?
</label>

Al incluir el atributo checked, la casilla de verificación se marca automáticamente cuando se carga la página. Al hacer clic en la casilla de verificación o en su etiqueta asociada, la casilla de verificación se activa o desactiva.

Debido a su naturaleza activa-inactiva, las casillas de verificación se consideran botones de conmutación, y muchos desarrolladores y diseñadores han ampliado el estilo de casilla de verificación predeterminado para crear botones que parecen interruptores de conmutación. Aquí puedes ver un ejemplo (y también puedes observar el código fuente).

Botones de opción

Un botón de opción se crea estableciendo el atributo type del elemento <input> en el valor radio. Los elementos de este tipo se utilizan generalmente en grupos (colecciones de botones del mismo tipo que describen un conjunto de opciones relacionadas). Solo se puede seleccionar un botón de opción en un grupo determinado al mismo tiempo. Los botones de opción se representan normalmente como círculos pequeños, que se rellenan o resaltan cuando se seleccionan.

Veamos el código fuente de un ejemplo simple que contiene varios botones de opción y cómo lo representa un navegador:

¿Cuál es tu comida favorita?<br />
<label>
  <input type="radio" name="comida" value="sopa" checked="" />Sopa
</label><br />
<label>
  <input type="radio" name="comida" value="curry" />Curry
</label><br />
<label>
  <input type="radio" name="comida" value="pizza" />Pizza
</label><br />
¿Cuál es tu comida favorita?



Como hemos visto en este último ejemplo, es posible asociar diversos botones de opción. Si comparten el mismo valor de atributo name, se considera que están en el mismo grupo de botones. Solo un botón dentro de un grupo puede estar activado en cada momento. Esto significa que cuando uno de ellos se selecciona, todos los demás se deseleccionan automáticamente. Al enviar el formulario, solo se envía el valor del botón de opción seleccionado. Si ninguno de ellos está seleccionado, se considera que el conjunto completo de botones de opción está en un estado desconocido y no se envía ningún valor con el formulario. Cuando en un grupo de botones con el mismo nombre se selecciona uno de los botones de opción, no es posible deseleccionar todos los botones sin reiniciar el formulario.

El elemento <select>

El elemento select (<select>) de HTML representa un control que muestra un menú de opciones. Las opciones contenidas en el menú son representadas por elementos <option>, los cuales pueden ser agrupados por elementos <optgroup>. Además, una determinada opción puede estar preseleccionada al cargarse la página.

Veamos el siguiente ejemplo de código y cómo lo representa el navegador:

<label>Escoge la mascota que más te guste:
  <select name="mascota" id="mascota">
    <option value="">--Selecciona una opción--</option>
    <option value="perro">Perro</option>
    <option value="gato">Gato</option>
    <option value="hamster">Hamster</option>
    <option value="loro">Loro</option>
    <option value="arana">Araña</option>
    <option value="pez">Pez</option>
  </select>
</label>

El ejemplo anterior muestra el uso típico del elemento <select>. Lo asociamos con una etiqueta <label> con fines de accesibilidad y utilizamos el atributo name para representar el nombre del campo que se enviará al servidor. Cada opción de menú está definida por un elemento <option> anidado dentro del <select>.

Cada elemento <option> debe tener un atributo value que contenga el valor para enviar al servidor cuando se seleccione esa opción. Si no se incluye ningún atributo value, el valor predeterminado es el texto contenido dentro del elemento. Puedes incluir un atributo selected en un elemento <option> para que se seleccione de forma predeterminada cuando se carga la página por primera vez.

El elemento <select> tiene algunos atributos únicos que puedes usar para personalizarlo. Por ejemplo, con el atributo multiple especificas si se pueden seleccionar varias opciones y con el atributo size puedes especificar cuántas opciones deben mostrarse a la vez. También se aceptan muchos atributos genéricos tales como requireddisabledautofocus, etc.

Por último, conviene mencionar que se pueden anidar varios elementos <option> dentro de <optgroup> para crear grupos separados de opciones dentro del menú desplegable.

Selector de archivos

Hay un último tipo de <input>: el tipo entrada de archivo. Los formularios pueden enviar archivos a un servidor (esta acción específica también se detalla en el artículo Enviar los datos del formulario). El control de selección de archivos se puede usar para elegir uno o más archivos para enviar.

Para crear un control de selección de archivos, podemos utilizar el elemento <input> con su atributo type establecido en file. Es posible restringir los tipos de archivos que se aceptan utilizando el atributo accept. Además, puedes permitir que el usuario elija más de un archivo añadiendo el atributo multiple.

En este ejemplo, se crea un control de selección de archivos que solicita archivos de imágenes gráficas. En este caso, el usuario puede seleccionar múltiples archivos:

<input type="file" name="file" accept="image/*" multiple="" />

En algunos dispositivos móviles, el control de selección de archivos permite acceder a fotos, vídeos y audio capturados directamente por la cámara y el micrófono del dispositivo. Para ello basta con añadir información de captura al atributo accept de la manera siguiente:

<input type="file" accept="image/*;capture=camera">
<input type="file" accept="video/*;capture=camcorder">
<input type="file" accept="audio/*;capture=microphone">

Botones

El botón de opción no es realmente un botón, a pesar de su nombre. A continuación echaremos un vistazo a los controles de formulario que son botones propiamente. La etiqueta de HTML <button> representa un elemento de tipo botón que puede ser utilizado en formularios o en cualquier parte de la página que necesite un botón simple y estándar para iniciar una acción al pulsar sobre él. De forma predeterminada, los botones HTML se presentan con un estilo similar en todas las plataformas, pero estos estilos se pueden cambiar fácilmente utilizando CSS.

El comportamiento por defecto de un botón se puede cambiar mediante el atributo type. Los posibles valores que podemos utilizar son:

  • submit: El botón envía los datos del formulario al servidor. Este es el valor predeterminado si el atributo no se especifica para los botones asociados con el formulario o si el atributo contiene un valor vacío o no válido.
  • reset: El botón restablece todos los controles a sus valores iniciales. Debería usarse solo cuando sea necesario, ya que puede provocar que un usuario pierda los datos que acaba de introducir.
  • button: El botón no tiene un comportamiento predeterminado y no hace nada cuando se presiona de manera predeterminada. Utilizando código JavaScript podemos iniciar diversas acciones para responder a los eventos que genere este elemento.

Veamos algunos tipos de botones con un ejemplo sencillo:

<p>
  <label>Introduce un comentario: <input type="text" name="comentario" required="" /></label>
</p>
<p>
  <button type="submit">Este es un botón de tipo "submit"</button>
</p>
<p>
  <button type="reset">Este es un botón de tipo "reset"</button>
</p>
<p>
  <button type="button">Este es un botón de tipo "button"</button>
</p>

Como puedes ver en los ejemplos, los elementos <button> te permiten usar código HTML entre las etiquetas <button> de apertura y cierre. Los elementos <input>, por otro lado, son elementos vacíos; el contenido que muestran está limitado al atributo value y, por lo tanto, solo aceptan contenido de texto sin formato.

Ejercicio propuesto: Campos básicos

Crea una página web para mostrar ejemplos de los elementos de tipo «input» de esta unidad: texto de una sola línea y de varias líneas, contraseña, casillas de verificación y botones de radio, lista desplegable con opciones y selector de archivos. Debes incluir al menos un ejemplo de cada uno de ellos. Debes usar párrafos y etiquetas, y también el atributo «required» y otras posibles restricciones que se puedan aplicar a cada uno de ellos. Verifica el resultado en tu navegador y no olvides incluir todas las etiquetas HTML básicas y validar tu código. Por último, verifica el resultado en tu teléfono móvil.

Nota: Coloca todas las etiquetas dentro de un contenedor <form> y usa un botón de tipo «submit» para verificar que los campos estén validados correctamente. Puedes utilizar un código similar a este:
<form>
  <p><label>
    Nombre: <input type="text" name="nombre" required="" />
  </label></p>
  <p><label>
    Apellidos: <input type="text" name="apellidos" required="" />
  </label></p>
  <p><label>
    Contraseña: <input type="password" name="contrasena1" required="" />
  </label></p>
  <p><label>
    Repite la contraseña: <input type="password" name="contrasena2" required="" />
  </label></p>
  ...
  <p><button>Enviar</button></p>
</form>

Campos nuevos en HTML5

En la sección anterior vimos el elemento <input> y los valores de su atributo type, disponibles desde los inicios de HTML. Ahora veremos en detalle la funcionalidad de los controles de formulario más recientes, incluyendo algunos tipos de entrada nuevos, los cuales fueron añadidos en HTML5 para permitir la recolección de tipos de datos específicos.

Campo de dirección de correo electrónico

Este tipo de campo se define utilizando el valor  email en el atributo type del elemento <input>:

<label>
  Introduce un correo electrónico válido: 
  <input type="email" name="correo" placeholder="[email protected]" required="" />
</label>

Cuando se utiliza este valor type, se le obliga al usuario a escribir dentro del campo una dirección de correo electrónico válida. Cualquier otro contenido ocasiona que el navegador muestre un mensaje de error cuando se envía el formulario. Puedes verlo en acción en el siguiente ejemplo:

Puedes utilizar también el atributo multiple en combinación con el tipo input email para permitir que sean introducidas varias direcciones de correo electrónico separadas por comas en el mismo input:

<label>
  Múltiples correos electrónicos: <input type="email" name="correos" multiple="" />
</label>

En algunos dispositivos, en particular dispositivos táctiles con teclados dinámicos como los smart phones, debería desplegarse un teclado virtual que es más adecuado para introducir direcciones de correo electrónico, incluyendo la tecla @.

Campo URL

Se puede crear un tipo especial de campo para introducir URLs utilizando el valor url para el atributo type:

<label>
  Introduce una URL:
  <input type="url" name="url" placeholder="https://..." required="" />
</label>

Este tipo añade restricciones de validación en el campo. El navegador informará de un error si no se introdujo el protocolo (como http: o  https:), o si de algún modo la URL es claramente incorrecta. Debemos tener en cuenta que solo porque la URL tenga un formato correcto, no significa necesariamente que la dirección al que hace referencia exista. Puedes hacer pruebas con el siguiente ejemplo:

En dispositivos con teclados dinámicos a menudo se mostrarán por defecto algunas o todas las teclas como los dos puntos, el punto, y la barra inclinada.

Campo número de teléfono

Se puede crear un campo especial para introducir números de teléfono utilizando tel como valor del atributo type:

<label>
  Introduce un número de teléfono:
  <input type="tel" name="telefono" placeholder="123 456 789" />
</label>

Cuando se accede desde un dispositivo táctil con teclados dinámicos, muchos de ellos mostrarán un teclado numérico cuando se encuentren con type="tel", lo que significa que este tipo es útil no sólo para ser utilizado para números de teléfono, sino también cuando sea útil un teclado numérico.

Debido a la gran variedad de formatos de número de teléfono existentes, este tipo de campo no establece ningún tipo de restricción sobre el valor introducido por el usuario (esto significa que permite incluir letras, etc…). Se puede utilizar el atributo pattern para establecer restricciones (puedes consultar más información sobre este atributo en Validación de formulario en el lado cliente).

Campo numérico

Se pueden crear controles para introducir números con el type number de <input>. Este control se parece a un campo de texto pero solo permite números de punto flotante, y normalmente proporciona botones deslizadores para incrementar o reducir el valor del control. En dispositivos con teclados dinámicos generalmente se muestra el teclado numérico.

Con el tipo de input number  puedes limitar los valores mínimo y máximo permitidos definiendo los atributos min y  max. También puedes utilizar el atributo step para cambiar el incremento y decremento causado por los botones deslizadores. Por defecto, el tipo de input number sólo valida si el número es un entero. Para permitir números decimales, especifica step="any". Si se omite, su valor por defecto es 1, lo que significa que solo son válidos números enteros.

Miremos algunos ejemplos. El primero de los siguientes crea un control numérico cuyo valor está restringido a cualquier valor entre 1 y 10, y sus botones cambian su valor en incrementos o decrementos de 2.

<input type="number" name="edad" min="1" max="10" step="2" value="1" />

El segundo crea un control numérico cuyo valor está restringido a cualquier valor entre el 0 y 1 ambos inclusive, y sus botones cambian su valor en incrementos o decrementos de 0.01:

<input type="number" name="cambio" min="0" max="1" step="0.01" value="0" />

El tipo de input number tiene sentido cuando esté limitado el rango de valores válidos, por ejemplo la edad de una persona o su altura. Si el rango es demasiado grande para que los cambios de incremento tengan sentido (por ejemplo los códigos postales de USA, cuyo rango va de 00001 a 99999), entonces sería una mejor opción utilizar el tipo tel: proporciona el teclado numérico mientras que omite el componente de interfaz de usuario de los deslizadores de número.

Controles deslizantes

Otra forma de introducir un número es usando un slider. Habrás observado bastantes controles parecidos en webs donde por ejemplo se tiene que establecer un precio máximo para realizar una compra y se solicita realizar un filtro por dicho campo. Vamos a observar un ejemplo:

Escoge un precio máximo:

En cuanto al uso, los controles deslizantes son menos precisos que los campos de texto. Por lo tanto, se utilizan para elegir un número cuyo valor exacto no es necesariamente importante.

Un control deslizante o barra de desplazamiento se crea usando el <input> con el valor  range en el atributo type. El deslizador se puede mover con el ratón, también utilizando dispositivos táctiles, o con las flechas del teclado.

Es importante configurar correctamente este campo, y con ese propósito es muy recomendable utilizar los atributos minmaxstep, que establecen los valores mínimo, máximo y de incremento, respectivamente.

Veamos el código fuente correspondiente al ejemplo anterior, para que puedas ver cómo se consigue dicho resultado. En primer lugar, el código HTML básico:

<form>
  <p>Escoge un precio máximo:</p>
  <input type="range" name="barra"
         min="50000" max="500000" step="100" value="250000"
         oninput="numero.value = this.value" />
  <input type="number" name="numero"
         min="50000" max="500000" step="100" value="250000"
         oninput="barra.value = this.value" />
</form>

Este ejemplo crea un control deslizante cuyo valor puede oscilar entre 50000500000, que aumenta / disminuye de 100 en 100. En este caso hemos asignado el valor predeterminado de 250000, usando el atributo value.

Un inconveniente que presentan los controles deslizantes es que no ofrecen ningún tipo de retroalimentación visual sobre cuál es el valor actual. Por eso hemos incluido un elemento <input> para mostrar (o también cambiar) el valor actual. 

Selectores de fecha y hora

La recopilación de valores de fecha y hora ha sido desde siempre una pesadilla para los desarrolladores web. Para una buena experiencia de usuario, es importante proporcionar una interfaz que permita seleccionar directamente una fecha sobre un calendario, sin necesidad de cambiar de contexto a una aplicación de calendario nativa o a otra aplicación que utilice diferentes formatos que sean difíciles de analizar. Por ejemplo, el último minuto del milenio anterior se puede expresar de las siguientes formas diferentes, por ejemplo: 1999/12/31, 23:59 o 12/31/99T11:59PM.

Los controles de fecha HTML están disponibles para manejar este tipo específico de datos, proporcionando widgets de calendario y haciendo que los datos sean uniformes.

Para crear un campo de tipo fecha utilizamos el elemento <input> y un valor apropiado para el atributo type, dependiendo de si deseas recopilar fechas, horas o ambos. Aquí puedes observar un ejemplo (si el navegador no aceptara alguno de estos tipos, utilizaría un elemento alternativo que permita la introducción mediante texto):

<p><label>
  Fecha y hora local: <input type="datetime-local" name="fechayhora" />
</label></p>
<p><label>
  Mes: <input type="month" name="mes">
</label></p>
<p><label>
  Hora: <input type="time" name="hora">
</label></p>
<p><label>
  Semana: <input type="week" name="semana">
</label></p>




Todos los controles de fecha y hora se pueden restringir usando los atributos minmax, con una mayor restricción posible a través del atributo step (cuyo valor varía según el tipo de entrada):

<label>
  ¿Cuándo es tu cumpleaños?
  <input type="date" name="fecha" min="1975-01-01" max="2025-12-31" step="1" />
</label>

Selector de color

Los colores también suelen ser difíciles de manejar. Hay muchas formas de expresarlos: valores RGB (decimal o hexadecimal), valores HSL, palabras clave, etc.

Se puede crear un control de tipo color utilizando el elemento <input> con su atributo type con valor color:

<label>
  Selecciona una color: <input type="color" name="color" />
</label>

Si el navegador admite este tipo de campo, al hacer clic en él se utilizará la funcionalidad de elección de color predeterminada del sistema operativo. Puedes observar el resultado con el siguiente ejemplo:

Campo de búsqueda

Los campos de búsqueda se utilizan para crear cajas de búsqueda en páginas web y aplicaciones. Este tipo de campo se define utilizando el valor  search en su atributo type:

<input type="search" name="buscar" placeholder="Buscar" required="" />

La diferencia principal entre un campo text y un campo search, es el estilo que el navegador aplica a uno u otro. A menudo los campos search se muestran con bordes redondeados; y a veces también se muestra una «Ⓧ», para limpiar el campo de cualquier valor cuando se pulsa sobre él. Además, en dispositivos con teclado dinámico, la tecla enter del teclado suele mostrar un icono de lupa.

Otra característica que vale la pena señalar es que se pueden guardar los valores de un campo search automáticamente y reutilizarse en múltiples páginas del mismo sitio web para ofrecer autocompletado. Esta característica suele ocurrir de forma automática en la mayoría de navegadores modernos.

Ejercicio propuesto: Campos HTML5

Crea una página web para mostrar todos los elementos de esta última sección: correo electrónico, url, número de teléfono, campo numérico, control deslizante, fecha y hora, selector de color y campo de búsqueda. Debes incluir al menos un ejemplo para cada uno de ellos. Debes usar párrafos y etiquetas, y también el atributo «required» y otras restricciones según el campo del que se trate. Comprueba el resultado en tu navegador y no olvides incluir todas las etiquetas HTML básicas y validar el código. Por último, comprueba el resultado también en tu teléfono móvil.

Coloca todas las etiquetas dentro de un contenedor <form> y usa un botón de tipo «submit» para comprobar que los campos se validan correctamente:
<form>
  <p><label>
    Correo principal: <input type="email" name="correo1" required="" />
  </label></p>
  <p><label>
     Otro correo: <input type="email" name="correo2" required="" />
  </label></p>
  <p><label>
     Tu página web: <input type="url" name="web1" required="" />
  </label></p>
  <p><label>
    Página web de tu instituto: <input type="url" name="web2" required="" />
  </label></p>
  ...
  <p><button>Enviar</button></p>
</form>

Atributos comunes

Muchos de los elementos que se utilizan para definir controles de formulario tienen sus atributos específicos propios. Sin embargo, hay un conjunto de atributos que son comunes para todos los elementos de formulario. Ya has conocido algunos, pero a continuación encontrarás una lista de esos atributos comunes para referencias futuras:

Nombre del atributoValor por defectoDescripción
autofocusfalseEste atributo booleano te permite especificar que el elemento ha de tener el foco de entrada automáticamente cuando se carga la página. En un documento, solo un elemento asociado a un formulario puede tener este atributo especificado.
disabledfalseEste atributo booleano indica que el usuario no puede interactuar con el elemento. Si no se especifica este atributo, el elemento hereda su configuración del elemento que lo contiene, por ejemplo, <fieldset>. Si el elemento que lo contiene no tiene el atributo establecido en disabled, el elemento está habilitado.
formEl elemento <form> con el que está asociado el control, que se usa cuando no está anidado dentro de ese formulario. El valor del atributo debe ser el atributo id de un elemento <form> del mismo documento. Esto te permite asociar un formulario con un control de formulario que esté fuera de aquel, incluso si está dentro de un elemento de formulario diferente.
nameEl nombre del campo que se envía con los datos del formulario.
valueEl valor inicial del campo.

Un primer formulario «real»

En esta sección crearemos un formulario web completo y funcional. Diseñaremos un formulario sencillo con los campos adecuados y otros elementos HTML, y explicaremos cómo se envían los datos a un servidor. Ampliaremos cada uno de estos subtemas más adelante.

Diseñar el formulario

Antes de comenzar a escribir código, siempre es mejor tomarse el tiempo necesario para pensar cómo queremos que sea nuestro formulario. Diseñar una maqueta rápida nos ayudará a definir el conjunto de datos adecuado que debemos pedirle al usuario. Desde el punto de vista de la experiencia del usuario (UX), es importante recordar que cuanto más grande es un formulario, más te arriesgas a frustrar a las personas que lo usen. Un formulario tiene que ser simple y conciso, y por ello deberíamos solicitar solo los datos que necesitemos.

Diseñar formularios es un paso importante cuando creamos un sitio web o una aplicación. Va más allá del alcance de este sección exponer esto en detalle, pero si deseas profundizar en ese tema, puedes leer los siguientes artículos

En esta sección vamos a crear un formulario de contacto sencillo. Observemos un posible borrador:

Nuestro formulario va a tener tres campos de texto y un botón. Le pedimos al usuario su nombre, su correo electrónico y el mensaje que desea enviar. Al pulsar el botón sus datos se enviarán a un servidor web.

Implementando nuestro formulario

Vamos a proceder ahora a escribir el código HTML para nuestro formulario. Vamos a utilizar los elementos HTML siguientes: <form>, <label>, <input>, <textarea> y <button>.

El elemento <form>

Todos los formularios comienzan con un elemento <form>, como este:

<form action="contactar.php" method="get">

</form>

Este elemento define formalmente un formulario. Es un elemento contenedor, como un elemento <section> o <footer>, pero específico para contener formularios; también admite algunos atributos específicos para la configuración de la forma en que se comporta el formulario. Todos sus atributos son opcionales, pero es una práctica estándar establecer siempre al menos los atributos action y method:

  • El atributo action define la ubicación (URL) donde se envían los datos que el formulario ha recopilado cuando se validan.
  • El atributo method define con qué método HTTP se envían los datos (generalmente get o post).

Veremos cómo funcionan esos atributos más adelante.

Los elementos <label>, <input> y <textarea>

Nuestro formulario de contacto no es complejo en absoluto: la parte para la entrada de datos contiene tres campos de texto, cada uno con su elemento <label> correspondiente:

En términos de código HTML, para implementar estos controles de formulario necesitamos algo como lo siguiente:

<form action="contactar.php" method="GET">
  <p>
    <label>Nombre: <input type="text" name="nombre" required="" /></label>
  </p>
  <p>
    <label>Correo: <input type="email" name="correo" required="" /></label>
  </p>
  <p>
    <label>Mensaje: <textarea name="mensaje" required=""></textarea></label>
  </p>
</form>

Por motivos de usabilidad y accesibilidad incluimos una etiqueta explícita para cada control de formulario. Hacer esto presenta muchas ventajas porque la etiqueta está asociada al control del formulario y permite que los usuarios con ratón, y dispositivos táctiles hagan clic en la etiqueta para activar el control correspondiente, y también proporciona accesibilidad con un nombre que los lectores de pantalla leen a sus usuarios. Puedes encontrar más detalles sobre las etiquetas de los formularios en Cómo estructurar un formulario web.

En el elemento <input>, el atributo más importante es type, ya que define la forma en que el elemento <input> aparece y se comporta. Puedes encontrar más información sobre esto en el artículo sobre Controles de formularios nativos básicos.

  • En nuestro ejemplo, usamos el valor <input/text> para la primera entrada, el valor predeterminado para este atributo. Representa un campo de texto básico de una sola línea que acepta cualquier tipo de entrada de texto.
  • Para la segunda entrada, usamos el valor <input/email>, que define un campo de texto de una sola línea que solo acepta una dirección de correo electrónico. Esto convierte un campo de texto básico en una especie de campo «inteligente» que efectúa algunas comprobaciones de validación de los datos que el usuario escribe. También hace que aparezca un diseño de teclado más apropiado para introducir direcciones de correo electrónico (por ejemplo, con un símbolo @ por defecto) en dispositivos con teclados dinámicos, como teléfonos inteligentes. Puedes encontrar más información sobre la validación de formularios en el artículo de Validación de formularios por parte del cliente.

El elemento <button>

El marcado de nuestro formulario está casi completo; solo necesitamos añadir un botón para permitir que el usuario envíe sus datos una vez que haya completado el formulario. Esto se hace con el elemento <button>; basta con añadir lo siguiente justo encima de la etiqueta de cierre </form>:

<button type="submit">Enviar mensaje</button>

Como hemos explicado anteriormente, el elemento <button> también acepta el atributo type, que a su vez acepta uno de estos tres valores: submitreset o button:

  • Un clic en un botón submit (el valor predeterminado) envía los datos del formulario a la página web definida por el atributo action del elemento <form>.
  • Un clic en un botón reset restablece de inmediato todos los controles de formulario a su valor predeterminado. Desde el punto de vista de UX, esto se considera una mala práctica, por lo que debes evitar usar este tipo de botones a menos que realmente tengas una buena razón para incluirlos.
  • Un clic en un botón button no hace… ¡nada! Eso suena tonto, pero es muy útil para crear botones personalizados: puedes definir su función con JavaScript.

Enviando datos al servidor web

La última parte, y quizás la más complicada, es manejar los datos del formulario en el lado del servidor. El elemento <form> define dónde y cómo enviar los datos gracias a los atributos action y method.

Proporcionamos un nombre (name) a cada control de formulario. Los nombres son importantes tanto en el lado del cliente como del servidor; le dicen al navegador qué nombre debe dar a cada dato y, en el lado del servidor, permiten que el servidor acceda a cada dato utilizando su nombre. Los datos del formulario se envían al servidor como pares de nombre/valor.

Para poner nombre a los diversos datos que se introducen en un formulario, debes usar el atributo name en cada control de formulario que recopila un dato específico. Veamos de nuevo algunos el código fuente de nuestro formulario:

<form action="contactar.php" method="GET">
  <p>
    <label>Nombre: <input type="text" name="nombre" required="" /></label>
  </p>
  <p>
    <label>Correo: <input type="email" name="correo" required="" /></label>
  </p>
  <p>
    <label>Mensaje: <textarea name="mensaje" required=""></textarea></label>
  </p>
  <p>
    <button type="submit">Enviar mensaje</button>
  </p>
</form>

En nuestro ejemplo, el formulario envía tres datos denominados «nombre», «correo» y «mensaje». Esos datos se envían a la URL «contactar.php» utilizando el método GET de HTTP.

En el lado del servidor, la secuencia de comandos de la URL «contactar.php» recibe los datos como una lista de tres elementos clave/valor contenidos en la solicitud HTTP. La forma en que este script maneja esos datos depende de ti. Cada lenguaje de servidor (PHP, Python, Ruby, Java, C#, etc.) tiene su propio mecanismo de manipulación de datos de formulario. No profundizaremos demasiado en esta sección, pero intentaremos completar nuestro ejercicio para que sea completamente funcional. También puedes consultar el artículo Enviar los datos de un formulario.

Validación de formulario en la parte del cliente

Antes de enviar datos al servidor, es importante asegurarse de que se completan todos los controles de formulario requeridos, y en el formato correcto. Esto se denomina validación de formulario en el lado del cliente y ayuda a garantizar que los datos que se envían coinciden con los requisitos establecidos en los diversos controles de formulario.

La validación en el lado del cliente es una verificación inicial y una característica importante para garantizar una buena experiencia de usuario; mediante la detección de datos no válidos en el lado del cliente, el usuario puede corregirlos de inmediato. Si el servidor lo recibe y, a continuación, lo rechaza; se produce un retraso considerable en la comunicación entre el servidor y el cliente que insta al usuario a corregir sus datos.

Si accedes a cualquier sitio web que incluya un formulario de registro observarás que se muestran comentarios cuando no introduces tus datos en el formato que se espera. Recibirás mensajes como:

  • «Este campo es obligatorio» (No se puede dejar este campo en blanco).
  • «Introduzca su número de teléfono en el formato xxx-xxx-xxx» (Se requiere un formato de datos específico para que se considere válido).
  • «Introduzca una dirección de correo electrónico válida» (los datos que introdujiste no están en el formato correcto).
  • «Su contraseña debe tener entre 8 y 30 caracteres y contener una letra mayúscula, un símbolo y un número». (Se requiere un formato de datos muy específico para tus datos).

Esto se llama validación de formulario. Cuando introduces los datos, el navegador y/o el servidor web verifican que estén en el formato correcto y dentro de las restricciones establecidas por la aplicación. La validación realizada en el navegador se denomina validación en el lado del cliente, mientras que la validación realizada en el servidor se denomina validación en el lado del servidor. En esta sección nos centraremos en la validación en el lado del cliente.

Si la información está en el formato correcto, la aplicación permite que los datos se envíen al servidor y (en general) que se guarden en una base de datos; si la información no está en el formato correcto, da al usuario un mensaje de error que explica lo que debe corregir y le permite volver a intentarlo.

Una de las características más importantes de los controles de formulario de HTML5 es la capacidad de validar la mayoría de los datos de usuario sin depender de JavaScript. Esto se realiza mediante el uso de atributos de validación en los elementos del formulario. Los hemos visto anteriormente, pero recapitulamos aquí:

  • required: Especifica si un campo de formulario debe completarse antes de que se pueda enviar el formulario.
  • minlength y maxlength: Especifican la longitud mínima y máxima de los datos de texto (cadenas).
  • min y max: Especifican los valores mínimo y máximo de los tipos de entrada numéricos.
  • type: Especifica si los datos deben ser un número, una dirección de correo electrónico o algún otro tipo de preajuste específico. 
  • pattern: Especifica una expresión regular que define un patrón que los datos que se introduzcan deben seguir.

Si los datos que se introducen en un campo de formulario siguen todas las reglas que especifican los atributos anteriores, se consideran válidos. Si no, se consideran no válidos.

Cuando un elemento es válido, se cumplen los aspectos siguientes:

  • El elemento coincide con la pseudoclase :valid de CSS, lo que te permite aplicar un estilo específico a los elementos válidos.
  • Si el usuario intenta enviar los datos, el navegador envía el formulario siempre que no haya nada más que lo impida (por ejemplo, JavaScript).

Cuando un elemento no es válido, se cumplen los aspectos siguientes:

  • El elemento coincide con la pseudoclase :invalid de CSS, y a veces con otras pseudoclases de interfaz de usuario (UI) –por ejemplo, :out-of-range– dependiendo del error, que te permite aplicar un estilo específico a elementos no válidos.
  • Si el usuario intenta enviar los datos, el navegador bloquea el formulario y muestra un mensaje de error.
A tener en cuenta…

Queremos que completar formularios web sea lo más fácil posible. Entonces, ¿por qué insistimos en validar nuestros formularios? Hay tres razones principales:

  • Queremos obtener los datos correctos en el formato correcto. Nuestras aplicaciones no funcionarán correctamente si los datos de nuestros usuarios se almacenan en el formato incorrecto, son incorrectos o se omiten por completo.
  • Queremos proteger los datos de nuestros usuarios. Obligar a nuestros usuarios a introducir contraseñas seguras facilita proteger la información de su cuenta.
  • Queremos protegernos a nosotros mismo. Hay muchas formas en que los usuarios maliciosos puedan usar mal los formularios desprotegidos y dañar la aplicación (puedes consultar Seguridad del sitio web).

Por todo ello debemos tener en cuenta que la validación en el lado del cliente no debe considerarse una medida de seguridad exhaustiva. Tus aplicaciones siempre deben realizar comprobaciones de seguridad de los datos enviados por el formulario en el lado del servidorasí como también en el lado del cliente, porque la validación en el lado del cliente es demasiado fácil de evitar, por lo que los usuarios malintencionados pueden enviar fácilmente datos incorrectos a tu servidor (puedes leer Seguridad en los sitios web para conocer más detalles).

Nosotros no entraremos en detalle ahora sobre cómo implementar la validación en el lado del servidor, ya que está fuera del alcance de esta unidad, pero debemos tenerlo en cuenta.

En el lado del servidor: Recuperando los datos

Sea cual sea el método HTTP que elijamos, el servidor recibe una cadena que será analizada con el fin de obtener los datos como una lista de pares clave/valor. La forma de acceder a esta lista depende de la plataforma de desarrollo que utilicemos y de las estructuras específicas que utilicemos.

PHP ofrece algunos objetos globales para acceder a los datos. Suponiendo que hayamos utilizado el método GET, el ejemplo que utilizaremos en las secciones siguientes cogerá los datos y los guardará en un fichero. Por supuesto, lo que se hace con los datos depende de nosotros. Es posible visualizarlos, almacenarlos en una base de datos, enviarlos por correo electrónico, o procesarlos de alguna otra manera.

Por motivos de sencillez y posibilidad de realizar pruebas en muchos entornos, utilizaremos PHP para completar nuestros ejemplos y conseguir que sean funcionales.

El método GET

El método GET es  utilizado por el navegador para pedir al servidor que se envíe de vuelta un recurso dado: «Hey servidor, quiero conseguir este recurso.» En este caso, el navegador envía un cuerpo vacío. Debido a que el cuerpo está vacío, si un formulario se envía utilizando este método, los datos enviados al servidor se anexan a la URL.

Echando un vistazo a nuestro formulario de contacto, y teniendo en cuenta que hemos utilizado el método GET, cuando enviemos el formulario, veremos que los datos aparecen en la URL (en la barra de direcciones del navegador). Por ejemplo, si introducimos «Fernando» como nombre de usuario, «[email protected]» como dirección de correo electrónico y «Hola» como mensaje, y pulsamos el botón «Enviar», deberíamos ver algo como esto en la barra de direcciones: «contactar.php?nombre=Fernando&[email protected]&message=Hola«.

Los datos se añaden a la URL como una serie de pares de nombre / valor. Después que la dirección web URL ha terminado, se incluye un signo de interrogación ( ?) seguido de los pares de nombre / valor, cada uno separado por un signo ( &). En nuestro caso estamos enviando los siguientes datos al servidor:

  • nombre, que tiene el valor «Fernando»
  • correo, que tiene el valor «[email protected]»
  • mensaje, que tiene el valor «Hola»
Ejercicio propuesto: Formulario de contactar

Crea una nueva página web con un formulario de contactar, utilizando el código del ejemplo anterior. Debería obtener algo similar al formulario que tienes a continuación. Comprueba el resultado en tu navegador y valida el código. También intente enviar los datos pulsando el botón y verifica la URL que aparece en la barra de direcciones. Finalmente, ajusta la longitud mínima y máxima de los campos de texto utilizando los valores que consideres adecuados para asegurarte de que los datos del formulario sean correctos antes de enviarlos al servidor.

Ten en cuenta que si pulsas el botón enviar, irás a la página «contactar.php», que aún no está implementada. En este punto obtendrás un error, pero podrás ver toda la información en la URL, ya que estamos usando el método GET.

Ejercicio propuesto: Guardar datos de contacto

Continuemos con nuestro ejemplo PHP para guardar nuestros datos del formulario de contacto. Crea un archivo «contactar.php» con el siguiente código. Sube el formulario y el código PHP a tu servidor y prueba el ejemplo completo del formulario de contacto para verificar que los mensajes se van guardando en el servidor. Diles también a tus compañeros que prueben la página web y verifiquen que los datos que han introducido también están guardados.

<?php
  // La variable global $_GET nos permite acceder a los datos enviados con el método GET
  $nombre = $_GET['nombre'];
  $correo = $_GET['correo'];
  $mensaje = $_GET['mensaje'];

  // Colocamos todos los datos en el archivo "mensajes.csv" en una nueva línea cada vez
  file_put_contents("mensajes.csv", "$nombre,$correo,$mensaje\n", FILE_APPEND);

  // Mostramos un enlace a la página anterior y también al archivo para comprobar el resultado
  echo "<p>Datos guardados</p>";
  echo "<p>Haz click <a href='".$_SERVER['HTTP_REFERER']."'>aquí</a> para ir a la página anterior</p>";
  echo "<p>Haz click <a href='mensajes.csv' target='_blank'>aquí</a> para ver todos los mensajes</p>";
?>
Ejercicio propuesto: Formulario para saludar

Crea una nueva página web con un formulario similar al siguiente, comprobando el resultado en el navegador y validando el código. Pulsa el botón enviar y eche un vistazo a la barra de direcciones del navegador. Después de eso, introduce otros datos diferentes a los valores predeterminados, presione el botón Enviar de nuevo y verifique que la nueva URL contenga la información correcta. Finalmente, cambia el valor predeterminado de ambos campos de texto («Hola» y «Mamá») para usar otros valores y comprueba el resultado nuevamente.

Ten en cuenta que si presionas el botón enviar, irá a la página «saludos.php», que aún no está implementada. En este punto obtendrás un error, pero verás toda la información en la URL, ya que estamos usando el método GET.
<form action="saludos.php" method="GET">
  <p>
    <label>
      ¿Qué quieres decir para saludar?: <input name="saludo" value="Hola" required="" />
    </label>
  </p>
  <p>
    <label>
      ¿A quién se lo quieres decir?: <textarea name="persona" required="">Mamá</textarea>
    </label>
  </p>
  <p>
    <button>Enviar el saludo</button>
  </p>
</form>
Ejercicio propuesto: Guardar texto genérico

Continuemos con nuestro código PHP para guardar nuestros datos del formulario para saludar. Crea un archivo «saludar.php» con el código que aparece a continuación. Graba el formulario y el código PHP en el servidor y graba el ejemplo completo del formulario para comprobar que ahora los saludos ahora se guardan en el servidor. También diles a tus compañeros que prueben la página web y verifiquen que los datos que han introducido también estén guardados.

Observarás las similitudes respecto al ejemplo anterior. Solo hemos cambiado las variables ($saludo y $persona) y el nombre del archivo donde se guardan los datos («saludos.csv»).
<?php
  // La variable global $_GET nos permite acceder a los datos enviados con el método GET
  $saludo = $_GET['saludo'];
  $persona = $_GET['persona'];

  // Colocamos todos los datos en el archivo "saludos.csv" en una nueva línea cada vez
  file_put_contents("saludos.csv", "$saludo,$persona\n", FILE_APPEND);

  // Mostramos un enlace a la página anterior y también al archivo para comprobar el resultado
  echo "<p>Datos guardados</p>";
  echo "<p>Haz clic <a href='".$_SERVER['HTTP_REFERER']."'>aquí</a> para volver a la página anterior</p>";
  echo "<p>Haz clic <a href='saludos.csv' target='_blank'>aquí</a> para ver todos los saludos</p>";
?>

El método POST

El método POST es un poco diferente. Es el método que el navegador utiliza para comunicarse con el servidor cuando se pide una respuesta que tenga en cuenta los datos proporcionados en el cuerpo de la petición HTTP: «Hey servidor, echa un vistazo a estos datos y envíame de vuelta un resultado apropiado.» Si un formulario se envía utilizando este método, los datos se anexan al cuerpo de la petición HTTP. Es más seguro que el método GET, ya que cuando el formulario se envía mediante el método POST, ninguna otra persona que se encuentre cerca puede ver los datos. Este método se recomienda, por ejemplo, para ser utilizado en formularios donde se envía una contraseña.

Veamos el siguiente ejemplo, que es bastante similar al formulario en la sección GET anterior, pero con el atributo de método establecido en POST y el tipo de campo establecido en «password»:

<form action="login.php" method="POST">
  <p>
    <label>Usuario: <input type="text" name="usuario" required="" /></label>
  </p>
  <p>
    <label>Contraseña: <input type="password" name="contrasena" required="" /></label>
  </p>
  <p>
    <button>Comprobar usuario y contraseña</button>
  </p>
</form>
Ejercicio propuesto: Formulario de login

Crea una nueva página web con un formulario de inicio de sesión, utilizando el código del ejemplo anterior. Deberías obtener un resultado similar al que se muestra a continuación. Comprueba el resultado en tu navegador y valida el código. A continuación intenta enviar los datos pulsando el botón y observa si hay alguna información en la URL. Finalmente, establece la longitud mínima del campo de texto del usuario en 5 y la máxima en 10, y haz lo mismo para el campo de contraseña.

Ten en cuenta que si pulsas el botón enviar, irás a la página «login.php», que aún no está implementada. En este punto obtendrás un error, pero no verás ninguna información en la URL, ya que estamos usando el método POST.

Ejercicio propuesto: Comprobar datos privados

Continuemos con nuestro código PHP para comprobar el usuario y la contraseña del formulario de inicio de sesión. Crea un archivo «login.php» con el siguiente código. Sube el formulario y el código PHP a tu servidor y prueba tu ejemplo completo del formulario de inicio de sesión para comprobar el usuario («admin») y la contraseña («1234»). También dile a tus compañeros que prueben tu página web. Después de eso, cambia la contraseña del archivo «login.php» y pide a tus compañeros que intenten adivinar la nueva contraseña. Debes usar una contraseña muy simple de entre las que aparecen en «https://en.wikipedia.org/wiki/List_of_the_most_common_passwords» (de lo contrario, es posible que tus compañeros no puedan adivinarla).

Observarás las similitudes respecto al ejemplo anterior. Solo hemos cambiado las variables ($usuario y $contrasena) y hemos utilizado una condición para mostrar una imagen con el pulgar hacia arriba o hacia abajo, dependiendo de si la contraseña es correcta o no.
<?php
  // La variable global $_POST nos permite acceder a los datos enviados con el método POST
  $usuario = $_POST['usuario'];
  $contrasena = $_POST['contrasena'];

  // Comprueba el usuario y la contraseña
  if ($usuario == "admin" && $contrasena == "1234") {
      echo "<img src='https://raw.githubusercontent.com/twbs/icons/main/icons/hand-thumbs-up.svg' width='100' />";
      echo "<p>¡Perfecto! :-)</p><p>Haz clic <a href='".$_SERVER['HTTP_REFERER']."'>aquí</a> para ir a la página anterior</p>";
  }
  else {
      echo "<img src='https://raw.githubusercontent.com/twbs/icons/main/icons/hand-thumbs-down.svg' width='100' />";
      echo "<p>¡Usuario o contraseña incorrectos! :-(</p><p>Haz clic <a href='".$_SERVER['HTTP_REFERER']."'>aquí</a> para probar de nuevo</p>";
  }
?>

Test

Comprueba tus conocimientos con este test sobre formularios y otros conceptos relacionados con esta unidad.