<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Línea de Código</title>
	<atom:link href="https://lineadecodigo.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://lineadecodigo.com</link>
	<description>Aprender a Programar</description>
	<lastBuildDate>Wed, 23 Apr 2025 14:42:10 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://lineadecodigo.com/wp-content/uploads/2016/07/cropped-Logo2-768x768-32x32.jpg</url>
	<title>Línea de Código</title>
	<link>https://lineadecodigo.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Vídeo en bucle</title>
		<link>https://lineadecodigo.com/html5/video-en-bucle/</link>
					<comments>https://lineadecodigo.com/html5/video-en-bucle/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Wed, 23 Apr 2025 19:00:00 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Video]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17980</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>Un vídeo en bucle es aquel que, cuando llega al final del vídeo, vuelve al principio y se continúa reproduciendo de forma infinita, o hasta que el usuario lo pare o se salga de la página web. Vamos a utilizar código HTML5 para poder incrustar un vídeo dentro de nuestra página web y que este [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/video-en-bucle/">Vídeo en bucle</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>Un vídeo en bucle es aquel que, cuando llega al final del vídeo, vuelve al principio y se continúa reproduciendo de forma infinita, o hasta que el usuario lo pare o se salga de la página web.</p>



<p>Vamos a utilizar <a href="https://lineadecodigo.com/categoria/html5/">código HTML5</a> para poder incrustar un vídeo dentro de nuestra página web y que este vídeo en bucle se reproduzca de forma infinita.</p>



<h3 class="wp-block-heading">Incluir un vídeo HTML5.</h3>



<p>Lo primero que tenemos que hacer es insertar un vídeo <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>, para ello vamos a utilizar el elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>video</code></a> que nos permite insertar los vídeos dentro de las páginas web.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;video>
  &lt;!-- Aquí va un vídeo -->
&lt;/video>
</pre>



<p>Para indicar dónde se encuentra el vídeo y el formato que tiene, podríamos utilizar, junto con el elemento video, el elemento source. Además, el elemento source, nos permite indicar diferentes formatos de vídeos para conseguir que <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">el navegador web</a> reproduzca uno u otro.</p>



<p>Pero, en este caso, vamos a utilizar una forma más sencilla y nos apoyaremos en el atributo <a href="https://www.w3api.com/HTML/video/src/" target="_blank" rel="noopener"><code>src</code></a> para indicar la <a href="https://www.ayudaenlaweb.com/internet-basico/que-es-la-url/" target="_blank" rel="noopener">URL</a> que contenga el vídeo.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;video src="url-con-el-video">
  &lt;!-- Aquí va un vídeo -->
&lt;/video>
</pre>



<h3 class="wp-block-heading">Atributo loop para bucles.</h3>



<p>La parte más importante de este ejemplo para poder poner un vídeo en bucle es el manejo del atributo <a href="https://www.w3api.com/HTML/video/loop/" target="_blank" rel="noopener"><code>loop</code></a>, ya que el manejo de este atributo es el que nos va a proporcionar la capacidad de poder ver el vídeo en bucle.</p>



<p>El atributo <a href="https://www.w3api.com/HTML/video/loop/" target="_blank" rel="noopener"><code>loop</code></a> es un atributo booleano, del elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>video</code></a>, dentro de <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> por lo que si el atributo no está presente se le asignaría un valor de <code>false</code> y si está presente sería un valor de <code>true</code>.</p>



<p>Por lo que si queremos reproducir un vídeo en bucle simplemente tendremos que añadir el atributo <a href="https://www.w3api.com/HTML/video/loop/" target="_blank" rel="noopener"><code>loop</code></a> en el elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>video</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;video src="url-con-el-video" loop>
  &lt;!-- Aquí va un vídeo -->
&lt;/video>
</pre>



<h3 class="wp-block-heading">Código HTML5 para poner un vídeo en bucle.</h3>



<p>Así que simplemente tendremos que poner la <a href="https://www.ayudaenlaweb.com/internet-basico/que-es-la-url/" target="_blank" rel="noopener">URL</a> de un vídeo, en este caso en formato mp4. El código en HTML para poder poner un vídeo en bucle sería el siguiente:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;video id="video" src="tecla.mp4" controls loop>
  &lt;!-- El atributo loop hace que el vídeo se repita en bucle -->  
  Tu navegador no soporta el elemento &lt;code>video&lt;/code>.  
&lt;/video> 
</pre>



<p>En este caso hemos añadido un atributo adicional que es <a href="https://www.w3api.com/HTML/video/controls/" target="_blank" rel="noopener"><code>controls</code></a> para poder ver los controles del vídeo.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/video-en-bucle/">Vídeo en bucle</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/video-en-bucle/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Descargar una imagen de un mapa de imágenes</title>
		<link>https://lineadecodigo.com/html5/descargar-una-imagen-de-un-mapa-de-imagenes/</link>
					<comments>https://lineadecodigo.com/html5/descargar-una-imagen-de-un-mapa-de-imagenes/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Tue, 25 Feb 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Imagen]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17955</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>El uso del elemento area nos sirve para optimizar la carga y la visualización de imágenes, mostrando varias imágenes en una y generando áreas enlazables. En este artículo vamos a ver cómo podemos descargar una imagen de un mapa de imágenes utilizando código HTML5. Es decir, que cuando se pinche sobre un área enlazable, se [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/descargar-una-imagen-de-un-mapa-de-imagenes/">Descargar una imagen de un mapa de imágenes</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>El uso del elemento <a href="https://w3api.com/HTML/area/" target="_blank" rel="noopener"><code>area</code></a> nos sirve para optimizar la carga y la visualización de imágenes, mostrando varias imágenes en una y generando áreas enlazables. En este artículo vamos a ver cómo podemos descargar una imagen de un mapa de imágenes utilizando código HTML5. Es decir, que cuando se pinche sobre un área enlazable, se descargue la imagen asociada a dicho área.</p>



<h3 class="wp-block-heading">Caso de uso para descargar una imagen de un mapa de imágenes.</h3>



<p>El poder descargar una imagen de un mapa de imágenes utilizando <a href="https://lineadecodigo.com/categoria/html5/">código HTML5</a> nos va a servir para crear galerías de imágenes que estén muy optimizadas, ya que descargamos una única imagen con todas las imágenes. Esto nos será útil para entornos en los que la descarga de elementos sea un hándicap, como puede ser el caso de uso de dispositivos móviles.</p>



<p>Pero ahora lo que haremos será el poder descargar de forma individual cada una de esas imágenes una vez que el usuario pulse sobre una imagen en cuestión. Siendo este momento el único en el que realmente se descarga la imagen en concreto.</p>



<p>De forma visual vamos a recurrir a un mapa de imágenes con los logos de los <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegadores web</a>. Esto representará la galería de imágenes:</p>



<figure class="wp-block-image size-full"><a href="https://lineadecodigo.com/wp-content/uploads/2025/02/area-con.navegadores.webp"><img decoding="async" width="821" height="152" src="https://lineadecodigo.com/wp-content/uploads/2025/02/area-con.navegadores.webp" alt="Imagen de ejemplo de una galería para descargar una imagen de un mapa de imágenes" class="wp-image-17958 img-fluid" srcset="https://lineadecodigo.com/wp-content/uploads/2025/02/area-con.navegadores.webp 821w, https://lineadecodigo.com/wp-content/uploads/2025/02/area-con.navegadores-300x56.webp 300w, https://lineadecodigo.com/wp-content/uploads/2025/02/area-con.navegadores-768x142.webp 768w" sizes="(max-width: 821px) 100vw, 821px" /></a></figure>



<p>El funcionamiento será que cuando pulsemos sobre un logo en concreto, se descargará dicha imagen.</p>



<h3 class="wp-block-heading">Creando el mapa con la imagen.</h3>



<p>Lo primero que haremos para poder descargar una imagen de un mapa de imágenes utilizando <a href="https://lineadecodigo.com/categoria/html5/">código HTML5</a> será crear un mapa con la imagen en el cual insertemos las partes enlazables. Para ello, lo primero será insertar una imagen con el fichero que contenga todas las imágenes mediante un elemento <a href="https://www.w3api.com/HTML/img/" target="_blank" rel="noopener">img</a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;img src="navegadores.png" alt="Navegadores" usemap="#navegadores" width="821" height="152"  /></pre>



<p>Ademas, mediante la propiedad usemap vamos a decirle cual es el id que contiene el mapa de imágenes representado mediante un elemento <a href="https://www.w3api.com/HTML/map/" target="_blank" rel="noopener"><code>map</code></a>. Vemos que en este caso el mapa se llama “navegadores”. Así que pasamos a definir el mapa con el elemento <a href="https://www.w3api.com/HTML/map/" target="_blank" rel="noopener"><code>map</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;map id="navegadores" name="navegadores">
&lt;/map> </pre>



<p>El elemento <a href="https://www.w3api.com/HTML/map/" target="_blank" rel="noopener"><code>map</code></a> es muy sencillo y lo que tiene es que tienes que indicar mediante el atributo <a href="https://www.w3api.com/HTML/id/" target="_blank" rel="noopener"><code>id</code></a> cual es el nombre que le damos y que sirve para asociarlo a la imagen anteriormente definida.</p>



<h3 class="wp-block-heading">Definiendo áreas enlazables</h3>



<p>Siguiendo con el ejemplo de descargar una imagen de un mapa de imágenes utilizando <a href="https://lineadecodigo.com/categoria/html5/">código HTML5</a> nos tocará definir cuales son las diferentes áreas o partes que nos podemos encontrar en la imagen y que representarán los elementos enlazables. Estas áreas se definen mediante el elemento <a href="https://w3api.com/HTML/area/" target="_blank" rel="noopener"><code>area</code></a>.</p>



<p>Para ello tenemos que controlar el atributo <a href="https://w3api.com/HTML/area/shape/" target="_blank" rel="noopener"><code>shape</code></a> que indica la forma que tiene el área, ya sea un rectángulo, un círculo o un polígono y el atributo <a href="https://w3api.com/HTML/area/coords/" target="_blank" rel="noopener"><code>coords</code></a> que contiene las coordenadas que forman los vértices del área que hayamos definido.</p>



<p>De esta manera si queremos trabajar con áreas que sean rectángulos para marcar las diferentes posiciones de nuestro mapa con logos de navegadores, hará que definamos el siguiente <a href="https://lineadecodigo.con/categoria/html/" target="_blank" rel="noopener">código en HTML</a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;map id="navegadores" name="navegadores">
  &lt;area shape="rect" coords="0,0,157,147" alt="Internet Explorer">
  &lt;area shape="rect" coords="164,0,321,147" alt="Firefox">
  &lt;area shape="rect" coords="340,0,497,147" alt="Google Chrome">
  &lt;area shape="rect" coords="507,0,664,147" alt="Safari">
  &lt;area shape="rect" coords="659,0,816,147" alt="Opera">
&lt;/map> </pre>



<p>Ya tendremos nuestras áreas definidas dentro del mapa asociado a la imagen.</p>



<h3 class="wp-block-heading">Código para poder descargar una imagen de un mapa de imágenes</h3>



<p>El siguiente paso es el más interesante para nuestro ejemplo, ya que es cuando vamos a añadir el código necesario para poder realizar la descarga de la imagen cuando pulsen sobre el logo. Para ello vamos a añadir dos atributos nuevos, por un lado <a href="https://w3api.com/HTML/area/href/" target="_blank" rel="noopener"><code>href</code></a> que nos servirá para enlazar con el fichero que contenga la imagen en concreto y otro que será <a href="https://w3api.com/HTML/area/download/" target="_blank" rel="noopener"><code>download</code></a>. El atributo <a href="https://w3api.com/HTML/area/download/" target="_blank" rel="noopener"><code>download</code></a> nos sirve para indicar que cuando se pulse sobre un enlace lo que se le indique al navegador es que tiene que empezar una descarga del fichero en vez de mostrarlo en pantalla. Dicho atributo puede funcionar solo o asociándolo el nombre que queremos que tenga el fichero que nos vamos a descargar.</p>



<p>Por consiguiente el código que nos queda para los áreas será el siguiente:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;map id="navegadores" name="navegadores">
  &lt;area shape="rect" coords="0,0,157,147" href="explorer.png" alt="Internet Explorer" download="internet-explorer.png">
  &lt;area shape="rect" coords="164,0,321,147" href="firefox.png" alt="Firefox" download="firefox.png">
  &lt;area shape="rect" coords="340,0,497,147" href="google-chrome.png" alt="Google Chrome" download="google-chrome.png">
  &lt;area shape="rect" coords="507,0,664,147" href="safari.png" alt="Safari" download="safari.png">                
  &lt;area shape="rect" coords="659,0,816,147" href="opera.png" alt="Opera" download="opera.png">
&lt;/map> </pre>



<p>Hay que tener mucho cuidado ya que si este código lo pones en una página web que cargues dentro de tu <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> en local no va a funcionar. Y esto es importante ya que el atributo <a href="https://w3api.com/HTML/area/download/" target="_blank" rel="noopener"><code>download</code></a> solo nos va a funcionar si lo utilizas en una página web que esté disponble a través de un servidor web.</p>



<p>De esta manera ya habremos terminado de desarrollar nuestro código para descargar una imagen de un mapa de imágenes utilizando <a href="https://lineadecodigo.com/categoria/html5/">código HTML5</a>, lo que te permitirá realizar diseños mucho más eficientes para la descarga en móviles o entornos de poco caudal de datos.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/descargar-una-imagen-de-un-mapa-de-imagenes/">Descargar una imagen de un mapa de imágenes</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/descargar-una-imagen-de-un-mapa-de-imagenes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HTML5 Doctype</title>
		<link>https://lineadecodigo.com/html5/html5-doctype/</link>
					<comments>https://lineadecodigo.com/html5/html5-doctype/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Sat, 22 Feb 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Básicos]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17946</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>Una de las preguntas que me hace la gente cuando realiza desarrollo web es relativa al HTML5 doctype y los doctypes existentes. Preguntas, por ejemplo, sobre ¿cuál es el doctype en HTML5? ¿Para qué sirve el doctype? ¿qué usos se hace el navegador web sobre el doctype? ¿Para qué sirve el doctype? Lo primero, antes [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/html5-doctype/">HTML5 Doctype</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>Una de las preguntas que me hace la gente cuando realiza desarrollo web es relativa al HTML5 doctype y los doctypes existentes. Preguntas, por ejemplo, sobre ¿cuál es el doctype en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>? ¿Para qué sirve el doctype? ¿qué usos se hace el <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> sobre el doctype?</p>



<h3 class="wp-block-heading">¿Para qué sirve el doctype?</h3>



<p>Lo primero, antes de entrar en el detalle del <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> doctype es saber para qué sirve el doctype dentro de un <a href="https://manualweb.net/html5/documento-html5/" target="_blank" rel="noopener">documento HTML</a>.</p>



<p>El doctype es una declaración que <strong>se coloca al inicio de un documento <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML</a></strong> y tiene como función principal <strong>indicar al <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> qué versión de <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML</a> se está utilizando</strong>. Esto permite que el <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> sepa cómo debe interpretar y renderizar el <a href="https://lineadecodigo.com/categoria/html/">código HTML</a> que contiene el documento.</p>



<h3 class="wp-block-heading">“Modo quirks” en los navegadores</h3>



<p>Sin esta declaración, los <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> podrían entrar en <strong>«modo quirks»</strong> o <strong>modo de compatibilidad</strong>, lo que podría causar <strong>inconsistencias en la visualización de la página web</strong>.</p>



<p>El «modo quirks» (también conocido como «modo de compatibilidad») es un modo de renderizado especial que utilizan los <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> para mantener la compatibilidad con páginas web antiguas. Cuando un <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> entra en “modo quirks”, emula el comportamiento de <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegadores web</a> antiguos, específicamente aquellos anteriores al año 2000 entre los que nos encontrábamos el mítico <a href="https://www.ayudaenlaweb.com/navegadores/que-es-internet-explorer/" target="_blank" rel="noopener">Internet Explorer 5</a>.</p>



<p>Este “modo quirks” afecta principalmente a:</p>



<ul class="wp-block-list">
<li>El modelo de caja <a href="https://www.manualweb.net/css/" target="_blank" rel="noopener">CSS</a> (box model)</li>



<li>El manejo de dimensiones en elementos en línea</li>



<li>La interpretación de ciertas <a href="https://w3api.com/CSS/tag/propiedad-css/" target="_blank" rel="noopener">propiedades CSS</a></li>



<li>El procesamiento de algunos <a href="https://w3api.com/HTML/tag/elemento-html/" target="_blank" rel="noopener">elementos HTML</a></li>
</ul>



<p>Por esta razón, <strong>es crucial incluir siempre el doctype correcto</strong> al inicio de nuestros <a href="https://manualweb.net/html5/documento-html5/" target="_blank" rel="noopener">documentos HTML</a> para asegurar que el <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> opere en «modo estándar» y renderice la página de manera consistente según las <a href="https://manualweb.net/html/historia-html-estandar/" target="_blank" rel="noopener">especificaciones actuales de HTML</a> y <a href="https://www.manualweb.net/css/" target="_blank" rel="noopener">CSS</a>.</p>



<h3 class="wp-block-heading">De dónde venimos en la definición de doctypes</h3>



<p>Antes de entrar a revisar cual es la definición formal del <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> vamos echar la vista atrás y ver de dónde venimos en la definición de doctypes. Hasta la versión de HTML5 teníamos diferentes doctypes para <a href="https://manualweb.net/html/tipos-documentos-html/" target="_blank" rel="noopener">definir los tipos de documentos en HTML</a>. Así nos podíamos encontrar:</p>



<ul class="wp-block-list">
<li><strong>HTML 4.01 transitorio</strong>, que permitía el uso de elementos y atributos obsoletos para mantener la compatibilidad con versiones anteriores</li>



<li><strong>HTML 4.01 frameset</strong>, diseñado específicamente para documentos que utilizaban marcos (frames) para dividir la ventana del navegador en múltiples secciones</li>



<li><strong>HTML Estricto</strong>, que exigía el cumplimiento riguroso de las <a href="https://manualweb.net/html/historia-html-estandar/" target="_blank" rel="noopener">especificaciones HTML 4.01</a> y eliminaba todos los elementos y atributos obsoletos</li>
</ul>



<p>Así nos podíamos encontrar las siguientes definiciones en los documentos. Para los estrictos:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN" "&lt;http://www.w3.org/TR/html4/strict.dtd>"></pre>



<p>Para los transitorios:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "&lt;http://www.w3.org/TR/html4/loose.dtd>"></pre>



<p>Y para aquellos que tienen frames:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN""&lt;http://www.w3.org/TR/html4/frameset.dtd>"></pre>



<h3 class="wp-block-heading">HTML5 Doctype</h3>



<p>Pero al final <a href="https://manualweb.net/html/historia-html-estandar/#html5" target="_blank" rel="noopener">llegó la especificación actual que es HTML5</a> simplificando la especificación del <a href="https://manualweb.net/html5/documento-html5/" target="_blank" rel="noopener">documento HTML</a> dejando una sencilla definición en su cabecera en la que simplemente ponemos el elemento <code>doctype</code> con una exclamación delante, seguido de la palabra html. Todo ello dentro de los típicos símbolos menor y mayor de HTML que nos sirven para definir elementos.</p>



<p>Por lo tanto, el inicio de nuestros documentos web tendrán el html5 doctype definido de la siguiente manera:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;!doctype html></pre>



<p>Si nos fijamos en las anteriores definiciones se especificaba el <strong>DTD (Document Type Definition)</strong>, que es un archivo que define la estructura y las reglas del <a href="https://manualweb.net/html5/documento-html5/" target="_blank" rel="noopener">documento HTML</a>. Si bien, <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> ya se ha eliminado esa referencia.</p>



<h3 class="wp-block-heading">Futuro del Doctype en HTML</h3>



<p>Ya que sabemos todo lo relativo al <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> doctype vamos a hablar un poco sobre su futuro. El doctype <strong>es un elemento que seguirá siendo fundamental en las futuras versiones de HTML</strong>. Si bien su sintaxis se ha simplificado ya tanto que no tiene pinta que vaya a cambiar en el futuro. Si bien seguirá siendo fundamental para poder indicar al <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a> que lo que se encuentra para poder renderizarlo es un documento <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML</a>. Los grupos de trabajo de <a href="https://www.w3.org" target="_blank" rel="noopener">W3C</a> y <a href="https://whatwg.org/" target="_blank" rel="noopener">WHATWG</a> mantienen el compromiso de conservar esta declaración como parte esencial del <a href="https://manualweb.net/html/historia-html-estandar/" target="_blank" rel="noopener">estándar HTML</a>.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/html5-doctype/">HTML5 Doctype</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/html5-doctype/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cortes en la descarga de vídeos HTML5</title>
		<link>https://lineadecodigo.com/html5/cortes-en-la-descarga-de-videos-html5/</link>
					<comments>https://lineadecodigo.com/html5/cortes-en-la-descarga-de-videos-html5/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Thu, 20 Feb 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Video]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17939</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>Otro ejemplo para tener un control mayor sobre la descarga y visualización de los videos. En este caso vamos a ver cómo podemos controlar cortes en la descarga de vídeos HTML5. La idea es poder realizar una gestión con los usuarios de nuestras páginas web en el caso de que se corte la descarga del [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/cortes-en-la-descarga-de-videos-html5/">Cortes en la descarga de vídeos HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>Otro ejemplo para tener un control mayor sobre la descarga y visualización de los videos. En este caso vamos a ver cómo podemos controlar cortes en la descarga de vídeos <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML5</a>.</p>



<p>La idea es poder realizar una gestión con los usuarios de nuestras páginas web en el caso de que se corte la descarga del vídeo hacia la página.</p>



<h3 class="wp-block-heading">¿Por qué se puede suspender la descarga de un vídeo?</h3>



<p>Antes de entrar a ver el detalle de cómo podemos codificar la implementación de establecer el control de cortes en la descarga de vídeos <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML5</a> vamos a ver lo motivos por los cuales nos lleve a tener que realizar dicha implementación cuando estemos desarrollando nuestras páginas web mediante <a href="https://lineadecodigo.com/categoria/html5/">código HTML5</a>.</p>



<p>La descarga de un vídeo se puede suspender por diferentes motivos. Es importante entender estas causas para poder diagnosticar y resolver los problemas de reproducción. Los motivos más comunes que pueden interrumpir la descarga de contenido multimedia son:</p>



<ul class="wp-block-list">
<li><strong>Una conexión lenta o inestable a Internet</strong>, que puede ser causada por problemas en la infraestructura de red o por la distancia al servidor.</li>



<li><strong>Problemas en el servidor que aloja el vídeo</strong>, incluyendo sobrecarga del servidor, mantenimiento programado o fallos técnicos inesperados.</li>



<li><strong>Saturación del ancho de banda del usuario</strong>, especialmente común cuando múltiples dispositivos comparten la misma conexión o durante horas pico de uso.</li>



<li>Puede ocurrir <strong>cuando el navegador decide pausar la descarga para optimizar recursos</strong> o cuando hay interferencias en la red. Esto incluye situaciones donde el navegador prioriza otras tareas o cuando detecta problemas de rendimiento en el sistema.</li>
</ul>



<figure class="wp-block-image size-large"><a href="https://lineadecodigo.com/wp-content/uploads/2025/02/video-onsuspend.webp"><img decoding="async" width="1024" height="773" src="https://lineadecodigo.com/wp-content/uploads/2025/02/video-onsuspend-1024x773.webp" alt="Motivos que nos llevan a tener que controloar los cortes en la descarga de vídeos HTML5" class="wp-image-17943 img-fluid" srcset="https://lineadecodigo.com/wp-content/uploads/2025/02/video-onsuspend-1024x773.webp 1024w, https://lineadecodigo.com/wp-content/uploads/2025/02/video-onsuspend-300x226.webp 300w, https://lineadecodigo.com/wp-content/uploads/2025/02/video-onsuspend-768x580.webp 768w, https://lineadecodigo.com/wp-content/uploads/2025/02/video-onsuspend.webp 1468w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">Insertando el vídeo en una página HTML5</h3>



<p>Manos a la obra, a estas alturas ya sabes cómo <a href="https://lineadecodigo.com/html5/cargar-un-video-en-html5/">insertar un vídeo HTML5</a> en tu página. Pero, por recordar como hacerlo, dejamos el código mediante el elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>video</code></a> para indicar que hay un vídeo y el elemento <a href="https://w3api.com/HTML/source/" target="_blank" rel="noopener"><code>source</code></a> para cargar el origen del vídeo e indicar su formato.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;video id="video" width="320" height="240" controls>
  &lt;source src="tecla.mp4" type="video/mp4">
	Tu navegador no soporta elementos de vídeo
&lt;/video></pre>



<p>Además, vamos a añadir un capa para poder volcar mensajes al usuario. Esto lo realizamos mediante el elemento <a href="https://w3api.com/HTML/div/" target="_blank" rel="noopener"><code>div</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;p id="error-message" style="color: red;">&lt;/p></pre>



<h3 class="wp-block-heading">Gestionando el evento suspend para controlar cortes en la descarga de vídeos HTML5</h3>



<p>Ahora pasamos al meollo de la cuestión que es la parte de controlar cortes en la descarga de vídeos <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML5</a>. Para ello nos vamos a apoyar en el evento <a href="https://www.w3api.com/HTML/onsuspend/" target="_blank" rel="noopener"><code>onsuspend</code></a>. El evento <a href="https://www.w3api.com/HTML/onsuspend/" target="_blank" rel="noopener"><code>onsuspend</code></a> se lanza cuando la carga de un vídeo o de un audio se ha suspendido por alguno de los motivos que veíamos al prinicipio del artículo: conexión, saturación, el navaegador,… incluso el propio usuario, al parar el vídeo puede forzar a que el navegador suspenda la descarga del vídeo.</p>



<p>Así que lo que haremos será coger una referencia al vídeo y suscribirnos a su evento <a href="https://www.w3api.com/HTML/onsuspend/" target="_blank" rel="noopener"><code>onsuspend</code></a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">const video = document.getElementById('video');

video.addEventListener('suspend', (event) => { });</pre>



<p>Para suscribirnos al evento <a href="https://www.w3api.com/HTML/onsuspend/" target="_blank" rel="noopener"><code>onsuspend</code></a> hemos utilizado la función <a href="https://www.w3api.com/DOM/EventTarget/addEventListener/" target="_blank" rel="noopener"><code>addEventListener()</code></a> del DOM y le hemos asignado una <a href="https://manualweb.net/javascript/funciones-javascript/#funciones-an%C3%B3nimas" target="_blank" rel="noopener">función anónima de Javascript</a> para poder gestionar este evento.</p>



<p>Lo que vamos a hacer en la gestión del evento, en este caso, será mostrar un mensaje de texto al usuario en la capa que habíamos creado a tal respecto.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">const video = document.getElementById('video');
const errorMessage = document.getElementById('error-message');

video.addEventListener('suspend', (event) => {
    errorMessage.innerHTML = 'La carga del vídeo se ha suspendido. Por favor, inténtelo de nuevo más tarde.';
});</pre>



<p>De esta manera ya tendremos el código que nos permite controlar cortes en la descarga de vídeos <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML5</a>. ¿Se te ocurre en qué situaciones te puedes ver avocado a realizar un control de los cortes en la descarga de vídeos utilizando el evento <a href="https://www.w3api.com/HTML/onsuspend/" target="_blank" rel="noopener">onsuspend</a>? Nos encantaría conocer tus opiniones, así que no dudes en dejárnoslas en los comentarios.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/cortes-en-la-descarga-de-videos-html5/">Cortes en la descarga de vídeos HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/cortes-en-la-descarga-de-videos-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Zoom en imágenes con el ratón en HTML5</title>
		<link>https://lineadecodigo.com/html5/zoom-en-imagenes-con-el-raton-en-html5/</link>
					<comments>https://lineadecodigo.com/html5/zoom-en-imagenes-con-el-raton-en-html5/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Wed, 19 Feb 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[CSS Imágenes]]></category>
		<category><![CDATA[HTML Eventos]]></category>
		<category><![CDATA[HTML5 Imagen]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17933</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>Uno de los elementos que más aparecen en las páginas web son las imágenes. Bien sean decorativas o bien representativas. En el caso de hoy vamos a ver cómo podemos implementar el control de zoom en imágenes con el ratón en HTML5. La idea es que el usuario, cuando se posicione sobre una imagen pueda [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/zoom-en-imagenes-con-el-raton-en-html5/">Zoom en imágenes con el ratón en HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>Uno de los elementos que más aparecen en las páginas web son las imágenes. Bien sean decorativas o bien representativas. En el caso de hoy vamos a ver cómo podemos implementar el control de zoom en imágenes con el ratón en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. La idea es que el usuario, cuando se posicione sobre una imagen pueda hacer zoom bien mediante la rueda del ratón o bien utilizando movimientos gestuales sobre un trackpad o una ventana visual.</p>



<p>Esto nos servirá mucho si tenemos algunos casos de uso como:</p>



<ul class="wp-block-list">
<li><strong>Detalles de productos en aplicaciones de e-commerce,</strong> donde los usuarios necesitan examinar minuciosamente las características y acabados de los artículos antes de realizar una compra.</li>



<li><strong>Galerías de fotografías profesionales o artísticas,</strong> donde es importante apreciar los detalles finos y la composición de cada imagen con precisión.</li>



<li><strong>Herramientas de Mapas interactivos,</strong> que requieren una navegación fluida para explorar diferentes niveles de detalle en la cartografía digital.</li>



<li><strong>Revistas puestas como imágenes,</strong> permitiendo a los lectores examinar el contenido editorial y las ilustraciones con mayor detalle.</li>
</ul>



<h3 class="wp-block-heading">Colocando la imagen dentro de una capa</h3>



<p>A la hora de implementar el control de zoom en imágenes con el ratón en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> lo primero que haremos será <a href="https://lineadecodigo.com/html/alto-y-ancho-de-una-imagen-con-html/">poner una imagen dentro de la página web</a> mediante el elemento <a href="https://www.w3api.com/HTML/img/" target="_blank" rel="noopener"><code>img</code></a>. Algo muy sencillo que haremos de la siguiente forma:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;img id="zoomImage" src="imagen.jpg" style="width: 100%; height: auto;"></pre>



<p>Pero, como queremos hacer zoom sobre la imagen y que esta se quede en un recuadro, es decir no queremos que la imagen crezca de forma indiscriminada por la página, lo que haremos será el poner la imagen dentro de un recuadro que representaremos como una capa de un elemento <a href="https://www.w3api.com/HTML/div/" target="_blank" rel="noopener"><code>div</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div class="zoom-container">
  &lt;img id="zoomImage" src="imagen.jpg" style="width: 100%; height: auto;">
&lt;/div></pre>



<p>Lo siguiente para implementar el control de zoom en imágenes con el ratón en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> será ajustar el estilo de esta capa para que tenga un tamaño concreto mediante las propiedades <a href="https://www.w3api.com/CSS/width/" target="_blank" rel="noopener"><code>width</code></a> y <a href="https://www.w3api.com/CSS/height/" target="_blank" rel="noopener"><code>height</code></a> de <a href="https://www.manualweb.net/css/" target="_blank" rel="noopener">CSS</a> y sobre todo vamos a indicar que oculte el desborde de la imagen por la capa, ya que cuando crezca la imagen se producirá un desborde. Esto lo conseguimos mediante la propiedad <a href="https://www.w3api.com/CSS/overflow/" target="_blank" rel="noopener"><code>overflow</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="css" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">.zoom-container {
	width: 300px;
	height: 300px;
	overflow: hidden;
	border: 2px solid #000;
	position: relative;
}</pre>



<h3 class="wp-block-heading">Manejar el evento onwheel para controlar el zoom en imágenes con el ratón en HTML5</h3>



<p>Lo siguiente para poder implementar el control de zoom en imágenes con el ratón en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> será manejar el evento de scroll.</p>



<p>Así que una vez que tenemos la imagen insertada dentro de la página web pasaremos a controlar el evento de zoom. El evento de zoom es el evento <a href="https://www.w3api.com/HTML/onwheel/" target="_blank" rel="noopener"><code>onwheel</code></a> y lo registramos asociado a la imagen.</p>



<p>Es por ello que recuperamos un puntero sobre la imagen que hemos insertado utilizando su <a href="https://www.w3api.com/HTML/id/" target="_blank" rel="noopener"><code>id</code></a> y el método <a href="https://w3api.com/DOM/Document/getElementById/" target="_blank" rel="noopener"><code>getElementById()</code></a> .</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">const img = document.getElementById('zoomImage');
img.onwheel = function(event) { ... };</pre>



<p>Ahora pasamos a codificar las acciones con el zoom.</p>



<h3 class="wp-block-heading">Cambiando el tamaño de la imagen mediante scale</h3>



<p>Para poder cambiar el tamaño de la imagen y asociarlo al evento tenemos que conocer dos partes. Por un lado el valor del ratón, para ello tenemos el interface <a href="https://www.w3api.com/WebAPI/WheelEvent/" target="_blank" rel="noopener"><code>WheelEvent</code></a> con la propiedad <a href="https://www.w3api.com/WebAPI/WheelEvent/deltaY/" target="_blank" rel="noopener"><code>deltaY</code></a> que ofrece un valor en punto flotante sobre cómo va creciendo o decreciendo el valor. Por otro está la escala de la imagen, es decir, como es el alto y ancho de una imagen, esto lo podemos manipular mediante la propiedad <a href="https://www.w3api.com/CSS/transform/" target="_blank" rel="noopener"><code>transform</code></a> de los estilos y la función <a href="https://www.w3api.com/CSS/scale/" target="_blank" rel="noopener"><code>scale()</code></a>.</p>



<p>Lo que vamos a definir también, en el código de control de zoom en imágenes con el ratón en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>, será un valor de escala inicial y otro de cambio de escala.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">let scale = 1;
const scaleFactor = 0.1;</pre>



<p>Ahora según vamos recibiendo valores de la propiedad <a href="https://www.w3api.com/WebAPI/WheelEvent/deltaY/" target="_blank" rel="noopener"><code>deltaY</code></a> lo que haremos es, si son negativos aumentar la escala y si son positivos decrementar la escala controlando que no podemos a dejarlo sin visualizarse.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">if (event.deltaY &lt; 0) {
  scale += scaleFactor;
} else {
  scale -= scaleFactor;
  if (scale &lt; scaleFactor) {
    scale = scaleFactor;
  }
}
</pre>



<p>El valor final de la escala lo asociamos a la propiedad <a href="https://www.w3api.com/CSS/transform/" target="_blank" rel="noopener">transform</a> mediante la función <a href="https://www.w3api.com/CSS/scale/" target="_blank" rel="noopener"><a href="https://www.w3api.com/CSS/scale/" target="_blank" rel="noopener">scale()</a></a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">img.style.transform = `scale(${scale})`;</pre>



<p>Por lo que el código para hacer el zoom nos quedaría de la siguiente forma:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">let scale = 1;
const scaleFactor = 0.1;

img.onwheel = function(event) {
	event.preventDefault();
	if (event.deltaY &lt; 0) {
	  scale += scaleFactor;
	} else {
	  scale -= scaleFactor;
	  if (scale &lt; scaleFactor) {
	    scale = scaleFactor;
	  }
	}
	img.style.transform = `scale(${scale})`;
};</pre>



<p>De esta forma ya habremos conseguido tener nuestro código para implementar el control de zoom en imágenes con el ratón en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/zoom-en-imagenes-con-el-raton-en-html5/">Zoom en imágenes con el ratón en HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/zoom-en-imagenes-con-el-raton-en-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Popover con cierre explícito en HTML5</title>
		<link>https://lineadecodigo.com/html5/popover-con-cierre-explicito-en-html5/</link>
					<comments>https://lineadecodigo.com/html5/popover-con-cierre-explicito-en-html5/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Tue, 18 Feb 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Popover]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17927</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>En el artículo de hoy vamos a ver cómo crear un popover con cierre explícito en HTML5, es decir, que haya que cerrar mediante un botón o una imagen de un aspa la ventana emergente y que no sirva simplemente con pulsar fuera del mensaje. Ya hemos visto que la evolución del lenguaje HTML5 nos [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/popover-con-cierre-explicito-en-html5/">Popover con cierre explícito en HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>En el artículo de hoy vamos a ver cómo crear un popover con cierre explícito en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>, es decir, que haya que cerrar mediante un botón o una imagen de un aspa la ventana emergente y que no sirva simplemente con pulsar fuera del mensaje. Ya hemos visto que la evolución del <a href="https://lineadecodigo.com/categoria/html5/">lenguaje HTML5</a> nos ha ofrecido nuevos <a href="https://lineadecodigo.com/html5/mensajes-emergentes-con-popover-en-html5/">elementos como popover para mostrar ventanas emergentes</a>. Pero, en ese caso, vimos como aplicar un elemento <a href="https://www.w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> con un cierre sencillo al pulsar fuera de la ventana emergente. </p>



<h3 class="wp-block-heading">Crear un popover con cierre explícito en HTML5</h3>



<p>Lo primero que tenemos que hace es utilizar el elemento <a href="https://www.w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> para crear nuestro mensaje emergente. Si recordamos la sintaxis de este <a href="https://w3api.com/HTML/tag/atributo-html/" target="_blank" rel="noopener">atributo de HTML</a> vemos que hay varias formar de abrirlo.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">popover = auto | manual | hint</pre>



<p>Por defecto, el elemento <a href="https://www.w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> se abre en un modelo <code>“auto”</code>, que es el que permite cerrar el mensaje emergente simplemente haciendo click fuera del mensaje. En este caso, para poder crear un popover con cierre explícito en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> vamos a abrirlo con el tipo <code>“manual”</code>. Por lo tanto codificamos el elemento <a href="https://www.w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> de la siguiente forma:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div popover="manual" id="pop1">
	&lt;h2>Este es un popover de HTML5&lt;/h2>
  &lt;img src="imagen.png" alt="Imagen de Ejemplo">        
&lt;/div></pre>



<p>Ahora lo que necesitamos es crear nuestro botón que permita mostrar el popover en la pantalla del <a href="https://www.ayudaenlaweb.com/navegadores/que-es-un-navegador/" target="_blank" rel="noopener">navegador web</a>. Para ello utilizamos el siguiente código que se apoya en el atributo <a href="https://www.w3api.com/HTML/button/popovertarget/" target="_blank" rel="noopener"><code>popovertarget</code></a> del elemento <a href="https://www.w3api.com/HTML/button/" target="_blank" rel="noopener"><code>button</code></a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;button popovertarget="pop1">Abrir Mensaje&lt;/button></pre>



<p>Vemos que tanto el atributo <a href="https://www.w3api.com/HTML/id/" target="_blank" rel="noopener"><code>id</code></a> del elemento <a href="https://www.w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> como el elemento <a href="https://www.w3api.com/HTML/button/popovertarget/" target="_blank" rel="noopener"><code>popovertarget</code></a> del elemento <a href="https://www.w3api.com/HTML/button/" target="_blank" rel="noopener"><code>button</code></a> coinciden.</p>



<p>Ya tenemos de un mensaje emergente, el cual, además, no puede cerrarse simplemente tocando fuera de él. Es por ello que tenemos que añadirle más elementos.</p>



<h3 class="wp-block-heading">Gestión del cierre del popover en Javascript</h3>



<p>Lo primero que haremos será crear un elemento <a href="https://www.w3api.com/HTML/button/" target="_blank" rel="noopener"><code>button</code></a> dentro del elemento <a href="https://www.w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a>. Y es que, este elemento botón, será el que nos ayude a cerrar la ventana emergente.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div popover="manual" id="pop1">
  &lt;h2>Este es un popover de HTML5&lt;/h2>
	&lt;img src="imagen.png" alt="Imagen de Ejemplo">
  &lt;button>Cerrar Ventana&lt;/button>
&lt;/div></pre>



<p>En vez de este botón podríamos haber añadido una imagen con un aspa, un simple enlace o cualquier otro elemento que fuese accionable para poder realizar el cierre de la ventana.</p>



<p>Ahora lo que vamos añadir el es <a href="https://lineadecodigo.com/categoria/javascript/">código Javascript</a> que nos permite cerrar la ventana. Para ello tenemos que llamar al método <a href="https://www.w3api.com/HTMLDOM/HTMLElement/hidePopover/" target="_blank" rel="noopener"><code>hidePopover()</code></a> sobre el elemento que contiene el mensaje emergente.</p>



<p>El método <a href="https://www.w3api.com/HTMLDOM/HTMLElement/hidePopover/" target="_blank" rel="noopener"><code>hidePopover()</code></a> es un método del modelo DOM que se encuentra dentro del elemento base <a href="https://www.w3api.com/HTMLDOM/HTMLElement/" target="_blank" rel="noopener"><code>HTMLElement</code></a>.</p>



<p>Para ello nos apoyamos en un evento <a href="https://www.w3api.com/HTML/onclick/" target="_blank" rel="noopener"><code>onclick</code></a> sobre el elemento <a href="https://www.w3api.com/HTML/button/" target="_blank" rel="noopener"><code>button</code></a> para poder asociar este cierre del mensaje.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div popover="manual" id="pop1">
  &lt;h2>Este es un popover de HTML5&lt;/h2>
	&lt;img src="imagen.png" alt="Imagen de Ejemplo">
  &lt;button onclick="pop1.hidePopover()">Cerrar Ventana&lt;/button>
&lt;/div></pre>



<p>De esta forma ya habremos conseguido crear un popover con cierre explicito en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> que cerramos mediante <a href="https://lineadecodigo.com/categoria/javascript/">código Javascript</a>.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/popover-con-cierre-explicito-en-html5/">Popover con cierre explícito en HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/popover-con-cierre-explicito-en-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cambiar atributos de imágenes en WordPress</title>
		<link>https://lineadecodigo.com/wordpress/cambiar-atributos-de-imagenes-en-wordpress/</link>
					<comments>https://lineadecodigo.com/wordpress/cambiar-atributos-de-imagenes-en-wordpress/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Mon, 17 Feb 2025 14:00:00 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Filtros]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17921</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/08/wordpress-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="wordpress" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/08/wordpress-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/08/wordpress.png 300w" sizes="(max-width: 150px) 100vw, 150px"><p>Volvemos a escribir algún artículo sobre la plataforma WordPress, el sistema de gestión de contenidos (CMS) más utilizado en Internet. En este caso vamos a ver cómo podemos cambiar atributos de imágenes en WordPress. En concreto, vamos a ver cómo podemos modificar su atributo class, para poder añadir una clase específica a todas las imágenes [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/wordpress/cambiar-atributos-de-imagenes-en-wordpress/">Cambiar atributos de imágenes en WordPress</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/08/wordpress-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="wordpress" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/08/wordpress-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/08/wordpress.png 300w" sizes="(max-width: 150px) 100vw, 150px">
<p>Volvemos a escribir algún artículo sobre la <a href="https://lineadecodigo.com/categoria/wordpress/">plataforma WordPress</a>, el <a href="https://arquitectoit.com/cms/que-es-un-cms/" target="_blank" rel="noopener">sistema de gestión de contenidos (CMS)</a> más utilizado en Internet. En este caso vamos a ver cómo podemos cambiar atributos de imágenes en <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a>. En concreto, vamos a ver cómo podemos modificar su atributo class, para poder añadir una clase específica a todas las imágenes que haya en los contenidos de los posts de nuestro <a href="https://arquitectoit.com/cms/que-es-un-cms/" target="_blank" rel="noopener">CMS</a>.</p>



<h3 class="wp-block-heading">¿Qué queremos a la hora de cambiar atributos de imágenes en WordPress?</h3>



<p>Si avanzamos un poco más, vamos a ver el problema al que nos enfrentamos. El hecho en cuestión es que queremos que todas las imágenes de nuestro blog se vean de forma responsive o adaptativas.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>El <a href="https://arquitectoit.com/front/layout-adaptable-en-disenos-sensibles/" target="_blank" rel="noopener">diseño responsive o diseño adaptativo</a> es una técnica de diseño web que busca que las páginas se visualicen correctamente en diferentes dispositivos y tamaños de pantalla. Esto significa que los elementos de la página, incluidas las imágenes, se ajustan automáticamente para proporcionar una experiencia óptima al usuario, ya sea que esté utilizando un móvil, una tablet o un ordenador de escritorio.</p>
</blockquote>



<p>Para esto nos hemos apoyado en el <a href="https://manualweb.net/bootstrap/" target="_blank" rel="noopener">framework Bootstrap</a> que nos ofrece la clase <code>img-fluig</code>, la cual, aplicada a un elemento <a href="https://www.w3api.com/HTML/title/" target="_blank" rel="noopener"><code>img</code></a> de <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML</a> dentro de su atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a> convierte automáticamente la imagen en responsive.</p>



<p>Aunque pensemos que esto lo podemos hacer directamente en el editor visual de <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a> tenemos que saber que la estructura que nos ofrece <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a> cuando vuelca las imágenes es mediante el nuevo elemento de <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> llamado <a href="https://www.w3api.com/HTML/figure/" target="_blank" rel="noopener"><code>figure</code></a>. Por lo que los valores del atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a> se aplican al elemento <a href="https://www.w3api.com/HTML/figure/" target="_blank" rel="noopener"><code>figure</code></a> en vez de al elemento <a href="https://www.w3api.com/HTML/title/" target="_blank" rel="noopener"><code>img</code></a>.</p>



<p>Por lo tanto vamos a recurrir al uso del tema de <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a> y a sus hooks para poder modificar de forma general el comportamiento.</p>



<h3 class="wp-block-heading">Alternativa get_image_tag_class</h3>



<p>A la hora de empezar a codificar y conseguir cambiar atributos de imágenes en <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a>, una de las alternativas sería utilizar el hook <code>get_image_tag_class</code>. Si echamos un vistazo a la sintaxis de <code>get_image_tag_class</code> vemos lo siguiente:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">apply_filters( ‘get_image_tag_class’, string $class, int $id, string $align, string|int[] $size )</pre>



<p>Por lo que podemos modificar el valor del atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a> dándole un nuevo valor. De esta manera, el <a href="https://lineadecodigo.com/categoria/php/">código en PHP</a> nos quedaría de la siguiente forma:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function example_add_img_class( $class ) {	
	return $class . ' img-fluid';	
}

add_filter( 'get_image_tag_class', 'example_add_img_class' );</pre>



<p>Lo que hacemos es añadir a las clases existentes, la clase <code>img-fluid</code>.</p>



<p>Si bien, el problema que tenemos con este hook es que no funciona con las imágenes que tengamos ya insertadas en los diferentes post del blog. Por lo que tenemos que buscar una alternativa diferente si queremos cambiar atributos de imágenes en <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a>.</p>



<h3 class="wp-block-heading">Utilizando el hook the_content</h3>



<p>Es por ello que vamos a recurrir al hook <code>the_content</code> para poder cambiar atributos de imágenes en <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a>. En este caso, revisando la sintaxis, vemos que podemos reemplazar el contenido de una página, pero TODO el contenido.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">apply_filters( ‘the_content’, string $content )</pre>



<p>Por lo que nos tocará trabajar sobre dicho contenido y buscar aquellos sitios dónde haya imágenes para poder modificar su atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a>. Quedándonos el siguiente código:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">function add_img_fluid_class($content) {
	// Modificar el contenido
	return $content;
}

add_filter('the_content', 'add_img_fluid_class');</pre>



<h3 class="wp-block-heading">Utilizando expresiones regulares sobre el contenido</h3>



<p>Ahora nos vamos a apoyar en expresiones regulares mediante la función <a href="https://www.w3api.com/PHP/preg_replace/" target="_blank" rel="noopener"><code>preg_replace()</code></a>. La función <a href="https://www.w3api.com/PHP/preg_replace/" target="_blank" rel="noopener"><code>preg_replace()</code></a> tiene la siguiente sintáxis:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">preg_replace(
    string|array $pattern,
    string|array $replacement,
    string|array $subject,
    int $limit = -1,
    int &amp;$count = null
): string|array|null</pre>



<p>Dónde podemos ver que el primer parámetro es el patrón de búsqueda, la segunda es el contenido por el que vamos a sustituir el patrón y el tercero el contenido sobre el que aplicamos el patrón de búsqueda.</p>



<p>Por lo que vamos a utilizar 3 patrones:</p>



<ul class="wp-block-list">
<li><strong>/&lt;img(.<em>?)class=»(.</em>?)»/</strong> el cual nos permite buscar elementos <a href="https://www.w3api.com/HTML/title/" target="_blank" rel="noopener"><code>img</code></a> dónde el atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a> vaya entre comillas dobles.</li>



<li><strong>/&lt;img(.<em>?)class=\'(.</em>?)\&#8217;/</strong> el cual nos permite buscar elementos <a href="https://www.w3api.com/HTML/title/" target="_blank" rel="noopener"><code>img</code></a> dónde el atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a> vaya entre comillas simples.</li>



<li><strong>/&lt;img((?!class=)[^>])+>/</strong> para aquellas imágenes que no tienen un atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a> y por lo tanto hay que crearlo.</li>
</ul>



<p>Así que aplicamos estos tres patrones de la siguiente forma:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="php" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">	
function add_img_fluid_class($content) {
	$content = preg_replace('/&lt;img(.*?)class="(.*?)"/', '&lt;img$1class="$2 img-fluid"', $content);
	$content = preg_replace('/&lt;img(.*?)class=\\'(.*?)\\'/', '&lt;img$1class=\\'$2 img-fluid\\'', $content);
	$content = preg_replace('/&lt;img((?!class=)[^>])+>/', '&lt;img class="img-fluid"$1>', $content);
	return $content;
}

add_filter('the_content', 'add_img_fluid_class');</pre>



<p>Vemos que hemos añadido la clase <code>img-fluid</code> al conjunto de clases que tengan las imágenes.</p>



<p>Ya tendremos nuestro hook que nos permite cambiar atributos de imágenes en <a href="https://lineadecodigo.com/categoria/wordpress/">WordPress</a>, para, en concreto, modificar el valor del atributo <a href="https://www.w3api.com/HTML/class/" target="_blank" rel="noopener"><code>class</code></a>.</p>



<p>Esto lo podríamos hacer para cualquier otro atributo. ¿Se te ocurre alguna otra aplicación? Déjanoslo en comentarios.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/wordpress/cambiar-atributos-de-imagenes-en-wordpress/">Cambiar atributos de imágenes en WordPress</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/wordpress/cambiar-atributos-de-imagenes-en-wordpress/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mensajes emergentes con popover en HTML5</title>
		<link>https://lineadecodigo.com/html5/mensajes-emergentes-con-popover-en-html5/</link>
					<comments>https://lineadecodigo.com/html5/mensajes-emergentes-con-popover-en-html5/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Sat, 15 Feb 2025 12:24:56 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Popover]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17851</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>Los que hemos trabajado en el desarrollo web desde sus principios hemos vivido lo complejo que era gestionar una ventana emergente en una web. En este artículo vamos a ver lo sencillo que es crear mensajes emergentes con popover en HTML5 siguiendo un estándar. Un poco de historia de los mensajes emergentes. Y es que [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/mensajes-emergentes-con-popover-en-html5/">Mensajes emergentes con popover en HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>Los que hemos trabajado en el desarrollo web desde sus principios hemos vivido lo complejo que era gestionar una ventana emergente en una web. En este artículo vamos a ver lo sencillo que es crear mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> siguiendo un estándar.</p>



