<?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>Miguel Manchego desarrollo web</title>
	<atom:link href="https://miguelmanchego.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://miguelmanchego.com/</link>
	<description></description>
	<lastBuildDate>Wed, 04 Dec 2024 17:48:42 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>
	<item>
		<title>Dar estilos a una tabla y efecto zebra</title>
		<link>https://miguelmanchego.com/2024/12/04/dar-estilos-a-una-tabla-y-efecto-zebra/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 16:08:25 +0000</pubDate>
				<category><![CDATA[Sin categoría]]></category>
		<guid isPermaLink="false">https://miguelmanchego.com/?p=2280</guid>

					<description><![CDATA[<p>Las tablas son una herramienta fundamental para organizar y presentar datos en la web. Sin embargo, una tabla sin estilo puede verse anticuada y difícil de leer. En este post, te mostraré cómo aplicar estilos modernos a una tabla HTML utilizando CSS, incluyendo cómo implementar el popular efecto zebra que mejora la legibilidad al alternar [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/12/04/dar-estilos-a-una-tabla-y-efecto-zebra/">Dar estilos a una tabla y efecto zebra</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Las tablas son una herramienta fundamental para organizar y presentar datos en la web. Sin embargo, una tabla sin estilo puede verse anticuada y difícil de leer. En este post, te mostraré cómo aplicar estilos modernos a una tabla HTML utilizando CSS, incluyendo cómo implementar el popular <strong>efecto zebra</strong> que mejora la legibilidad al alternar los colores de las filas.</p>



<h2 class="wp-block-heading">1. Estructura Básica de una Tabla HTML</h2>



<p class="wp-block-paragraph">Antes de aplicar estilos, es esencial tener una tabla bien estructurada. A continuación, un ejemplo básico:</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Nombre&lt;/th&gt;
      &lt;th&gt;Edad&lt;/th&gt;
      &lt;th&gt;Ciudad&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Ana&lt;/td&gt;
      &lt;td&gt;28&lt;/td&gt;
      &lt;td&gt;Madrid&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Juan&lt;/td&gt;
      &lt;td&gt;34&lt;/td&gt;
      &lt;td&gt;Barcelona&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;María&lt;/td&gt;
      &lt;td&gt;22&lt;/td&gt;
      &lt;td&gt;Valencia&lt;/td&gt;
    &lt;/tr&gt;
    &lt;!-- Más filas --&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
</code></pre>



<h2 class="wp-block-heading">2. Aplicando Estilos Modernos con CSS</h2>



<p class="wp-block-paragraph">Vamos a mejorar la apariencia de la tabla con estilos modernos. Puedes añadir los estilos en una hoja CSS externa o dentro de una etiqueta <code>&lt;style&gt;</code> en el <code>&lt;head&gt;</code> de tu documento HTML.</p>



<h3 class="wp-block-heading">a. Estilos Básicos</h3>



<p class="wp-block-paragraph">Primero, eliminaremos los bordes predeterminados y añadiremos un aspecto más limpio:</p>



<pre class="wp-block-code"><code lang="css" class="language-css">table {
  width: 100%;
  border-collapse: collapse; /* Elimina el espacio entre bordes */
  font-family: Arial, sans-serif;
}

th, td {
  padding: 12px 15px;
  text-align: left;
}
</code></pre>



<h3 class="wp-block-heading">b. Añadiendo Colores y Tipografía</h3>



<p class="wp-block-paragraph">Mejoraremos la tipografía y añadiremos colores suaves para un aspecto moderno:</p>



<pre class="wp-block-code"><code lang="css" class="language-css">thead {
  background-color: #009879; /* Color de fondo para el encabezado */
  color: #ffffff; /* Color del texto del encabezado */
}

tbody tr {
  border-bottom: 1px solid #dddddd;
}

tbody tr:last-of-type {
  border-bottom: 2px solid #009879; /* Última fila con borde más grueso */
}

tbody tr:hover {
  background-color: #f1f1f1; /* Efecto hover para resaltar la fila */
}
</code></pre>



<h3 class="wp-block-heading">c. Implementando el Efecto Zebra</h3>



<p class="wp-block-paragraph">El <strong>efecto zebra</strong> alterna el color de las filas para mejorar la legibilidad. Lo implementaremos utilizando los selectores <code>:nth-child</code>.</p>



<pre class="wp-block-code"><code lang="css" class="language-css">tbody tr:nth-child(even) {
  background-color: #f3f3f3; /* Color para filas pares */
}

tbody tr:nth-child(odd) {
  background-color: #ffffff; /* Color para filas impares */
}
</code></pre>



<p class="wp-block-paragraph"><em><strong>Nota:</strong> Puedes ajustar los colores según la paleta de tu sitio web para mantener la coherencia visual.</em></p>



<h2 class="wp-block-heading">3. Código Completo de Ejemplo</h2>



<p class="wp-block-paragraph">Aquí tienes un ejemplo completo que integra todos los estilos mencionados:</p>



<style>
    table {
      width: 100%;
      border-collapse: collapse;
      font-family: Arial, sans-serif;
    }

    thead {
      background-color: #009879;
      color: #ffffff;
    }

    th, td {
      padding: 12px 15px;
      text-align: left;
    }

    tbody tr {
      border-bottom: 1px solid #dddddd;
    }

    tbody tr:last-of-type {
      border-bottom: 2px solid #009879;
    }

    tbody tr:nth-child(even) {
      background-color: #f3f3f3;
    }

    tbody tr:nth-child(odd) {
      background-color: #ffffff;
    }

    tbody tr:hover {
      background-color: #f1f1f1;
    }
  </style>


  <table>
    <thead>
      <tr>
        <th>Nombre</th>
        <th>Edad</th>
        <th>Ciudad</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td>Ana</td>
        <td>28</td>
        <td>Madrid</td>
      </tr>
      <tr>
        <td>Juan</td>
        <td>34</td>
        <td>Barcelona</td>
      </tr>
      <tr>
        <td>María</td>
        <td>22</td>
        <td>Valencia</td>
      </tr>
      <tr>
        <td>Carlos</td>
        <td>45</td>
        <td>Sevilla</td>
      </tr>
    </tbody>
  </table>



<h2 class="wp-block-heading">4. Personalización Adicional</h2>



<p class="wp-block-paragraph">Para adaptar aún más la tabla a tus necesidades, considera lo siguiente:</p>



<ul class="wp-block-list">
<li><strong>Responsividad:</strong> Asegúrate de que la tabla se vea bien en dispositivos móviles. Puedes envolverla en un contenedor con <code>overflow-x: auto</code> o utilizar frameworks como Bootstrap que ofrecen tablas responsivas.</li>
</ul>



<pre class="wp-block-code"><code lang="css" class="language-css">.table-container {
  overflow-x: auto;
}</code></pre>



<p class="wp-block-paragraph">Y en el HTML</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="table-container"&gt;
  &lt;table&gt;
    &lt;!-- contenido de la tabla --&gt;
  &lt;/table&gt;
&lt;/div&gt;</code></pre>



<p class="wp-block-paragraph"><strong>Tipografías y Iconos:</strong> Integra fuentes de Google Fonts o utiliza iconos (como los de Font Awesome) para mejorar la presentación.</p>



<p class="wp-block-paragraph"><strong>Animaciones Suaves:</strong> Añade transiciones para efectos más suaves al interactuar con la tabla.</p>



<pre class="wp-block-code"><code lang="css" class="language-css">tbody tr {
  transition: background-color 0.3s ease;
}</code></pre>



<h2 class="wp-block-heading">5. Conclusión</h2>



<p class="wp-block-paragraph">Estilizar una tabla HTML con CSS puede transformar completamente su apariencia, haciéndola más atractiva y fácil de leer. Implementar el efecto zebra es una práctica recomendada para mejorar la legibilidad, especialmente en tablas con muchas filas. Recuerda siempre mantener una coherencia en los colores y estilos para que la tabla se integre armoniosamente con el diseño general de tu sitio web.</p>



<p class="wp-block-paragraph">¡Espero que este post te haya sido útil para crear tablas modernas y funcionales en tus proyectos web!</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/12/04/dar-estilos-a-una-tabla-y-efecto-zebra/">Dar estilos a una tabla y efecto zebra</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cómo Crear un Botón Flotante de WhatsApp para tu Sitio Web</title>
		<link>https://miguelmanchego.com/2024/12/04/como-crear-un-boton-flotante-de-whatsapp-para-tu-sitio-web/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 15:48:21 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[html]]></category>
		<guid isPermaLink="false">https://miguelmanchego.com/?p=2270</guid>

					<description><![CDATA[<p>En la era digital actual, la comunicación instantánea es clave para mejorar la experiencia del usuario y aumentar la interacción en tu sitio web. Un botón flotante de WhatsApp permite a los visitantes contactarte fácilmente, lo que puede incrementar las conversiones y mejorar el servicio al cliente. En este post, te mostraremos paso a paso [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/12/04/como-crear-un-boton-flotante-de-whatsapp-para-tu-sitio-web/">Cómo Crear un Botón Flotante de WhatsApp para tu Sitio Web</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">En la era digital actual, la comunicación instantánea es clave para mejorar la experiencia del usuario y aumentar la interacción en tu sitio web. Un botón flotante de WhatsApp permite a los visitantes contactarte fácilmente, lo que puede incrementar las conversiones y mejorar el servicio al cliente. En este post, te mostraremos paso a paso cómo implementar un botón flotante de WhatsApp en tu página web utilizando HTML, CSS y JavaScript.</p>



<h2 class="wp-block-heading">Paso 1: Preparar el Enlace de WhatsApp</h2>



<p class="wp-block-paragraph">Antes de crear el botón, necesitas generar un enlace que redirija a los usuarios a una conversación de WhatsApp contigo. Puedes usar el siguiente formato de enlace:</p>



<pre class="wp-block-code"><code class="">https://wa.me/tu_numero_de_telefono?text=Tu%20mensaje%20predeterminado</code></pre>



<h2 class="wp-block-heading">Paso 2: Añadir el HTML del Botón</h2>



<p class="wp-block-paragraph">Inserta el siguiente código HTML en el lugar de tu sitio web donde desees que aparezca el botón flotante. Generalmente, se coloca al final del <code>&lt;body></code>.</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;!-- Botón Flotante de WhatsApp -->
&lt;a href="https://wa.me/34123456789?text=Hola%2C%20estoy%20interesado%20en%20tus%20servicios" class="whatsapp-float" target="_blank">
    &lt;i class="fa fa-whatsapp whatsapp-icon">&lt;/i>
&lt;/a></code></pre>



<p class="wp-block-paragraph"><em><strong>Nota:</strong> Este ejemplo utiliza Font Awesome para el icono de WhatsApp. Asegúrate de incluir la biblioteca de Font Awesome en tu proyecto o usa una imagen personalizada.</em></p>



<h2 class="wp-block-heading">Paso 3: Estilizar el Botón con CSS</h2>



<pre class="wp-block-code"><code lang="css" class="language-css">/* Estilos para el botón flotante de WhatsApp */
.whatsapp-float {
    position: fixed;
    width: 60px;
    height: 60px;
    bottom: 40px;
    right: 40px;
    background-color: #25d366;
    color: #fff;
    border-radius: 50px;
    text-align: center;
    font-size: 30px;
    box-shadow: 2px 2px 3px #999;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background-color 0.3s ease;
}

.whatsapp-float:hover {
    background-color: #128c7e;
}

.whatsapp-icon {
    margin: 0;
}</code></pre>



<p class="wp-block-paragraph">Este CSS posiciona el botón en la esquina inferior derecha de la pantalla, le da un tamaño adecuado, color característico de WhatsApp y añade efectos al pasar el cursor sobre él.</p>



<h3 class="wp-block-heading">Incluir Font Awesome (Opcional)</h3>



<p class="wp-block-paragraph">Si decides usar Font Awesome para el icono de WhatsApp, asegúrate de incluir la biblioteca en tu proyecto. Añade el siguiente enlace en la sección <code>&lt;head></code> de tu HTML:</p>



<pre class="wp-block-code"><code class="">&lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"></code></pre>



<h3 class="wp-block-heading">Usar un Icono SVG Inline</h3>



<p class="wp-block-paragraph">Usar un SVG inline ofrece mayor flexibilidad y rendimiento, ya que no depende de cargas externas y puede ser fácilmente personalizado con CSS.</p>



<p class="wp-block-paragraph"><strong>Ventajas de usar SVG Inline:</strong></p>



<ul class="wp-block-list">
<li><strong>Personalización Fácil:</strong> Puedes cambiar colores, tamaños y otros atributos directamente con CSS.</li>



<li><strong>Rendimiento:</strong> Evita solicitudes HTTP adicionales para cargar iconos.</li>



<li><strong>Escalabilidad:</strong> Los SVG son escalables y se verán bien en cualquier resolución.</li>
</ul>



<p class="wp-block-paragraph"><strong>Ejemplo de SVG Inline:</strong></p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;a href="https://wa.me/34123456789?text=Hola%2C%20estoy%20interesado%20en%20tus%20servicios" class="whatsapp-float" target="_blank">
    &lt;svg class="whatsapp-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
        &lt;path fill="#fff" d="M380.9 97.1C339-7.1 232.3-3.3 173.3 43.5L140.2 76.6C131.5 85.3 131.5 99.7 140.2 108.4L206.8 174H198.5C88.8 174 0 262.8 0 372.5C0 382.3 2.2 392 6.4 401.2C10.6 410.4 16.3 418.5 23.3 425.5C30.3 432.5 38.4 438.2 47.6 442.4C56.8 446.6 66.5 448.8 76.3 448.8H372.5C382.3 448.8 392 446.6 401.2 442.4C410.4 438.2 418.5 432.5 425.5 425.5C432.5 418.5 438.2 410.4 442.4 401.2C446.6 392 448.8 382.3 448.8 372.5C448.8 262.8 360 174 250.3 174H242L308.6 108.4C317.3 99.7 317.3 85.3 308.6 76.6L275.5 43.5C216.5-3.3 109.8-7.1 68-97.1C26.2-187.3 25.3-293.4 68.7-369.7C112.2-446 205.7-512 300.2-512C394.6-512 488  -446 531.3-369.7C574.7-293.4 573.8-187.3 532-97.1Z"/>
    &lt;/svg>
&lt;/a></code></pre>



<h3 class="wp-block-heading">Personalizar el Color del SVG:</h3>



<p class="wp-block-paragraph">Puedes cambiar el color del icono modificando el atributo <code>fill</code> en la etiqueta <code>&lt;path></code> o usando CSS:</p>



<pre class="wp-block-code"><code lang="css" class="language-css">.whatsapp-float:hover .whatsapp-icon path {
    fill: #128c7e; /* Color al pasar el cursor */
}</code></pre>



<h2 class="wp-block-heading">Conclusión</h2>



<p class="wp-block-paragraph">Implementar un botón flotante de WhatsApp en tu sitio web es una excelente manera de facilitar la comunicación con tus visitantes y potenciales clientes. Siguiendo estos sencillos pasos, puedes agregar esta funcionalidad de manera rápida y personalizada. Además, al utilizar un icono SVG inline, mejoras el rendimiento y la personalización de tu botón. No olvides probar el botón en diferentes dispositivos y navegadores para asegurar una experiencia óptima para todos los usuarios.</p>



<p class="wp-block-paragraph">¡Empieza hoy mismo y mejora la interacción en tu sitio web con un botón flotante de WhatsApp!</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/12/04/como-crear-un-boton-flotante-de-whatsapp-para-tu-sitio-web/">Cómo Crear un Botón Flotante de WhatsApp para tu Sitio Web</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Cómo Crear Spinners/Loaders con CSS Puro</title>
		<link>https://miguelmanchego.com/2024/12/04/como-crear-4-spinners-loaders-con-css-puro/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Wed, 04 Dec 2024 15:13:32 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<guid isPermaLink="false">https://miguelmanchego.com/?p=2263</guid>

					<description><![CDATA[<p>Si estás buscando una forma sencilla y elegante de añadir animaciones a tus proyectos sin depender de librerías externas, aquí tienes 4 ejemplos de loaders animados creados únicamente con CSS. ¡Perfectos para cualquier diseño moderno! Loader Circular Giratorio Un clásico y limpio spinner circular. Dots / Puntos que Brincan Tres puntos animados que simulan un [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/12/04/como-crear-4-spinners-loaders-con-css-puro/">Cómo Crear Spinners/Loaders con CSS Puro</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Si estás buscando una forma sencilla y elegante de añadir animaciones a tus proyectos sin depender de librerías externas, aquí tienes 4 ejemplos de loaders animados creados únicamente con CSS. ¡Perfectos para cualquier diseño moderno!</p>



<h2 class="wp-block-heading">Loader Circular Giratorio</h2>



<p class="wp-block-paragraph">Un clásico y limpio spinner circular.</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="loader-circle"&gt;&lt;/div&gt;</code></pre>



<pre class="wp-block-code"><code lang="css" class="language-css">.loader-circle {
  width: 50px;
  height: 50px;
  border: 5px solid #ccc;
  border-top-color: #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
</code></pre>



<div class="loader-circle"></div>
<style>
.loader-circle {
  width: 50px;
  height: 50px;
  border: 5px solid #ccc;
  border-top-color: #3498db;
  border-radius: 50%;
  animation: spin 1s linear infinite;
}

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
</style>



<h2 class="wp-block-heading">Dots / Puntos que Brincan</h2>



<p class="wp-block-paragraph">Tres puntos animados que simulan un movimiento de rebote.</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="loader-dots"&gt;
  &lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;
&lt;/div&gt;</code></pre>



<pre class="wp-block-code"><code lang="css" class="language-css">.loader-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 5px;
}

.loader-dots span {
  width: 10px;
  height: 10px;
  background-color: #3498db;
  border-radius: 50%;
  animation: bounce 0.6s infinite ease-in-out;
}

.loader-dots span:nth-child(2) {
  animation-delay: 0.2s;
}

.loader-dots span:nth-child(3) {
  animation-delay: 0.4s;
}

@keyframes bounce {
  0%, 80%, 100% {
    transform: scale(0);
  }
  40% {
    transform: scale(1);
  }
}</code></pre>



<div class="loader-dots">
  <span></span><span></span><span></span>
</div>

<style>
.loader-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 5px;
}

.loader-dots span {
  width: 10px;
  height: 10px;
  background-color: #3498db;
  border-radius: 50%;
  animation: bounce 0.6s infinite ease-in-out;
}

.loader-dots span:nth-child(2) {
  animation-delay: 0.2s;
}

.loader-dots span:nth-child(3) {
  animation-delay: 0.4s;
}

@keyframes bounce {
  0%, 80%, 100% {
    transform: scale(0);
  }
  40% {
    transform: scale(1);
  }
}
</style>



<h2 class="wp-block-heading">Barra Deslizante</h2>



<p class="wp-block-paragraph">Una barra animada que simula un cargador infinito.</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="loader-bar"&gt;&lt;/div&gt;</code></pre>



<pre class="wp-block-code"><code lang="css" class="language-css">.loader-bar {
  width: 80px;
  height: 8px;
  background: linear-gradient(to right, #3498db 0%, #fff 50%, #3498db 100%);
  background-size: 200% 100%;
  animation: slide 1.5s infinite linear;
}

@keyframes slide {
  from {
    background-position: 200% 0;
  }
  to {
    background-position: -200% 0;
  }
}</code></pre>



<p class="wp-block-paragraph">¡Listo! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Solo necesitas copiar y pegar el HTML y CSS en tu proyecto. Estos loaders son ligeros, personalizables, y funcionales en cualquier navegador moderno. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>¿Cuál es tu favorito?</strong> Déjame tus comentarios. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60a.png" alt="😊" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"></p>
<p>La entrada <a href="https://miguelmanchego.com/2024/12/04/como-crear-4-spinners-loaders-con-css-puro/">Cómo Crear Spinners/Loaders con CSS Puro</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS agregar estilos a inputs para subir archivos</title>
		<link>https://miguelmanchego.com/2024/11/19/css-agregar-estilos-a-inputs-para-subir-archivos/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Tue, 19 Nov 2024 14:32:02 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<guid isPermaLink="false">https://miguelmanchego.com/?p=2233</guid>

					<description><![CDATA[<p>Estos estilos en campos de archivo están pensados para ser usados con Contact Form7 sin embargo pueden usarse con HTML puro u otro plugin, lo importante es fijarse en las clases usadas para que funcione. Usando HTML Usando Contact Form 7 Aplicando estilos CSS Estos estilos funcionan tanto para HTML como usando Contact Form7 en [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/11/19/css-agregar-estilos-a-inputs-para-subir-archivos/">CSS agregar estilos a inputs para subir archivos</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Estos estilos en campos de archivo están pensados para ser usados con Contact Form7 sin embargo pueden usarse con HTML puro u otro plugin, lo importante es fijarse en las clases usadas para que funcione.</p>



<h2 class="wp-block-heading">Usando HTML</h2>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;label class="uploader">
        &lt;span class="wpcf7-form-control-wrap" data-name="file-761">
            &lt;input size="40" class="wpcf7-form-control wpcf7-file" accept=".jpg,.png" aria-invalid="false" type="file" name="file-761">
        &lt;/span>
        &lt;span class="file-name-label">Seleccionar archivo&lt;/span>
    &lt;/label></code></pre>



<h2 class="wp-block-heading">Usando Contact Form 7</h2>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;label class="uploader">[file file-761 limit:5MB filetypes:jpg|png id:imagen1]&lt;span class="file-name-label">Seleccionar archivo&lt;/span>&lt;button type="button" class="remove-file-btn" style="display: none;">&amp;times;&lt;/button>&lt;/label></code></pre>



<h2 class="wp-block-heading">Aplicando estilos CSS</h2>



<p class="wp-block-paragraph">Estos estilos funcionan tanto para HTML como usando Contact Form7 en WordPress</p>



<pre class="wp-block-code"><code lang="css" class="language-css">.uploader {
    display: inline-block;
    padding: 10px;
    border: 2px solid #ccc;
    cursor: pointer;
}

/* Ocultamos el campo file y dejamos solo el label visible */
.uploader input[type="file"] {
    display: none; /* Hide default file input */
}

/* Cambiamos el color si se ha elegido un archivo */
.uploader.active {
    background-color: green;
    color: white;
}

.file-name-label {
    margin-left: 10px;
}</code></pre>



<h2 class="wp-block-heading">Mostrar el nombre del archivo seleccionado</h2>



<p class="wp-block-paragraph">Usando un poco de javascript haremos que al seleccionar un archivo aparezca el nombre dentro de la etiqueta label</p>



<pre class="wp-block-code"><code lang="javascript" class="language-javascript">document.addEventListener('DOMContentLoaded', function () {
    const fileInputs = document.querySelectorAll('.wpcf7-file');
    
    fileInputs.forEach(input => {
        input.addEventListener('change', function() {
            // Change background color to green for the specific file input's label
            const uploaderLabel = input.closest('.uploader');
            uploaderLabel.classList.add('active');

            // Display the filename in the label
            const fileName = input.files[0] ? input.files[0].name : 'Seleccionar archivo';
            const label = uploaderLabel.querySelector('.file-name-label');
            label.textContent = fileName;
        });
    });
});
</code></pre>



<p class="wp-block-paragraph">Se pueden agregar más detalles como por ejemplo que sean múltiples archivos para elegir o agregar un botón para retirar el archivo elegido</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="670" height="152" src="https://miguelmanchego.com/wp-content/uploads/2024/11/subir-archivo-css.webp" alt="" class="wp-image-2250" srcset="https://miguelmanchego.com/wp-content/uploads/2024/11/subir-archivo-css.webp 670w, https://miguelmanchego.com/wp-content/uploads/2024/11/subir-archivo-css-300x68.webp 300w" sizes="(max-width: 670px) 100vw, 670px" /></figure>



<p class="wp-block-paragraph"></p>
<p>La entrada <a href="https://miguelmanchego.com/2024/11/19/css-agregar-estilos-a-inputs-para-subir-archivos/">CSS agregar estilos a inputs para subir archivos</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS Animación efecto zoom y desenfoque con dos columnas</title>
		<link>https://miguelmanchego.com/2024/11/13/css-animacion-efecto-zoom-y-desenfoque-con-dos-columnas/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Wed, 13 Nov 2024 17:19:52 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[html]]></category>
		<guid isPermaLink="false">https://miguelmanchego.com/?p=2186</guid>

					<description><![CDATA[<p>En el diseño web, los efectos de animación pueden hacer que un sitio se vea mucho más interactivo y atractivo para los usuarios. Hoy veremos cómo lograr un efecto de zoom y desenfoque en columnas de imágenes usando CSS y HTML. Imaginemos que tenemos dos columnas, cada una con una imagen. Al pasar el cursor [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/11/13/css-animacion-efecto-zoom-y-desenfoque-con-dos-columnas/">CSS Animación efecto zoom y desenfoque con dos columnas</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">En el diseño web, los efectos de animación pueden hacer que un sitio se vea mucho más interactivo y atractivo para los usuarios. Hoy veremos cómo lograr un efecto de <strong>zoom y desenfoque en columnas de imágenes</strong> usando CSS y HTML.</p>



<p class="wp-block-paragraph">Imaginemos que tenemos dos columnas, cada una con una imagen. Al pasar el cursor sobre una columna, queremos que:</p>



<ol class="wp-block-list">
<li>La imagen de esa columna se amplíe (zoom).</li>



<li>La otra columna se desenfoque para dirigir la atención del usuario.</li>
</ol>



<p class="wp-block-paragraph">Veamos paso a paso cómo hacerlo:</p>



<h3 class="wp-block-heading">Estructura HTML Básica</h3>



<p class="wp-block-paragraph">Primero, estructuramos nuestro HTML para tener un contenedor con dos columnas. Cada columna contiene una imagen:</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;div class="container"&gt;
    &lt;div class="column" id="column1"&gt;
        &lt;img src="https://via.placeholder.com/400x600" alt="Imagen 1"&gt;
    &lt;/div&gt;
    &lt;div class="column" id="column2"&gt;
        &lt;img src="https://via.placeholder.com/400x600" alt="Imagen 2"&gt;
    &lt;/div&gt;
&lt;/div&gt;</code></pre>



<h3 class="wp-block-heading">Desenfoque de la Columna Adyacente con CSS</h3>



<p class="wp-block-paragraph">CSS por sí solo permite desenfocar un elemento adyacente en todos los navegadores que soporten el selector has, de lo contrario tendría que usarse Javascript.</p>



<p class="wp-block-paragraph">El código CSS necesario es:</p>



<pre class="wp-block-code"><code lang="css" class="language-css">* { margin: 0; padding: 0; }
        .container {
            display: flex;
            width: 100%;            
            margin: auto;
            height: 100vh; /* Fijas la altura para container */
            overflow: hidden;
        }

        .column {
            flex: 1;
            position: relative;
            overflow: hidden; /* Ocultas parte de la imagen que se hace zoom */
            transition: flex 0.5s ease;
        }

        .column img {
            width: 100%;
            height: 100%;
            object-fit: cover; /* Te aseguras que la imagen ocupe toda la columna sin distorcionarse */
            transition: transform 0.5s ease, filter 0.5s ease;
        }

        /* Aplicas el efecto a cada columna */
        .column:hover {
            flex: 1.2; /* Agrandas las columna */
        }

        .column:hover img {
            transform: scale(1.1); /* Escalas la imagen */
        }

                
        /* Aplicas el efecto de desenfoque en cada imagen */        
        .column:hover + .column img {    
            filter: blur(5px); 
        }

        .column:has(~ .column:hover) img {
            filter: blur(5px);            
        }    </code></pre>



<h3 class="wp-block-heading">Ver el efecto CSS funcionando</h3>



<p class="wp-block-paragraph">Puedes ver el efecto en <a href="https://miguelmanchego.com/samples/2024/efecto-zoom-desenfoque-css" target="_blank" rel="noreferrer noopener">este enlace</a></p>



<p class="wp-block-paragraph"></p>
<p>La entrada <a href="https://miguelmanchego.com/2024/11/13/css-animacion-efecto-zoom-y-desenfoque-con-dos-columnas/">CSS Animación efecto zoom y desenfoque con dos columnas</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>¿Cómo evitar que WordPress sea infectado?</title>
		<link>https://miguelmanchego.com/2024/11/13/como-evitar-que-wordpress-sea-infectado/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Wed, 13 Nov 2024 01:57:03 +0000</pubDate>
				<category><![CDATA[Desarrollo web]]></category>
		<category><![CDATA[Wordpress]]></category>
		<guid isPermaLink="false">https://miguelmanchego.com/?p=6</guid>

					<description><![CDATA[<p>Evitar que tu instalación de WordPress sea infectada por malware o ataques requiere implementar buenas prácticas de seguridad. Aquí hay algunas recomendaciones clave para proteger tu sitio: 1. Mantén WordPress actualizado 2. Usa contraseñas fuertes 3. Desactiva la edición de archivos desde el panel de administración 4. Instala plugins de seguridad Utiliza plugins de seguridad [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/11/13/como-evitar-que-wordpress-sea-infectado/">¿Cómo evitar que WordPress sea infectado?</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Evitar que tu instalación de WordPress sea infectada por malware o ataques requiere implementar buenas prácticas de seguridad. Aquí hay algunas recomendaciones clave para proteger tu sitio:</p>



<h3 class="wp-block-heading">1. <strong>Mantén WordPress actualizado</strong></h3>



<ul class="wp-block-list">
<li><strong>WordPress</strong>: Asegúrate de mantener tu instalación de WordPress actualizada a la última versión. Las actualizaciones frecuentes corrigen vulnerabilidades conocidas.</li>



<li><strong>Temas y Plugins</strong>: También actualiza tus temas y plugins regularmente. Los desarrolladores lanzan parches de seguridad para abordar vulnerabilidades.</li>
</ul>



<h3 class="wp-block-heading">2. <strong>Usa contraseñas fuertes</strong></h3>



<ul class="wp-block-list">
<li>Utiliza contraseñas robustas para todas las cuentas, especialmente para el administrador, usuarios, y bases de datos. Usa una combinación de letras, números y caracteres especiales.</li>



<li>Considera el uso de un <strong>gestor de contraseñas</strong> para generar y almacenar contraseñas fuertes.</li>
</ul>



<h3 class="wp-block-heading">3. <strong>Desactiva la edición de archivos desde el panel de administración</strong></h3>



<ul class="wp-block-list">
<li>WordPress permite editar los archivos del tema y los plugins desde el panel de administración. Si un atacante obtiene acceso al panel, podría modificar estos archivos.</li>



<li>Agrega la siguiente línea en el archivo <code>wp-config.php</code> para deshabilitar la edición:</li>
</ul>



<pre class="wp-block-code"><code lang="php" class="language-php line-numbers">define('DISALLOW_FILE_EDIT', true);</code></pre>



<h3 class="wp-block-heading">4. <strong>Instala plugins de seguridad</strong></h3>



<p class="wp-block-paragraph">Utiliza plugins de seguridad como:</p>



<ul class="wp-block-list">
<li><strong>Wordfence Security</strong>: Proporciona un firewall, protección contra ataques de fuerza bruta y un análisis de malware.</li>



<li><strong>Sucuri Security</strong>: Ofrece monitoreo de seguridad, auditoría y protección de sitios web.</li>



<li><strong>iThemes Security</strong>: Ofrece más de 30 configuraciones de seguridad para proteger tu instalación.</li>
</ul>



<h3 class="wp-block-heading">5. <strong>Realiza copias de seguridad regulares</strong></h3>



<p class="wp-block-paragraph">Haz copias de seguridad de tu sitio de manera regular (bases de datos, archivos, plugins, etc.) para poder restaurarlo rápidamente en caso de un ataque. Usa plugins como <strong>UpdraftPlus</strong> o <strong>BackupBuddy</strong>.</p>



<h3 class="wp-block-heading">6. <strong>Habilita un firewall de aplicaciones web (WAF)</strong></h3>



<p class="wp-block-paragraph">Un WAF ayuda a bloquear intentos de intrusión. Servicios como <strong>Cloudflare</strong> o <strong>Sucuri</strong> ofrecen WAF que protegen tu sitio de amenazas externas, ataques DDoS y otros tipos de ataques web.</p>



<h3 class="wp-block-heading">7. <strong>Restringe los intentos de inicio de sesión</strong></h3>



<ul class="wp-block-list">
<li>Limita los intentos de inicio de sesión para prevenir ataques de fuerza bruta. Usa plugins como <strong>Limit Login Attempts</strong> o la función de seguridad de <strong>Wordfence</strong> para hacer esto.</li>



<li>Si es posible, <strong>desactiva la opción de inicio de sesión de usuario &#8216;admin&#8217;</strong> para evitar ataques dirigidos a esta cuenta predeterminada.</li>
</ul>



<h3 class="wp-block-heading">8. <strong>Configura permisos de archivo adecuados</strong></h3>



<ul class="wp-block-list">
<li>Asegúrate de que los permisos de archivo en tu servidor estén configurados correctamente:
<ul class="wp-block-list">
<li><strong>Archivos</strong>: 644</li>



<li><strong>Directorios</strong>: 755</li>
</ul>
</li>



<li>Además, evita que archivos sensibles como <code>wp-config.php</code> sean accesibles públicamente. Usa una regla en el <code>.htaccess</code> para proteger estos archivos:</li>
</ul>



<pre class="wp-block-code"><code class="">&lt;Files wp-config.php&gt;
Order Deny,Allow
Deny from all
&lt;/Files&gt;
</code></pre>



<h3 class="wp-block-heading">9. <strong>Desactiva la ejecución de archivos en directorios no esenciales</strong></h3>



<ul class="wp-block-list">
<li>Algunos directorios como <code>wp-content/uploads</code> no deben contener archivos PHP. Si tienes acceso al servidor, puedes agregar una regla al archivo <code>.htaccess</code> para evitar que se ejecuten archivos PHP en estos directorios:</li>
</ul>



<pre class="wp-block-code"><code class="">&lt;Directory "/wp-content/uploads"&gt;
&lt;Files "*.php"&gt;
Deny from all
&lt;/Files&gt;
&lt;/Directory&gt;
</code></pre>



<h3 class="wp-block-heading">10. <strong>Utiliza HTTPS</strong></h3>



<ul class="wp-block-list">
<li>Asegúrate de que tu sitio esté utilizando HTTPS (certificado SSL). Esto cifrará los datos entre el navegador y el servidor, protegiendo la información sensible (como contraseñas e información personal) de los atacantes.</li>



<li>Puedes obtener certificados SSL gratuitos con servicios como <strong>Let&#8217;s Encrypt</strong>.</li>
</ul>



<h3 class="wp-block-heading">11. <strong>Revisa y elimina temas y plugins no utilizados</strong></h3>



<ul class="wp-block-list">
<li>Si tienes temas o plugins inactivos o no utilizados, elimínalos. Estos pueden ser un vector para ataques si contienen vulnerabilidades que no se actualizan.</li>
</ul>



<h3 class="wp-block-heading">12. <strong>Monitorea tu sitio web</strong></h3>



<ul class="wp-block-list">
<li>Realiza auditorías periódicas de seguridad en tu sitio y utiliza herramientas de monitoreo para detectar actividades sospechosas.</li>



<li>Plugins como <strong>WP Security Audit Log</strong> te permitirán llevar un registro detallado de las acciones en tu sitio.</li>
</ul>



<h3 class="wp-block-heading">13. <strong>Habilita el acceso mediante autenticación de dos factores (2FA)</strong></h3>



<ul class="wp-block-list">
<li>La autenticación de dos factores añade una capa adicional de seguridad en el proceso de inicio de sesión, evitando que los atacantes accedan con solo la contraseña.</li>
</ul>



<h3 class="wp-block-heading">14. <strong>Protege tu base de datos</strong></h3>



<ul class="wp-block-list">
<li>Cambia el nombre predeterminado de la base de datos, si es posible, y utiliza un prefijo personalizado para las tablas de WordPress, lo que dificulta los ataques dirigidos a bases de datos.</li>
</ul>



<h3 class="wp-block-heading">15. <strong>Revisa regularmente el código de tu sitio</strong></h3>



<ul class="wp-block-list">
<li>Examina periódicamente los archivos de tu instalación de WordPress en busca de código malicioso o alteraciones no autorizadas. Los ataques de malware suelen modificar archivos clave.</li>
</ul>



<h3 class="wp-block-heading">16. <strong>Utiliza un servidor de confianza</strong></h3>



<ul class="wp-block-list">
<li>Si es posible, usa un hosting especializado en WordPress con medidas de seguridad adecuadas. Algunos proveedores gestionan las actualizaciones y el monitoreo de seguridad de manera profesional.</li>
</ul>



<p class="wp-block-paragraph">Al aplicar estas recomendaciones de seguridad, minimizarás significativamente el riesgo de infección y ataques a tu sitio de WordPress. La seguridad es un proceso continuo, así que asegúrate de estar siempre alerta y actualizado.</p>
<p>La entrada <a href="https://miguelmanchego.com/2024/11/13/como-evitar-que-wordpress-sea-infectado/">¿Cómo evitar que WordPress sea infectado?</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>CSS y HTML: Crear listas con numeración decreciente</title>
		<link>https://miguelmanchego.com/2015/08/20/crear-listas-con-numeracion-invertida-con-css-y-html/</link>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Thu, 20 Aug 2015 21:46:10 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Otros]]></category>
		<guid isPermaLink="false">http://www.miguelmanchego.com/?p=1950</guid>

					<description><![CDATA[<p>Las listas ordenadas o tambien llamadas ordered list ( ) nos generan listas ordenadas, empezando desde el 1. Ejemplo: Pero seguro que muchos alguna vez han querido tener una lista con la numeracion invertida, algo así: 5. Item 1 4. Item 2 3. Item 3 2. Item 4 1. Item 5 Para lograr esto lo [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/08/20/crear-listas-con-numeracion-invertida-con-css-y-html/">CSS y HTML: Crear listas con numeración decreciente</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Las listas ordenadas o tambien llamadas ordered list (</p>



<ol class="wp-block-list">
<li></li>
</ol>



<p class="wp-block-paragraph">) nos generan listas ordenadas, empezando desde el 1. Ejemplo:</p>



<ol class="wp-block-list">
<li>Primero</li>



<li>Segundo</li>



<li>Tercero</li>
</ol>



<p class="wp-block-paragraph">Pero seguro que muchos alguna vez han querido tener una lista con la numeracion invertida, algo así:</p>



<p class="wp-block-paragraph">5. Item 1<br>
4. Item 2<br>
3. Item 3<br>
2. Item 4<br>
1. Item 5</p>



<p class="wp-block-paragraph">Para lograr esto lo haremos de dos maneras:</p>



<h2 class="wp-block-heading">Usando CSS</h2>



<p class="wp-block-paragraph">Para ello basta con el siguiente código:</p>



<pre class="wp-block-code"><code lang="css" class="language-css">ol {
counter-reset: c 10;
list-style: none;
}
li {
counter-increment: c -1;
}
li:before {
content: counter(c) ". ";
}</code></pre>



<p class="wp-block-paragraph">
Si te fijas en el «ol» pusimos «counter-reset: c 10» eso nos indica que empezara desde el 10, la letra «c» es el nombre del contador, se puede poner al gusto de uno.</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">En el «li» «counter-increment: c -1» con eso decrecerá en 1 por cada «li».</p>



<p class="wp-block-paragraph">Y en el «li:before» content: counter(c) «. » con esto pondremos el valor correspondiente.</p>



<p class="wp-block-paragraph">Aquí te dejo algunos ejemplos adicionales:</p>



<h2 class="wp-block-heading">Usando HTML</h2>



<p class="wp-block-paragraph">Para ello nos valdremos del atributo «reversed»</p>



<pre class="wp-block-code"><code lang="markup" class="language-markup">&lt;ol reversed="reversed">
 	&lt;li>Cinco&lt;/li>
 	&lt;li>Cuatro&lt;/li>
 	&lt;li>Tres&lt;/li>
 	&lt;li>Dos&lt;/li>
 	&lt;li>Uno&lt;/li>
&lt;/ol></code></pre>



<p class="wp-block-paragraph">
Con lo cual obtendremos:</p>



<p class="wp-block-paragraph"></p>



<ol reversed class="wp-block-list">
<li>Cinco</li>



<li>Cuatro</li>



<li>Tres</li>



<li>Dos</li>



<li>Uno</li>
</ol>



<p class="wp-block-paragraph"></p>
<p>La entrada <a href="https://miguelmanchego.com/2015/08/20/crear-listas-con-numeracion-invertida-con-css-y-html/">CSS y HTML: Crear listas con numeración decreciente</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>jQuery: Llamar HTML sin recargar la página</title>
		<link>https://miguelmanchego.com/2015/04/09/jquery-lllamar-html-sin-recargar-la-pagina/</link>
					<comments>https://miguelmanchego.com/2015/04/09/jquery-lllamar-html-sin-recargar-la-pagina/#comments</comments>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Thu, 09 Apr 2015 17:21:25 +0000</pubDate>
				<category><![CDATA[AJAX]]></category>
		<guid isPermaLink="false">http://www.miguelmanchego.com/?p=1937</guid>

					<description><![CDATA[<p>Muchas veces queremos llamar HTML sin necesidad de tener que actualizar toda la página, para ello jQuery nos brinda la funcion «.load()». Para explicar esta función haremos un pequeño ejemplo: Necesitamos un botón o link para que en el evento click se cargue el HTML, y un contenedor «div» donde queremos que se muestre lo [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/04/09/jquery-lllamar-html-sin-recargar-la-pagina/">jQuery: Llamar HTML sin recargar la página</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Muchas veces queremos llamar HTML sin necesidad de tener que actualizar toda la página, para ello jQuery nos brinda la funcion «.load()».</p>
<p>Para explicar esta función haremos un pequeño ejemplo:<br />
Necesitamos un botón o link para que en el evento click se cargue el HTML, y un contenedor «div» donde queremos que se muestre lo que cargaremos.<br />
El HTML a usar será:<br />
[cc lang=»html»]<br />
<input type="button" id="boton" value="Cargar html externo" /> <input type="button" value="Reiniciar" class="reiniciar" /></p>
<div id="htmlext" class="recargar">
            Aqui se cargará el contenido
    </div>
<p>[/cc]</p>
<p>Para ver el ejemplo en funcionamiento podemos ir <a href="http://miguelmanchego.com/samples/2015/recargarpaginajquery/" title="Ejemplos llamar pagina jquery">AQUÍ</a></p>
<p>La estructura para load() es, primero el contenedor «$(«htmltext»)», de ahi «.(load)» y la url del html a cargar «(&#8216;ejemplo1.html&#8217;)»;<br />
Entonces en el evento click del botón pondremos lo siguiente:<br />
[cc lang=»javascript»]<br />
$(«#boton»).click(function(event) {<br />
        $(«#htmlext»).load(&#8216;ejemplo1.html&#8217;);<br />
    });<br />
[/cc]</p>
<p>Aparte de esto .load() nos permite llamar solo parte del HTML. Para ello agregaremos a la URL el nombre del div que queremos cargar «div#cargar-soloesto».<br />
[cc lang=»javascript»]<br />
$(«#boton2»).click(function(event) {<br />
       $(«#htmlext2»).load(&#8216;ejemplo1.html div#cargar-soloesto&#8217;);<br />
    });<br />
[/cc]</p>
<p>.load() tambien nos permite interactuar con archivos php, asi como enviar variables via «POST»:<br />
[cc lang=»javascript»]<br />
$(«#boton3»).click(function(event) {<br />
        $(«#phpextget»).load(&#8216;ejemplo2.php&#8217;,{<br />
            &#8216;var1&#8242;:&#8217;Valor 1&#8217;,<br />
            &#8216;var2&#8242;:&#8217;Valor 2&#8217;<br />
            });<br />
    });<br />
[/cc]</p>
<p>[social-download button_id=»a8357ad76c6889d3f» dl_id=»http://www.miguelmanchego.com/samples/2015/recargarpaginajquery/recargarpaginajquery.zip» theme=»blue» message=»Comparte el post para descargar todos los archivos de los ejemplos» facebook=»true» likeurl=»CURRENT» google=»true» googleurl=»CURRENT» tweet=»true» tweettext=» @xlogus» tweeturl=»CURRENT» follow=»true» linkedin=»true» linkedinurl=»CURRENT»/]</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/04/09/jquery-lllamar-html-sin-recargar-la-pagina/">jQuery: Llamar HTML sin recargar la página</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://miguelmanchego.com/2015/04/09/jquery-lllamar-html-sin-recargar-la-pagina/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>CCS3: Efectos hover para tus menús</title>
		<link>https://miguelmanchego.com/2015/04/08/ccs3-efectos-hover-para-tus-menus/</link>
					<comments>https://miguelmanchego.com/2015/04/08/ccs3-efectos-hover-para-tus-menus/#comments</comments>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Wed, 08 Apr 2015 20:14:24 +0000</pubDate>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Diseño]]></category>
		<category><![CDATA[html]]></category>
		<guid isPermaLink="false">http://www.miguelmanchego.com/?p=1910</guid>

					<description><![CDATA[<p>Un buen sitio web necesita de una navegación simple, atráctiva y eficiente. Para ello no necesitamos recurrir a herramientas complejas, sino que con simples trucos de CSS3 se puede crear menus muy buenos.</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/04/08/ccs3-efectos-hover-para-tus-menus/">CCS3: Efectos hover para tus menús</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Un buen sitio web necesita de una navegación simple, atráctiva y eficiente. Para ello no necesitamos recurrir a herramientas complejas, sino que con simples trucos de CSS3 se puede crear menus muy buenos.</p>
<p>Aquí te pondré unos ejemplos sencillos de efectos hover para tus menús; para que puedas copiarlos y modificarlos a tu gusto.<br />
Para ver todos los ejemplos puedes ir <a href="http://miguelmanchego.com/samples/2015/hovermenus/">AQUÍ</a>.</p>
<p>Como base del menú usaremos «ul», «li» y «a»; en algunos casos agregaremos «span» para dar algun efecto especial.<br />
[cc lang=»html» width=»100%»]</p>
<ul id="ejm1">
<li><a href="#" title="Link 1"><span>Link 1</span></a></li>
<li><a href="#" title="Link 2"><span>Link 2</span></a></li>
<li><a href="#" title="Link 3"><span>Link 3</span></a></li>
<li><a href="#" title="Link 4"><span>Link 4</span></a></li>
<li><a href="#" title="Link 5"><span>Link 5</span></a></li>
</ul>
<p>[/cc]</p>
<p>El css base será:<br />
[cc lang=»css» width=»100%»]<br />
    ul{list-style:none;margin:0px;padding:0px;clear:both;}<br />
    ul li{margin:0px 10px;padding:0px;float:left;}<br />
    ul li a{display:block;text-decoration:none}<br />
[/cc]</p>
<h3>Ejemplo 1</h3>
<p><img decoding="async" src="http://www.miguelmanchego.com/wp-content/uploads/2015/04/ejm1.jpg" alt="ejm1" width="408" height="53" class="alignnone size-full wp-image-1915" /></p>
<p>En este ejemplo haremos que en el hover la letras cambien de color de izquierda a derecha.<br />
Para ello usaremos de base el siguiente html:<br />
[cc lang=»html» width=»100%»]</p>
<ul id="ejm1">
<li><a href="#" title="Link 1">Link 1</a></li>
<li><a href="#" title="Link 2">Link 2</a></li>
<li><a href="#" title="Link 3">Link 3</a></li>
<li><a href="#" title="Link 4">Link 4</a></li>
<li><a href="#" title="Link 5">Link 5</a></li>
</ul>
<p>[/cc]</p>
<p>Para generar este efecto nos valdremos del selector «:before» y la propiedad «content»; con esta propiedad podemos poner el texto que deseemos via css, le daremos el valor «attr(title)» quiere decir que del atributo title del «a» copiaremos su valor y lo asignaremos al «:before».<br />
Para la animación usaremos la propiedad max-width, que variará de 0% a 100% en el hover, para evitar que el texto aparezca en 2 lineas debido al variar el «max-width» usaremos «white-space: nowrap».<br />
Nuestro css quedaría así:<br />
[cc lang=»css» width=»100%»]<br />
    ul#ejm1 li a{<br />
        position: relative;<br />
        color:#ED1C24;<br />
        font-weight:bold;<br />
    }<br />
    ul#ejm1 li a:before{<br />
        position: absolute;<br />
        color:#005496;<br />
        content:attr(title);<br />
        left:0px;<br />
        top:0px;<br />
        max-width:0%;<br />
        white-space: nowrap;<br />
        overflow:hidden;<br />
        transition: max-width 0.3s linear<br />
    }<br />
    ul#ejm1 li a:hover:before{<br />
        max-width:100%;<br />
    }<br />
[/cc]</p>
<h3>Ejemplo 2</h3>
<p><img decoding="async" src="http://www.miguelmanchego.com/wp-content/uploads/2015/04/ejemplo2.jpg" alt="ejemplo2" width="408" height="49" class="alignnone size-full wp-image-1916" /></p>
<p>Para el ejemplo 2 haremos que aparezca una pequeña linea debajo del texto.</p>
<p>Nuestro HTML a usar será<br />
[cc lang=»html» width=»100%»]</p>
<ul id="ejm2">
<li><a href="#" title="Link 1">Link 1</a></li>
<li><a href="#" title="Link 2">Link 2</a></li>
<li><a href="#" title="Link 3">Link 3</a></li>
<li><a href="#" title="Link 4">Link 4</a></li>
<li><a href="#" title="Link 5">Link 5</a></li>
</ul>
<p>[/cc]</p>
<p>Para lograr este efecto usaremos el selector «:after» con un height en «position: absolute», con «bottom: 0px», «opacity:0» y lo moveremos 20px para abajo con «transform: translateY(20px)», al hover haremos que aparezca «opacity:1» y para que de el efecto que aparece desde abajo con «transform: translateY(15px)».</p>
<p>Nos quedaría:<br />
[cc lang=»css» width=»100%»]<br />
    ul#ejm2 li a{<br />
        position: relative;<br />
        font-weight:bold;<br />
        color:#0E83CD;<br />
        margin: 0px 15px;<br />
    }<br />
    ul#ejm2 li a:after{<br />
        position: absolute;<br />
        bottom: 7px;<br />
        left: 0px;<br />
        width: 100%;<br />
        height: 4px;<br />
        background-color: #FFD743;<br />
        content: «»;<br />
        opacity: 0;<br />
        transition: opacity 0.3s ease 0s, transform 0.3s ease 0s;<br />
        transform: translateY(20px);<br />
    }<br />
    ul#ejm2 li a:hover:after{<br />
        opacity:1;<br />
        transform: translateY(15px)<br />
    }<br />
[/cc]</p>
<h3>Ejemplo 3</h3>
<p><img loading="lazy" decoding="async" src="http://www.miguelmanchego.com/wp-content/uploads/2015/04/ejm3.jpg" alt="ejm3" width="408" height="57" class="alignnone size-full wp-image-1917" /></p>
<p>En el ejemplo 3 haremos un efecto que parece a una tarjeta deslizandose sobre la otra.<br />
HTML base será:<br />
[cc lang=»html» width=»100%»]</p>
<ul id="ejm3">
<li><a href="#" title="Link 1"><span>Link 1</span></a></li>
<li><a href="#" title="Link 2"><span>Link 2</span></a></li>
<li><a href="#" title="Link 3"><span>Link 3</span></a></li>
<li><a href="#" title="Link 4"><span>Link 4</span></a></li>
<li><a href="#" title="Link 5"><span>Link 5</span></a></li>
</ul>
<p>[/cc]<br />
Para obtener este efecto de tarjetas deslizandose usaremos el «span» y el «:before»; y colocaremos uno encima del otro para ello el «:before» será «position: absolute» y para la animación se deslizara el span sobre el «:before» con «transform: translateX(100%)».</p>
<p>El CSS quedaría:<br />
[cc lang=»css» width=»100%»]<br />
    ul#ejm3 li a{<br />
        position: relative;<br />
        color:#FFF;<br />
        overflow:hidden;<br />
    }<br />
    ul#ejm3 li a:before{<br />
        position: absolute;<br />
        top: 0px;<br />
        left: 0px;<br />
        z-index: 1;<br />
        padding: 10px 20px;<br />
        background: none repeat scroll 0% 0% #FFF;<br />
        color: #0F7C67;<br />
        content: attr(title);<br />
        transition: transform 0.3s ease 0s;<br />
    }<br />
    ul#ejm3 li a span{<br />
        display: block;<br />
        position: relative;<br />
        padding: 10px 20px;<br />
        background: none repeat scroll 0% 0% #0F7C67;<br />
        transition: transform 0.3s ease 0s;<br />
        z-index: 2;<br />
    }</p>
<p>    ul#ejm3 li a:hover span{<br />
        transform: translatex(100%);<br />
    }<br />
[/cc]</p>
<h3>Ejemplo 4</h3>
<p><img loading="lazy" decoding="async" src="http://www.miguelmanchego.com/wp-content/uploads/2015/04/ejm4.jpg" alt="ejm4" width="408" height="80" class="alignnone size-full wp-image-1918" /></p>
<p>Para el ejemplo 4 haremos un efecto de bajo relieve en el hover.<br />
Nuestro HTML base será:<br />
[cc lang=»html» width=»100%»]</p>
<ul id="ejm4">
<li><a href="#" title="Link 1">Link 1</a></li>
<li><a href="#" title="Link 2">Link 2</a></li>
<li><a href="#" title="Link 3">Link 3</a></li>
<li><a href="#" title="Link 4">Link 4</a></li>
<li><a href="#" title="Link 5">Link 5</a></li>
</ul>
<p>[/cc]<br />
Para este efecto usaremos transparecia en el color de la letra «color: rgba(0, 0, 0, 0.2);» y al «:before» lo pondremos encima y al hacer hover se reducira «transform: scale(0.9)» y desaparecera «opacity: 0&#8243; dejando el el link con el efecto de bajo relieve.<br />
[cc lang=»css» width=»100%»]<br />
    ul#ejm4{<br />
        background-color:#0E83CD;<br />
        overflow:hidden;<br />
        padding:20px 10px<br />
    }<br />
    ul#ejm4 li a{<br />
        position: relative;<br />
        color: rgba(0, 0, 0, 0.2);<br />
        overflow:hidden;<br />
    }<br />
    ul#ejm4 li a::before {<br />
        color: #FFF;<br />
        content: attr(title);<br />
        position: absolute;<br />
        transition: transform 0.3s ease 0s, opacity 0.3s ease 0s;<br />
    }<br />
    ul#ejm4 li a:hover::before {<br />
        transform: scale(0.9);<br />
        opacity: 0;<br />
    }<br />
[/cc]</p>
<h3>Ejemplo 5</h3>
<p><img loading="lazy" decoding="async" src="http://www.miguelmanchego.com/wp-content/uploads/2015/04/ejm5.jpg" alt="ejm5" width="408" height="91" class="alignnone size-full wp-image-1919" /></p>
<p>En este ejemplo haremos una pequeña transición 3D que simulara un cubo que gira al hacer hover al link.<br />
Usaremos el siguiente HTML:<br />
[cc lang=»html» width=»100%»]</p>
<ul id="ejm5">
<li><a href="#" title="Link 1"><span data-title="Link 1">Link 1</span></a></li>
<li><a href="#" title="Link 2"><span data-title="Link 1">Link 2</span></a></li>
<li><a href="#" title="Link 3"><span data-title="Link 1">Link 3</span></a></li>
<li><a href="#" title="Link 4"><span data-title="Link 1">Link 4</span></a></li>
<li><a href="#" title="Link 5"><span data-title="Link 1">Link 5</span></a></li>
</ul>
<p>[/cc]</p>
<p>Para ellos usaremos el «span» y el «:before» con lo cual rotaremos una encima de la otra para emular el efecto, el css quedaría:<br />
[cc lang=»css» width=»100%»]<br />
    ul#ejm5{<br />
        background-color:#3FA46A;<br />
        overflow:hidden;<br />
        padding:20px 10px<br />
    }<br />
    ul#ejm5 li a{<br />
        position: relative;<br />
        line-height:40px;<br />
        overflow:hidden;<br />
        color:#fff;<br />
        perspective: 1000px;<br />
    }<br />
    ul#ejm5 li a span{<br />
        position: relative;<br />
        display: inline-block;<br />
        padding: 0px 14px;<br />
        background: #247547;<br />
        transition: transform 0.3s ease 0s;<br />
        transform-origin: 50% 0px 0px;<br />
        transform-style: preserve-3d;<br />
    }<br />
    ul#ejm5 li a span:before{<br />
        position: absolute;<br />
        top: 100%;<br />
        left: 0px;<br />
        width: 100%;<br />
        height: 100%;<br />
        padding: 0px 14px;<br />
        background:  #2e8d57;<br />
        content: attr(data-title);<br />
        transition: #000 0.3s ease 0s;<br />
        transform: rotateX(-90deg);<br />
        transform-origin: 50% 0px 0px;<br />
    }<br />
    ul#ejm5 li a:hover span {<br />
        transform: rotateX(90deg) translateY(-22px);<br />
    }<br />
    ul#ejm5 li a:hover span::before {<br />
        background:  0% 0% #2e8d57;<br />
    }<br />
[/cc]</p>
<p>Para ver todos los ejemplos puedes ir <a href="http://miguelmanchego.com/samples/2015/hovermenus/">AQUÍ</a><br />
[social-download button_id=»a8357ad76c6889d3f» dl_id=»www.miguelmanchego.com/samples/2015/hovermenus/hovermenus.zip» theme=»blue» message=»Comparte el post para descargar todos los archivos de los ejemplos» facebook=»true» likeurl=»CURRENT» google=»true» googleurl=»CURRENT» tweet=»true» tweettext=» @xlogus» tweeturl=»CURRENT» follow=»true» linkedin=»true» linkedinurl=»CURRENT»/]</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/04/08/ccs3-efectos-hover-para-tus-menus/">CCS3: Efectos hover para tus menús</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://miguelmanchego.com/2015/04/08/ccs3-efectos-hover-para-tus-menus/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>HTML5: combo con campos condicionales</title>
		<link>https://miguelmanchego.com/2015/04/02/html5-combo-con-campos-condicionales/</link>
					<comments>https://miguelmanchego.com/2015/04/02/html5-combo-con-campos-condicionales/#comments</comments>
		
		<dc:creator><![CDATA[miguelmr]]></dc:creator>
		<pubDate>Thu, 02 Apr 2015 16:54:22 +0000</pubDate>
				<category><![CDATA[html]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[formulario]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<guid isPermaLink="false">http://www.miguelmanchego.com/?p=1899</guid>

					<description><![CDATA[<p>En este tutorial veremos como crear un formulario cuyos campos dependan de un combo, el ejemplo se puede cambiar para usar cualquier tipo de campos o cualquier cantidad basta con alterar las opciones contenidas en el div «opciones». Lo primero es crear el combo #tipo con sus opciones, allí debemos fijarnos que los value sean [&#8230;]</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/04/02/html5-combo-con-campos-condicionales/">HTML5: combo con campos condicionales</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>En este tutorial veremos como crear un formulario cuyos campos dependan de un combo, el ejemplo se puede cambiar para usar cualquier tipo de campos o cualquier cantidad basta con alterar las opciones contenidas en el div «opciones».</p>
<p>Lo primero es crear el combo #tipo con sus opciones, allí debemos fijarnos que los value sean iguales a los ID de los div que están dentro de «opciones», de esta forma al elegir una opción se usará el contenido del div respectivo.</p>
<p>[cc lang=»html»]<br />
<select id="tipo" name="tipo" onchange="elegir_opcion(this);"><option value="">Elija un tipo</option><option value="op1">Tipo 1</option><option value="op2">Tipo 2</option><option value="op3">Tipo 3</option></select></p>
<p>[/cc]</p>
<h3>Crear las opciones del formulario</h3>
<p>[cc lang=»html»]</p>
<div class="opciones">
<div id="op1">
<form>Nombre: <input name="op1" required="required" size="30" type="text" /></p>
<p>Direccion: <input name="op1" size="30" type="text" /></p>
<p>DNI: <input name="op1" size="30" type="text" /></p>
<p><input class="btn" name="submit" type="submit" value="ENVIAR" /></form>
</div>
<div id="op2">
<form>Razón Social: <input name="op1" required="required" size="30" type="text" /></p>
<p>Direccion: <input name="op1" required="required" size="30" type="text" /></p>
<p>RUC: <input name="op1" size="30" type="text" /></p>
<p><input class="btn" name="submit" type="submit" value="ENVIAR" /></form>
</div>
</div>
<p>[/cc]</p>
<p>Podrían alterar la posición de la etiqueta form para que capture también al combo principal o incluso más campos que sean fijos, ya es cuestión de jugar un poco con el código.<br />
Para añadir más opciones basta añadir más div con ID op3, op4, op5, etc y esos mismos valores ponerlos en el combo principal.</p>
<h3>El Javascript del Combo y los campos dependientes</h3>
<p>[cc lang=»javascript»]<br />
function elegir_opcion(combo) {<br />
$tipo = jQuery(combo).val();<br />
$campos = jQuery(«#»+$tipo).html();<br />
jQuery(«.opcionesWrapper»).html($campos);<br />
}<br />
[/cc]</p>
<p>Yo he usado una función muy sencilla que simplemente captura la opción elegida, en la segunda línea captura los campos que corresponden a dicha opción y en la última línea coloca esos campos en un div contenedor, podrían hacer que el combo no invoque a la función sino que jQuery capture ele evento pero no lo he puesto para no complicar ele ejemplo y sea muy claro su funcionamiento.</p>
<p>Si te ha gustado este tutorial y os parece util no olvideis compartirlo o darle tweet además así podrán descargar los archivos del ejemplo o pueden ver el ejemplo funcionando <a href="http://miguelmanchego.com/samples/2015/combo-campos-condicionales.html" target="_blank">AQUI</a></p>
<p>&nbsp;</p>
<p>[social-download button_id=»589f49b0d3e67e307&#8243; dl_id=»http://www.miguelmanchego.com/wp-content/uploads/2015/04/combo-campos-condicionales.zip» theme=»blue» message=»Compartelo para descargar el ejemplo de los campos condicionales» facebook=»true» likeurl=»CURRENT» google=»true» googleurl=»CURRENT» tweet=»true» tweettext=»Tutorial para crear Campos condicionales #html5 @XLogus @xlogus» tweeturl=»CURRENT» follow=»true» linkedin=»true» linkedinurl=»CURRENT»/]</p>
<p>La entrada <a href="https://miguelmanchego.com/2015/04/02/html5-combo-con-campos-condicionales/">HTML5: combo con campos condicionales</a> se publicó primero en <a href="https://miguelmanchego.com">Miguel Manchego desarrollo web</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://miguelmanchego.com/2015/04/02/html5-combo-con-campos-condicionales/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
	</channel>
</rss>
