1040638

HTML de images una a continuacion de otra en vertical, con link

HTML de images una a continuacion de otra en vertical, con link.


Codigo HTML

<!DOCTYPE html>

<html lang="es">

<head>

  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <title>Widget Personalizado</title>

  <style>

    #widget-title {

      background-color: #2a2a2a; /* Fondo oscuro para el título */

      color: #f9f9f9; /* Texto claro */

      padding: 2px; /* Espacio vertical reducido */

      text-align: center;

      font-family: Arial, sans-serif;

      font-size: 14px;

      font-weight: bold;

      border-bottom: 2px solid #ff0000; /* Línea inferior roja */

      width: 180px; /* Ancho ajustado para coincidir con el contenedor */

      border-top-left-radius: 0px; /* Borde redondeado izquierdo */

      border-top-right-radius: 30px; /* Borde redondeado derecho */

    }


    #widget-container {

      border: 2px solid #333; /* Borde alrededor del contenedor */

      box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sombra */

      background-color: #f9f9f9; /* Fondo claro */

      border-radius: 0 0 5px 5px; /* Solo bordes redondeados en la parte inferior */

      width: 180px; /* Ancho del cuadro */

      max-height: 600px; /* Altura máxima del widget */

      overflow-y: auto; /* Scroll si el contenido es largo */

    }


    #text-container {

      padding: 0; /* Elimina padding para evitar espacios adicionales */

    }


    /* Clase base para todas las imágenes con tamaño uniforme */

    .ad-image {

      width: 180px; /* Tamaño uniforme basado en la primera imagen */

      height: 150px; /* Tamaño uniforme basado en la primera imagen */

      object-fit: cover; /* Ajusta la imagen al contenedor, recortando si es necesario */

      margin: 2px 0; /* Espacio vertical reducido entre imágenes */

      display: block; /* Evita espacios adicionales causados por el diseño en línea */

    }


    /* Clases personalizadas para tamaños editables (opcional) */

    .custom-size-1 {

      width: 180px;

      height: 120px;

    }


    .custom-size-2 {

      width: 180px;

      height: 180px;

    }


    /* Asegura que las imágenes dentro de image-container usen el tamaño definido */

    #text-container .image-container img {

      max-width: 100%; /* Asegura que las imágenes no excedan el ancho del contenedor */

      height: auto; /* Mantiene la proporción si no se especifica un tamaño fijo */

    }

  </style>

</head>

<body>

  <div id="widget-title">Publicidad:</div>

  <div id="widget-container">

    <div id="text-container">

      <!-- Nota: Todas las imágenes tienen enlaces que redirigen a una nueva ventana (target="_blank") -->

      <div class="image-container">

        <a href="https://rebrand.ly/MasSeriesGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_c222aa29473d4fc788991f5cc97c1f3a~mv2.jpg" alt="Series en HD y Full HD BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/SeriesOnlineGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_383dad72170b4c65a4f5b0c26f8bf4bd~mv2.jpg" alt="Ver series online BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/MasCursosGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_3cd6703883c34735a932058266afe8fc~mv2.jpg" alt="Cursos Gratuitos" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/MasAnimeGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_39321f3aee354243a9733b8ddd10d9cc~mv2.jpg" alt="Anime BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/MasJuegosGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_b6e478a9bfee492bbbfa39b6243fbca3~mv2.jpg" alt="Juegos BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/AplicacionesParaCelular" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_320f1f988f114f57980538845a2fb705~mv2.jpg" alt="Aplicaciones BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/MasLibrosGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_5b1ba7c521c443499a05bb213da512ce~mv2.jpg" alt="Libros BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/MasProgramasGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/705c45_e83c7202aa394d81b123bd3feb17df58~mv2.jpg" alt="Programas BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/JuegosDeSteamGratis" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/9335aa_49913b4d8d4b4656a67e2cf131d24f3e.jpg" alt="Steam Games BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

      <div class="image-container">

        <a href="https://rebrand.ly/mundoalojamientowebcontacto" target="_blank" rel="noreferrer noopener">

          <img src="https://static.wixstatic.com/media/9335aa_f911e329112849a7adda29c08dd9f86b.gif" alt="Contacto BrayanRocker.jpg" class="ad-image">

        </a>

      </div>

    </div>

  </div>

</body>

</html>


DEMO:

Widget Personalizado