<h3 class="wp-block-heading">Un poco de historia de los mensajes emergentes.</h3>



<p>Y es que antes de que se estandarizase, y pudiésemos crear <a href="https://lineadecodigo.com/categoria/html5/">código en HTML5</a> para poder crear mensajes emergentes, hemos pasado por muchas épocas y alternativas diferentes.</p>



<p>En primer lugar teníamos las <strong>ventanas emergentes o pop-ups</strong> que se abrían mediante JavaScript. Y se podían mandar mensajes mediante funciones como <a href="https://www.w3api.com/DOM/Window/alert/" target="_blank" rel="noopener"><code>alert()</code></a> o <a href="https://www.w3api.com/DOM/Window/prompt/" target="_blank" rel="noopener"><code>prompt()</code></a>. Incluso se lanzaban ventanas emergentes que se ponían en primer plano y que acababan bloqueando la ventana padre. Estas ventanas eran muy intrusivas, no cumplían ningún estándar de accesibilidad y acabaron siendo bloqueadas por los navegadores.</p>



<p>Después llegaron las librerías <a href="https://www.manualweb.net/javascript/" target="_blank" rel="noopener">JavaScript</a>, como el caso de <a href="https://lineadecodigo.com/categoria/jquery/">desarrollos en jQuery</a>, que nos permitían crear ventanas modales, popovers o lightboxes de una forma más elegante, pero seguían siendo soluciones propietarias que no seguían ningún estándar.</p>



<p>Finalmente, con <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> se ha introducido el atributo <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> que nos permite crear mensajes emergentes de una forma nativa y estandarizada. Esta nueva característica nos ofrece una solución integrada directamente en el <a href="https://lineadecodigo.com/categoria/html5/">lenguaje HTML</a>, sin necesidad de depender de librerías externas. Lo que nos facilita enormemente la creación de mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>.</p>



<p>Además ha introducido otros elementos en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> como <a href="https://w3api.com/HTML/dialog/" target="_blank" rel="noopener"><code>dialog</code></a> que también nos permiten crear ventanas emergentes de diálogo.</p>



<h3 class="wp-block-heading">Casos de uso del elemento popover en HTML5</h3>



<p>Antes de crear mensajes emergentes con <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> vamos a ver qué casos de uso tenemos para poder aplicar esta solución. Los casos de uso más comunes para utilizar el elemento <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> son múltiples y variados, permitiendo mejorar significativamente la experiencia del usuario en diferentes situaciones de interacción con la página web.</p>



<ul class="wp-block-list">
<li><strong>Menús contextuales: </strong>Ideales para mostrar opciones adicionales o acciones específicas relacionadas con un elemento de la página cuando el usuario interactúa con él. Estos menús pueden contener enlaces, botones o cualquier otro elemento interactivo que permita al usuario realizar acciones contextuales de manera eficiente y natural.</li>



<li><strong>Ayuda contextual</strong>: Perfectos para proporcionar información adicional o explicaciones detalladas sobre elementos específicos sin interrumpir el flujo principal de la página. Esta funcionalidad es especialmente útil para mostrar definiciones, consejos o instrucciones paso a paso que ayuden al usuario a comprender mejor el contenido o la funcionalidad de la página.</li>



<li><strong>Formularios flotantes: </strong>Útiles para presentar formularios secundarios o campos de entrada adicionales que no necesitan estar siempre visibles en la interfaz principal. Esta aproximación mejora significativamente la experiencia del usuario al mantener la interfaz limpia y ordenada, mostrando información adicional solo cuando es necesaria.</li>



<li><strong>Paneles de configuración:</strong> Excelentes para mostrar opciones de configuración o preferencias que el usuario puede ajustar sin necesidad de navegar a otra página. Estos paneles pueden incluir múltiples controles y opciones de personalización, permitiendo a los usuarios modificar sus preferencias de manera rápida y conveniente mientras mantienen el contexto de su actividad principal.</li>
</ul>



<figure class="wp-block-image size-large"><a href="https://lineadecodigo.com/wp-content/uploads/2025/02/elementos-popover.webp"><img decoding="async" width="1024" height="873" src="https://lineadecodigo.com/wp-content/uploads/2025/02/elementos-popover-1024x873.webp" alt="Casos para los que nos sirve crear mensajes emergentes con popover en HTML5" class="wp-image-17903 img-fluid" srcset="https://lineadecodigo.com/wp-content/uploads/2025/02/elementos-popover-1024x873.webp 1024w, https://lineadecodigo.com/wp-content/uploads/2025/02/elementos-popover-300x256.webp 300w, https://lineadecodigo.com/wp-content/uploads/2025/02/elementos-popover-768x655.webp 768w, https://lineadecodigo.com/wp-content/uploads/2025/02/elementos-popover.webp 1192w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<h3 class="wp-block-heading">Crear mensajes emergentes con popover en HTML5</h3>



<p>Ahora ya nos vamos a poner a codificar para poder crear mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. Para ello, en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>, aparece el atributo general <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> que nos sirve para poder crear mensajes emergentes. El funcionamiento de los popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> tiene dos partes: por un lado, la forma en la que definimos el contenido del popover y por otro, cómo asociamos a un elemento la capacidad de mostrar el popover.</p>



<p>Para poder definir cuál es el elemento popover dentro de nuestra <a href="https://lineadecodigo.com/categoria/html5/">página web en HTML5</a> lo que hacemos es asignarle el atributo global <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a>:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;elemento popover="auto|manual|hint" id="identificador">&lt;/elemento></pre>



<p>Es muy importante que este elemento que tiene el atributo <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> también tenga informado el atributo <a href="https://www.w3api.com/HTML/id/" target="_blank" rel="noopener"><code>id</code></a> dándole un identificador único en la página. Esto es debido a que el elemento que muestre el popover deberá de indicar el id del elemento que contiene el popover.</p>



<p>Así, podemos crear una capa mediante un elemento <a href="https://www.w3api.com/HTML/div/" target="_blank" rel="noopener"><code>div</code></a> que nos permita el mostrar un contenido con una imagen de la siguiente forma:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;div popover id="pop1">
  &lt;h2>Este es un popover de HTML5&lt;/h2>
  &lt;img src="imagen.png" alt="Imagen en Popover">
&lt;/div></pre>



<p>La siguiente parte para crear mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> será asociar a un elemento la capacidad de mostrar el popover cuando se interactúe con dicho elemento. Por lo cual tiene que ser un elemento de acción, como puede ser un <a href="https://www.w3api.com/HTML/button/" target="_blank" rel="noopener"><code>button</code></a> o un elemento <a href="https://www.w3api.com/HTML/input/" target="_blank" rel="noopener"><code>input</code></a>. O bien asociar un comportamiento de interacción a un elemento mediante algún tipo de evento como <a href="https://www.w3api.com/HTML/onclick/" target="_blank" rel="noopener"><code>onclick</code></a>, <a href="https://www.w3api.com/HTML/onmouseover/" target="_blank" rel="noopener"><code>onmouseover</code></a>,…</p>



<p>En el caso de que tengamos un elemento de acción, vamos a utilizar el atributo <a href="https://www.w3api.com/HTML/button/popovertarget/" target="_blank" rel="noopener"><code>popovertarget</code></a>. Mediante el atributo <a href="https://www.w3api.com/HTML/button/popovertarget/" target="_blank" rel="noopener"><code>popovertarget</code></a> asociamos el <a href="https://www.w3api.com/HTML/id/" target="_blank" rel="noopener"><code>id</code></a> que contiene el elemento <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;elemento popovertarget="idpopover">&lt;/elemento></pre>



<p>Por lo que en nuestro caso vamos a asignar a un elemento <a href="https://www.w3api.com/HTML/button/" target="_blank" rel="noopener"><code>button</code></a> la capa que acabamos de crear:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;button popovertarget="pop1">Haz click aquí&lt;/button></pre>



<p>Vemos que utilizamos el id <code>“pop1”</code> que es el id que le habíamos asignado a nuestro elemento <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a>.</p>



<p>Otra forma de poder crear mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> sería mostrar el popover sería mediante <a href="https://lineadecodigo.com/categoria/javascript/">código en Javascript</a>. En este caso tendremos que asociar a un elemento un evento y en dicho evento mostrar el popover mediante el método <a href="https://w3api.com/HTMLDOM/HTMLElement/showPopover/" target="_blank" rel="noopener"><code>.showPopover()</code></a> del elemento <a href="https://w3api.com/HTMLDOM/HTMLElement/" target="_blank" rel="noopener"><code>HTMLElement</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">let boton2 = document.getElementById("boton2");
let pop1 = document.getElementById("pop1");

boton2.onclick = function () {            
    pop1.showPopover();
}</pre>



<p>En ambos casos, al pulsar sobre el botón, se mostrará el popover a pantalla completa.</p>



<h3 class="wp-block-heading">Diferencia entre popover y dialog</h3>



<p>Ahora que hemos visto cómo podemos crear mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> mediante el atributo <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> y que sabemos cómo <a href="https://lineadecodigo.com/html5/mostrar-una-ventana-dialogo-en-html5/">gestionar las ventanas emergentes mediante un elemento dialog</a>, vamos a ver sus diferencias y cuándo utilizar cada uno de ellos.</p>



<p>Las principales diferencias entre el atributo <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> y el elemento <a href="https://w3api.com/HTML/dialog/" target="_blank" rel="noopener"><code>dialog</code></a> radican en su propósito y comportamiento.</p>



<p><strong>¿Cuándo utilizar dialog?</strong></p>



<p>El elemento <a href="https://w3api.com/HTML/dialog/" target="_blank" rel="noopener"><code>dialog</code></a> está diseñado específicamente para interacciones modales que requieren una respuesta explícita del usuario. Es ideal para situaciones donde necesitamos que el usuario tome una decisión importante o complete una acción crítica, como confirmaciones de acciones irreversibles, formularios de registro importantes o ventanas de configuración esenciales. El elemento <a href="https://w3api.com/HTML/dialog/" target="_blank" rel="noopener"><code>dialog</code></a> bloquea intencionadamente la interacción con el resto de la página para asegurar que el usuario se centre en la tarea actual y proporcione la respuesta necesaria antes de continuar.</p>



<p><strong>¿Cuándo utilizar popover?</strong></p>



<p>El atributo <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a> está optimizado para presentar contenido informativo o contextual de manera más ligera y flexible. Es la opción perfecta cuando queremos mostrar información adicional, sugerencias, ayuda contextual o menús secundarios sin interrumpir significativamente la experiencia del usuario. A diferencia del <a href="https://w3api.com/HTML/dialog/" target="_blank" rel="noopener"><code>dialog</code></a>, el popover mantiene una interacción más natural y fluida con la página principal, permitiendo que el usuario pueda ignorarlo fácilmente si así lo desea y continuar con su actividad principal sin obstáculos. Esta característica lo hace especialmente útil para mejorar la experiencia del usuario sin crear interrupciones innecesarias en el flujo de trabajo.</p>



<figure class="wp-block-image size-large"><a href="https://lineadecodigo.com/wp-content/uploads/2025/02/dialog-vs-popover.webp"><img decoding="async" width="1024" height="697" src="https://lineadecodigo.com/wp-content/uploads/2025/02/dialog-vs-popover-1024x697.webp" alt="Beneficios de utilizar dialog o popover en HTML5" class="wp-image-17902 img-fluid" srcset="https://lineadecodigo.com/wp-content/uploads/2025/02/dialog-vs-popover-1024x697.webp 1024w, https://lineadecodigo.com/wp-content/uploads/2025/02/dialog-vs-popover-300x204.webp 300w, https://lineadecodigo.com/wp-content/uploads/2025/02/dialog-vs-popover-768x523.webp 768w, https://lineadecodigo.com/wp-content/uploads/2025/02/dialog-vs-popover.webp 1352w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p>Con esto ya habremos visto cómo podemos crear mensajes emergentes con popover en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>, en qué casos utilizarlo y cuáles son las diferencias entre los elementos <a href="https://w3api.com/HTML/dialog/" target="_blank" rel="noopener"><code>dialog</code></a> y <a href="https://w3api.com/HTML/popover/" target="_blank" rel="noopener"><code>popover</code></a>.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/mensajes-emergentes-con-popover-en-html5/">Mensajes emergentes con popover en HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/mensajes-emergentes-con-popover-en-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cambios de volumen en vídeos HTML5</title>
		<link>https://lineadecodigo.com/html5/cambios-de-volumen-en-videos-html5/</link>
					<comments>https://lineadecodigo.com/html5/cambios-de-volumen-en-videos-html5/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Mon, 10 Feb 2025 22:36:09 +0000</pubDate>
				<category><![CDATA[HTML5]]></category>
		<category><![CDATA[HTML5 Video]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17849</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>En el artículo de hoy vamos a aprender cómo podemos controlar cambios de volumen en vídeos HTML5. Es decir, saber cuándo se cambia el volumen de un vídeo HTML5, ya sea para subir el volumen, bajar el volumen o apagarlo. Por qué controlar cambios de volumen en vídeos HTML5 Los ejemplos en los que puede [&#8230;]</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/cambios-de-volumen-en-videos-html5/">Cambios de volumen en vídeos HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png" class="webfeedsFeaturedVisual wp-post-image" alt="Ejemplos de Artículos sobre HTML5" style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2014/04/html5-150x150.png 150w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-120x120.png 120w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-24x24.png 24w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-48x48.png 48w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5-96x96.png 96w, https://lineadecodigo.com/wp-content/uploads/2014/04/html5.png 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>En el artículo de hoy vamos a aprender cómo podemos controlar cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. Es decir, saber cuándo se cambia el volumen de un <a href="https://lineadecodigo.com/tag/html5-video/">vídeo HTML5</a>, ya sea para subir el volumen, bajar el volumen o apagarlo.</p>



<h3 class="wp-block-heading">Por qué controlar cambios de volumen en vídeos HTML5</h3>



<p>Los ejemplos en los que puede ser interesante controlar cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> son aquellos en los que queremos que un usuario no pueda bajar el volumen de un vídeo o mutearlo. Esto puede ser interesante si estás trabajando en una plataforma de elearning en la cual quieres “asegurarte” que el cliente está escuchando el vídeo.</p>



<p>Otro ejemplo interesante para controlar cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> es en aquellos escenarios dónde tengamos establecidos unos patrones de volumen bajo, medio y alto. Nos permitirá el ajustar a uno u otro independientemente de que el usuario esté modificando la barra del volumen del sonido.</p>



<h3 class="wp-block-heading">Incluir el vídeo dentro de nuestra web</h3>



<p>Así que, manos a la obra, vamos a empezar a construir nuestro código para controlar cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. Lo primero será el incluir nuestro elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>vídeo</code></a> y el elemento <a href="https://w3api.com/HTML/source/" target="_blank" rel="noopener"><code>source</code></a>. El elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>vídeo</code></a> nos crea un espacio para poder cargar el elemento multimedia y el elemento <a href="https://w3api.com/HTML/source/" target="_blank" rel="noopener"><code>source</code></a> nos permite indicar el archivo y tipo del archivo que queremos cargar con el vídeo.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;video id="mivideo" controls>  
  &lt;source src="&lt;http://easyhtml5video.com/images/happyfit2.ogv>" type="video/ogg">&lt;/source>
  Tu navegador no soporta el elemento &lt;code>video&lt;/code>.  
&lt;/video> 
&lt;div id="info">&lt;/div>
</pre>



<p>Para implementar correctamente esta funcionalidad, es crucial prestar atención a los detalles técnicos de la estructura <a href="https://www.manualweb.net/html/" target="_blank" rel="noopener">HTML</a>. En primer lugar, debemos asignar un identificador único al elemento <a href="https://w3api.com/HTML/video/" target="_blank" rel="noopener"><code>video</code></a> a través del atributo <a href="https://w3api.com/HTML/id/" target="_blank" rel="noopener"><code>id</code></a>. Este identificador actúa como un puente esencial entre la estructura HTML y nuestro <a href="https://lineadecodigo.com/categoria/javascript/">código Javascript</a>, permitiendo una manipulación precisa y eficiente del elemento multimedia.</p>



<p>Luego tenemos el elemento <a href="https://w3api.com/HTML/source/" target="_blank" rel="noopener"><code>source</code></a>. Este elemento es el componente fundamental para la carga del vídeo y requiere dos atributos críticos: la ruta del recurso multimedia y su formato, especificado mediante el atributo <a href="https://www.w3api.com/HTML/source/type/" target="_blank" rel="noopener"><code>type</code></a>. En nuestra implementación, hemos optado por utilizar el formato OGV (Ogg Video). Este formato, especificado como <code>"video/ogg"</code>, ofrece una excelente relación entre calidad y compatibilidad, siendo especialmente valorado en la comunidad de desarrollo web.</p>



<p>Como complemento a la estructura principal, hemos incorporado un elemento <a href="https://www.w3api.com/HTML/div/" target="_blank" rel="noopener"><code>div</code></a> en nuestro <a href="https://lineadecodigo.com/categoria/html/">código HTML</a>. Este contenedor dinámico actuará como un panel de información en tiempo real, permitiéndonos mostrar de manera elegante y organizada todos los eventos y acciones relacionados con la reproducción del vídeo. Esta implementación no solo mejora la experiencia del usuario, sino que también facilita la depuración durante el desarrollo.</p>



<h3 class="wp-block-heading">Controles externos para manipular el sonido del vídeo</h3>



<p>Una vez que tenemos nuestro vídeo vamos a añadirle una serie de controles en los que insertaremos un elemento <a href="https://www.w3api.com/HTML/range/" target="_blank" rel="noopener"><code>range</code></a> que nos permitirá gestionar el volumen y un <a href="https://www.w3api.com/HTML/input/" target="_blank" rel="noopener"><code>input</code></a> de tipo checkbox para apagar el volumen.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="html" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">&lt;label for="volumen">Volumen: &lt;/label>&lt;input type="range" min="0" max="1" value="1" step="0.1" id="volumen">
&lt;input type="checkbox" id="mute">&lt;label for="mute">Mute&lt;/label>
</pre>



<p>Estos controles los gestionaremos mediante <a href="https://lineadecodigo.com/categoria/javascript/">código Javascript</a>. Por un lado el elemento <a href="https://www.w3api.com/HTML/range/" target="_blank" rel="noopener"><code>range</code></a> ante un evento de cambio, que se registra con el evento <a href="https://w3api.com/HTML/onchange/" target="_blank" rel="noopener"><code>onchange</code></a>, asignará el valor del elemento sobre el volumen del vídeo. Al volumen del vídeo se puede acceder mediante la propiedad <a href="https://www.w3api.com/HTMLDOM/HTMLMediaElement/volume/" target="_blank" rel="noopener"><code>volume</code></a>.</p>



<p>Por otro mediante el <a href="https://www.w3api.com/HTML/input/" target="_blank" rel="noopener"><code>input</code></a> de tipo checkbox controlaremos si ponemos el volumen a 0, nuevamente mediante su propiedad <a href="https://www.w3api.com/HTMLDOM/HTMLMediaElement/volume/" target="_blank" rel="noopener"><code>volume</code></a> o si, por el contrario, volvemos a poner el volumen que tenía. Para ello guardamos en una variable savevolume el valor actual antes de apagarlo.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">let mute = document.getElementById("mute");
let barra = document.getElementById("volumen");
let v = document.getElementById("mivideo");
let savevolume = 1;

mute.addEventListener("change",function(ev){
	if (ev.target.checked) {
		savevolume = v.volume;		
		v.volume = 0;
		barra.value = 0;
	} else {
		v.volume = savevolume;
		barra.value = savevolume;
	}
},true);

barra.addEventListener("change",function(ev){
	v.volume = ev.target.value;	
	mute.checked=false;
},true);
</pre>



<h3 class="wp-block-heading">Uso del evento onvolumechange para controlar cambios de volumen en vídeos HTML5</h3>



<p>A parte de la gestión del evento <a href="https://w3api.com/HTML/onchange/" target="_blank" rel="noopener"><code>change</code></a> tenemos otro evento que es el <a href="https://www.w3api.com/HTML/onvolumechange/" target="_blank" rel="noopener"><code>onvolumenchange</code></a> el cual nos permite controlar cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. Así que volvemos a registrar una función para cuando se produzca el evento <a href="https://www.w3api.com/HTML/onvolumechange/" target="_blank" rel="noopener"><code>onvolumenchange</code></a>.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mivideo.onvolumechange = function() {
	info.innerHTML = info.innerHTML + "Volumen cambiado a " + mivideo.volume + "&lt;br>";
	barra.value = mivideo.volume;
};
</pre>



<p>Lo que hacemos el volcar sobre la capa de información el nuevo valor correspondiente al volumen que nos proporciona la propiedad <a href="https://www.w3api.com/HTMLDOM/HTMLMediaElement/volume/" target="_blank" rel="noopener"><code>volume</code></a>. De esta manera sabemos en que posición se ha quedado el volumen. Además actualizamos la barra del elemento <a href="https://www.w3api.com/HTML/range/" target="_blank" rel="noopener"><code>range</code></a> para asignarle el nuevo valor.</p>



<h3 class="wp-block-heading">Forzar no poder subir el volumen del vídeo HTML5</h3>



<p>Además de controlar el nuevo valor del volumen del vídeo. En los cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> podemos forzar a que el volumen no pase de un rango o bien a que se quede siempre en el mismo volumen.</p>



<p>Es por ello que cuando hemos registrado el evento <a href="https://www.w3api.com/HTML/onvolumechange/" target="_blank" rel="noopener"><code>onvolumenchange</code></a> vamos a añadir también este forzado de volumen. Para ello añadimos la siguiente línea de código:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="js" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">mivideo.onvolumechange = function() {
	info.innerHTML = info.innerHTML + "Volumen cambiado a " + mivideo.volume + "&lt;br>";
	// Ajustamos la barra al volumen seleccionado en el vídeo				
	barra.value = mivideo.volume;

	// Podemos forzar a que no se suba el volumen
	mivideo.volume = 0.1;
};
</pre>



<p>Vemos que nuevamente acudimos a la propiedad <a href="https://www.w3api.com/HTMLDOM/HTMLMediaElement/volume/" target="_blank" rel="noopener"><code>volume</code></a> para dicho forzado. De esta forma ya tendremos el código completo para controlar cambios de volumen en vídeos <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/html5/cambios-de-volumen-en-videos-html5/">Cambios de volumen en vídeos HTML5</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/html5/cambios-de-volumen-en-videos-html5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="http://easyhtml5video.com/images/happyfit2.ogv" length="167" type="video/ogg" />

			</item>
		<item>
		<title>Aprende a programar. Episodio II.</title>
		<link>https://lineadecodigo.com/blog/aprende-a-programar-episodio-ii/</link>
					<comments>https://lineadecodigo.com/blog/aprende-a-programar-episodio-ii/#respond</comments>
		
		<dc:creator><![CDATA[Víctor Cuervo]]></dc:creator>
		<pubDate>Mon, 10 Feb 2025 09:19:35 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Blog Semana]]></category>
		<guid isPermaLink="false">https://lineadecodigo.com/?p=17884</guid>

					<description><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-150x150.webp" class="webfeedsFeaturedVisual wp-post-image" alt="Aprende a Programar. Episodio II." style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-150x150.webp 150w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-120x120.webp 120w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-24x24.webp 24w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-48x48.webp 48w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-96x96.webp 96w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-300x300.webp 300w" sizes="(max-width: 150px) 100vw, 150px" /><p>Esta semana ha estado repleta de contenido variado y útil para programadores de distintos niveles. Desde técnicas avanzadas en HTML5 para mejorar la experiencia de usuario con vídeos, hasta trucos esenciales de Python para gestionar archivos y directorios, los artículos han cubierto aspectos clave del desarrollo web y la programación. También se ha profundizado en la optimización del diseño para impresión con CSS y se ha presentado un ejemplo práctico de WebSockets en Java EE.</p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/blog/aprende-a-programar-episodio-ii/">Aprende a programar. Episodio II.</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></description>
										<content:encoded><![CDATA[<img width="150" height="150" src="https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-150x150.webp" class="webfeedsFeaturedVisual wp-post-image" alt="Aprende a Programar. Episodio II." style="float: right; margin-left: 5px;" link_thumbnail="" decoding="async" srcset="https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-150x150.webp 150w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-120x120.webp 120w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-24x24.webp 24w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-48x48.webp 48w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-96x96.webp 96w, https://lineadecodigo.com/wp-content/uploads/2025/02/aprende-a-programar-ii-300x300.webp 300w" sizes="(max-width: 150px) 100vw, 150px" />
<p>Esta semana, en nuestra semana de Aprende a Programar, ha estado repleta de contenido variado y útil para programadores de distintos niveles. Desde técnicas avanzadas en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a> para mejorar la experiencia de usuario con vídeos, hasta trucos esenciales de <a href="https://www.manualweb.net/python/" target="_blank" rel="noopener">Python</a> para gestionar archivos y directorios, los artículos han cubierto <a href="https://lineadecodigo.com/">aspectos clave del desarrollo web y la programación</a>. También se ha profundizado en la optimización del diseño para impresión con <a href="https://www.manualweb.net/css/" target="_blank" rel="noopener">CSS</a> y se ha presentado un ejemplo práctico de WebSockets en <a href="https://www.manualweb.net/javaee/" target="_blank" rel="noopener">Java EE</a>.</p>



<p>Los <a href="https://lineadecodigo.com/categoria/html5/">artículos sobre HTML5</a> exploran cómo mejorar la interacción con vídeos, abordando tanto la búsqueda dentro de un vídeo como la gestión de cargas inestables. Por otro lado, los <a href="https://lineadecodigo.com/categoria/python/">artículos de Python</a> ofrecen soluciones prácticas para la manipulación de archivos y el uso de estructuras de control. Además, se destaca un <a href="https://lineadecodigo.com/categoria/css/">artículo sobre CSS</a> que explica cómo adaptar páginas web para su correcta impresión.</p>



<h3 class="wp-block-heading">Artículos de la semana</h3>



<p><a href="https://lineadecodigo.com/html5/buscar-por-un-video-en-html5/"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f468-1f3fb-200d-1f4bb.png" alt="👨🏻‍💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Buscar por un vídeo en HTML5</strong></a></p>



<p>Este artículo detalla cómo implementar una función de búsqueda dentro de un vídeo en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. Se explican métodos para que los usuarios puedan encontrar fragmentos específicos dentro del contenido multimedia. También se presentan ejemplos de código para facilitar su implementación en proyectos web.</p>



<p><a href="https://lineadecodigo.com/html5/cargas-inestables-de-videos-en-html5/"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f468-1f3fb-200d-1f4bb.png" alt="👨🏻‍💻" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Cargas inestables de vídeos en HTML5</strong></a></p>



<p>Se analizan las razones detrás de los problemas en la carga y reproducción de vídeos en <a href="https://www.manualweb.net/html5/" target="_blank" rel="noopener">HTML5</a>. Desde problemas de red hasta formatos incompatibles, este artículo proporciona estrategias para mejorar la experiencia del usuario.</p>



<p><strong><a href="https://lineadecodigo.com/css/definir-relaciones-de-aspecto-en-css/"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /></a> <a href="https://lineadecodigo.com/css/paginas-adaptadas-para-imprimir-con-css/">Páginas adaptadas para imprimir con CSS</a></strong></p>



<p>Este artículo ofrece una guía sobre cómo diseñar hojas de estilo específicas para impresión. Explica la importancia de usar media queries para diferenciar el diseño en pantalla y en papel, eliminando elementos innecesarios y asegurando una correcta distribución del contenido para facilitar la lectura impresa.</p>



<p><a href="https://lineadecodigo.com/python/10-primeros-numeros-impares-en-python/"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f40d.png" alt="🐍" class="wp-smiley" style="height: 1em; max-height: 1em;" />&nbsp;10 primeros números impares en Python</strong></a></p>



<p>A través de ejemplos prácticos, se muestra cómo generar y listar los primeros diez números impares utilizando bucles en <a href="https://www.manualweb.net/python/" target="_blank" rel="noopener">Python</a>. Se explican distintas estructuras de control como <code>for</code>, junto con consideraciones sobre eficiencia y buenas prácticas en la escritura de código.</p>



<p><a href="https://lineadecodigo.com/python/listar-numeros-del-1-al-10-en-python/"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f40d.png" alt="🐍" class="wp-smiley" style="height: 1em; max-height: 1em;" />&nbsp;Listar números del 1 al 10 en Python</strong></a></p>



<p>Este artículo introduce los conceptos básicos de iteración en <a href="https://www.manualweb.net/python/" target="_blank" rel="noopener">Python</a>, mostrando cómo utilizar <code>range()</code> y distintos métodos de bucles para generar secuencias de números. Además, se incluyen ejercicios prácticos para reforzar el aprendizaje.</p>



<p><a href="https://lineadecodigo.com/java/websocket-echo-en-java-ee/"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2615.png" alt="☕" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Websocket Echo en Java EE</strong></a></p>



<p>Una introducción al uso de WebSockets en <a href="https://www.manualweb.net/javaee/" target="_blank" rel="noopener">Java EE</a>, explicando cómo crear una conexión en tiempo real donde el servidor responde con el mismo mensaje recibido. Se incluyen ejemplos prácticos y configuraciones necesarias para implementar esta funcionalidad en aplicaciones web modernas.</p>



<p><a href="https://lineadecodigo.com/python/borrar-carpetas-de-forma-recursiva-en-python/"><strong><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f40d.png" alt="🐍" class="wp-smiley" style="height: 1em; max-height: 1em;" />&nbsp;Borrar carpetas de forma recursiva en Python</strong></a></p>



<p>Explica cómo eliminar directorios completos en <a href="https://www.manualweb.net/python/" target="_blank" rel="noopener">Python</a>, incluso cuando contienen múltiples archivos. Se presentan métodos utilizando el módulo <a href="https://www.w3api.com/Python/shutil/" target="_blank" rel="noopener"><code>shutil</code></a> y <a href="https://www.w3api.com/Python/os/" target="_blank" rel="noopener"><code>os</code></a>, con ejemplos detallados sobre cómo manejar excepciones y evitar errores en la eliminación de carpetas.</p>



<p><a href="https://www.freepik.es" target="_blank" rel="noopener">Imagen del blog por Freepik</a></p>
<p>La entrada <a rel="nofollow" href="https://lineadecodigo.com/blog/aprende-a-programar-episodio-ii/">Aprende a programar. Episodio II.</a> aparece primero en <a rel="nofollow" href="https://lineadecodigo.com">Línea de Código</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lineadecodigo.com/blog/aprende-a-programar-episodio-ii/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