Publicidad:



+++++++++++++++++++++++++++++
A CONTINUACION OTRO MODELO
+++++++++++++++++++++++++++++

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Widget Personalizado</title>
  <style>
    #widget-title {
      background-color: #2a2a2a; /* Fondo oscuro para el título */
      color: #f9f9f9; /* Texto claro */
      padding: 2px; /* Espacio vertical reducido */
      text-align: center;
      font-family: Arial, sans-serif;
      font-size: 14px;
      font-weight: bold;
      border-bottom: 2px solid #ff0000; /* Línea inferior roja */
      width: 180px; /* Ancho ajustado para coincidir con el contenedor */
      border-top-left-radius: 0px; /* Borde redondeado izquierdo */
      border-top-right-radius: 30px; /* Borde redondeado derecho */
    }

    #widget-container {
      border: 2px solid #333; /* Borde alrededor del contenedor */
      box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Sombra */
      background-color: #f9f9f9; /* Fondo claro */
      border-radius: 0 0 5px 5px; /* Solo bordes redondeados en la parte inferior */
      width: 180px; /* Ancho del cuadro */
      max-height: 600px; /* Altura máxima del widget */
      overflow-y: auto; /* Scroll si el contenido es largo */
    }

    #text-container {
      padding: 0; /* Elimina padding para evitar espacios adicionales */
    }

    /* Clase base para todas las imágenes con tamaño uniforme */
    .ad-image {
      width: 180px; /* Tamaño uniforme basado en la primera imagen */
      height: 150px; /* Tamaño uniforme basado en la primera imagen */
      object-fit: cover; /* Ajusta la imagen al contenedor, recortando si es necesario */
      margin: 2px 0; /* Espacio vertical reducido entre imágenes */
      display: block; /* Evita espacios adicionales causados por el diseño en línea */
    }

    /* Clases personalizadas para tamaños editables (opcional) */
    .custom-size-1 {
      width: 180px;
      height: 120px;
    }

    .custom-size-2 {
      width: 180px;
      height: 180px;
    }

    /* Asegura que las imágenes dentro de image-container usen el tamaño definido */
    #text-container .image-container img {
      max-width: 100%; /* Asegura que las imágenes no excedan el ancho del contenedor */
      height: auto; /* Mantiene la proporción si no se especifica un tamaño fijo */
    }

    /* Estilo para el mensaje de error */
    #error-message {
      color: red;
      text-align: center;
      font-family: Arial, sans-serif;
      font-size: 12px;
      padding: 5px;
    }
  </style>
</head>
<body>
  <div id="widget-title">Publicidad:</div>
  <div id="widget-container">
    <div id="text-container"></div>
    <div id="error-message"></div>
  </div>

  <script>
    // URL del JSON en GitHub (reemplaza con tu URL real)
    const jsonUrl = 'https://raw.githubusercontent.com/BRAYANROCKER/images.jso/refs/heads/main/images.json';

    // Función para cargar las imágenes dinámicamente
    fetch(jsonUrl)
      .then(response => {
        if (!response.ok) {
          throw new Error('No se pudo cargar el JSON');
        }
        return response.json();
      })
      .then(data => {
        const textContainer = document.getElementById('text-container');
        
        // Iterar sobre las imágenes del JSON
        data.images.forEach(image => {
          // Crear el contenedor de la imagen
          const imageContainer = document.createElement('div');
          imageContainer.classList.add('image-container');

          // Crear el enlace
          const link = document.createElement('a');
          link.href = image.url;
          link.target = '_blank'; // Abrir en nueva pestaña
          link.rel = 'noreferrer noopener'; // Seguridad

          // Crear la imagen
          const img = document.createElement('img');
          img.src = image.imgSrc;
          img.alt = image.alt;
          img.classList.add('ad-image'); // Aplicar el estilo uniforme

          // Añadir la imagen al enlace y el enlace al contenedor
          link.appendChild(img);
          imageContainer.appendChild(link);
          textContainer.appendChild(imageContainer);
        });
      })
      .catch(error => {
        console.error('Error al cargar las imágenes:', error);
        document.getElementById('error-message').textContent = 'Error al cargar las imágenes. Revisa la URL del JSON.';
      });
  </script>
</body>
</html>

DEMO:
Widget Personalizado
Publicidad:
+++++++

IMAGENES USADAS: