martes, 21 de julio de 2026

✨ CÓMO ALINEAR IMÁGENES EN BLOGGER

🌸 Holi, vi una notita de esto en spectrummomi.blogspot.com y lo haré paso a paso 🌸
PASO 1

🖼️ Inserta tu imagen

En la entrada que estés editando, haz clic en el ícono de imagen y súbela desde tu computadora o desde la web.

Ejemplo de imagen insertada en Blogger

📸 Así se ve tu imagen al insertarla

PASO 2

👆 Haz clic sobre la imagen

Al seleccionarla, aparecerá un pequeño menú flotante justo debajo de ella con tres opciones de alineación.

Alinear izquierda Izquierda Centrar Centrada Alinear derecha Derecha

🎯 Estos tres botoncitos son tus nuevos mejores amigos

PASO 3

🧭 Elige la alineación que prefieras

Cada opción tiene un efecto diferente en el diseño de tu entrada:

Botón ¿Qué hace? ¿Cuándo usarlo?
⬅️ Izquierda La imagen va a la izquierda y el texto la rodea por la derecha. Perfecto para textos largos.
⬛ Centrada La imagen queda en medio, sola, con texto arriba y abajo. Ideal para títulos o fotos destacadas.
➡️ Derecha La imagen va a la derecha y el texto la rodea por la izquierda. Para dar variedad en el diseño.
⬅️ Izquierda: [IMAGEN A LA IZQUIERDA] Texto que fluye a su alrededor, como un río que abraza una piedra. Se ve súper natural y bonito.
⬛ Centrada: [IMAGEN CENTRADA] — El texto queda arriba y abajo. Ideal para fotografías importantes.
➡️ Derecha: [IMAGEN A LA DERECHA] Texto que se acomoda a la izquierda, dando un efecto moderno y dinámico.
✨ TRUCO DE ORO

🌟 Recomendación estrella

🟡 Primero alinea la imagen, y después escribe el texto alrededor.

¿Por qué? Porque Blogger es más amigable cuando la imagen ya tiene su posición fija. Así puedes modificar el texto sin que la imagen se mueva de lugar. ¡Te ahorrarás muchos dolores de cabeza! 🧠💆‍♀️

domingo, 19 de julio de 2026

🎨 TUTORIAL DEL CÓDIGO DEL PAINT

Aprende a implementar este widget clásico de Paint en tu blog

📌 Código tal como está en mi blog — Copia y pega este código en tu entrada de Blogger

💡 Consejo: Copia todo el código dentro de un widget de HTML en Blogger o directamente en la vista de edición HTML de tu entrada.

contador de visitas

🌸

TUTORIAL DEL CONTADOR DE VISITAS

🌸

✨ Aprende a agregar un contador de visitas a tu blog ✨

🌸 Okurr, cabe aclarar que para tener un contador real deberá usar algún contador externo o un sistema de datos como MySQL; entonces eso es más complicado. Este gadget lo que permite es que cuente las veces que han entrado ustedes a su blog, no cuántas personas lo han visitado.

✨ Bueno, el código se lo dejaré tal como lo tengo yo en mi blog.

💜 Código 100% funcional 📱 Responsive

🌸 CÓDIGO DEL CONTADOR 🌸

📋 COPIA ESTE CÓDIGO
<style> /* === CONTADOR LILA COMPACTO PARA BLOGGER === */ .lila-counter-box { background: rgba(255, 248, 255, 0.80); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1.5px solid rgba(200, 160, 230, 0.35); border-radius: 28px; padding: 16px 14px 14px; text-align: center; max-width: 240px; width: 100%; margin: 6px auto; box-shadow: 0 8px 24px -6px rgba(130, 70, 180, 0.20); transition: all 0.3s ease; position: relative; overflow: hidden; font-family: 'Segoe UI', system-ui, -apple-system, sans-serif; } .lila-counter-box:hover { transform: translateY(-2px); box-shadow: 0 12px 28px -8px rgba(120, 60, 190, 0.30); } /* Decoración de fondo más sutil */ .lila-counter-box::before { content: ''; position: absolute; top: -40px; right: -40px; width: 120px; height: 120px; background: radial-gradient(circle, rgba(210, 160, 255, 0.12), transparent 70%); border-radius: 50%; pointer-events: none; } .lila-counter-box::after { content: ''; position: absolute; bottom: -30px; left: -30px; width: 100px; height: 100px; background: radial-gradient(circle, rgba(230, 180, 255, 0.10), transparent 70%); border-radius: 50%; pointer-events: none; } /* HEADER más compacto */ .lila-header { display: flex; align-items: center; justify-content: center; gap: 6px; margin-bottom: 10px; position: relative; z-index: 1; flex-wrap: wrap; } .lila-icon { font-size: 16px; display: inline-block; animation: pulseLila 1.8s ease-in-out infinite; filter: drop-shadow(0 1px 4px rgba(200, 120, 220, 0.15)); } .lila-icon:last-child { animation-delay: 0.9s; } @keyframes pulseLila { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.15); } } .lila-title { font-size: 13px; font-weight: 700; color: #6b4a7a; letter-spacing: 0.5px; background: linear-gradient(135deg, #8b6b9e, #b389c9); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* NÚMERO más pequeño */ .lila-body { background: rgba(255, 245, 255, 0.50); backdrop-filter: blur(4px); border: 1.5px solid rgba(200, 160, 230, 0.25); border-radius: 40px; padding: 6px 14px; display: inline-block; min-width: 110px; margin-bottom: 10px; box-shadow: inset 0 1px 6px rgba(180, 140, 210, 0.08); position: relative; z-index: 1; } .lila-number { font-size: 22px; font-weight: 700; letter-spacing: 3px; color: #5a3a6a; /* SIN GRADIENTE NI NEÓN - color sólido y limpio */ font-variant-numeric: tabular-nums; } /* FOOTER más pequeño */ .lila-footer { font-size: 11px; font-weight: 600; color: #7a5f88; letter-spacing: 0.2px; background: linear-gradient(135deg, #e8daf0, #f3e8fa); padding: 4px 14px; border-radius: 40px; display: inline-block; box-shadow: inset 0 1px 3px rgba(255,255,255,0.7); position: relative; z-index: 1; border: 1px solid rgba(200, 170, 230, 0.12); } .lila-footer span { display: inline-block; } /* Puntitos decorativos más pequeños */ .lila-sparkle { position: absolute; border-radius: 50%; filter: blur(2px); pointer-events: none; z-index: 0; } </style> <!-- ====== ESTRUCTURA DEL CONTADOR ====== --> <div class="lila-counter-box"> <div class="lila-sparkle" style="top:10%; left:6%; width:8px; height:8px; background:rgba(210,170,255,0.15);"></div> <div class="lila-sparkle" style="bottom:12%; right:8%; width:10px; height:10px; background:rgba(200,150,240,0.10);"></div> <div class="lila-header"> <span class="lila-icon">🌸</span> <span class="lila-title">Visitas al Blog</span> <span class="lila-icon">🌸</span> </div> <div class="lila-body"> <span id="lila-counter-number" class="lila-number">000000</span> </div> <div class="lila-footer"> <span>✨ ¡Gracias por visitarme! ✨</span> </div> </div> <!-- ====== SCRIPT ====== --> <script> (function() { var storageKey = "blog_visitas_counter_lila"; var currentVisits = localStorage.getItem(storageKey); if (!currentVisits) { currentVisits = 100; } else { currentVisits = parseInt(currentVisits) + 1; } localStorage.setItem(storageKey, currentVisits); var formattedVisits = String(currentVisits).padStart(6, '0'); var counterElement = document.getElementById("lila-counter-number"); if (counterElement) { counterElement.innerText = formattedVisits; } })(); </script>

jueves, 16 de julio de 2026

✦ Tutorial del Código del Juego ✦

📸 Vista previa Juego de puzzle 3x3
Vista previa del juego de puzzle

👋 Holis, tuve un comentario donde me pedían tuto del jueguito de las imágenes.

📌 Bueno, no es tan complicado, pero a la hora de editarlo les recomiendo tener Sublime Text o bloc de notas.

🎨 Personalización de colores

Como verán, hay varias cosas en negritas que son los colores del gadget. Aquí hay dos tipos: # y rgba(), que son dos formas de poner color. Yo usé las dos, pero para que no tengan que inventarse colores como yo al principio, les dejaré las paletas de colores que usé:

💡 El primero es de rgba y el segundo #. Ahí pueden personalizar los colores como gusten.

🖼️ LAS IMÁGENES

En este caso usarán el vínculo de la imagen, yo las tomo de Pinterest, pueden elegir la que sea ya que se ajustará automáticamente. Es muy importante que dejen las comillas.

const IMAGES = [
  'https://i.pinimg.com/1200x/2f/b9/2f/2fb92f6a4043bea724ee60b8c90fa946.jpg',
  'https://i.pinimg.com/1200x/2f/b9/2f/2fb92f6a4043bea724ee60b8c90fa946.jpg',
  'https://i.pinimg.com/1200x/2f/b9/2f/2fb92f6a4043bea724ee60b8c90fa946.jpg'
];

🔘 LOS BOTONES

Pueden cambiar el texto pero la función se mantendrá igual y también pueden cambiar los emojis por los que ustedes gusten. En caso de que su herramienta no tenga teclado de emojis, les recomiendo este link:

💻 CÓDIGO COMPLETO DEL JUEGO

Aquí tienen el código completo para copiar y pegar en su blog:

<style>
  #puzzle-wrapper {
    max-width: 100%;
    width: 100%;
    margin: 0;
    padding: 15px 10px;
    font-family: 'Segoe UI', Arial, sans-serif;
    text-align: center;
    background: linear-gradient(145deg, #2d1b3d, #1f112b);
    border-radius: 16px;
    box-shadow: 0 4px 20px rgba(106, 13, 173, 0.5);
    border: 1px solid rgba(155, 77, 255, 0.2);
    box-sizing: border-box;
    overflow: hidden;
  }

  #puzzle-container {
    width: 100%;
    max-width: 280px;
    aspect-ratio: 1 / 1;
    margin: 0 auto 12px auto;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(3, 1fr);
    gap: 3px;
    padding: 3px;
    background-color: #1a0f24;
    border-radius: 12px;
    box-shadow: 0 4px 20px rgba(106, 13, 173, 0.5), inset 0 0 30px rgba(155, 77, 255, 0.1);
    box-sizing: border-box;
  }

  .puzzle-piece {
    width: 100%;
    height: 100%;
    background-size: 300% 300%;
    cursor: pointer;
    border-radius: 4px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    box-sizing: border-box;
    transition: transform 0.1s ease, opacity 0.2s, box-shadow 0.2s;
    min-width: 0;
    min-height: 0;
  }

  .puzzle-piece:not(.empty):hover {
    transform: scale(0.92);
    opacity: 0.85;
    box-shadow: 0 0 15px rgba(155, 77, 255, 0.3);
  }

  .puzzle-piece.empty {
    background-image: none !important;
    background-color: #120a1a !important;
    border: 1px dashed #5a3a6a;
    cursor: default;
  }

  .glitter-btn {
    width: 64px;
    height: 64px;
    border: none;
    border-radius: 12px;
    margin: 4px 5px;
    font-size: 26px;
    font-weight: bold;
    cursor: pointer;
    color: white;
    text-shadow: 0 0 5px rgba(255, 255, 255, 0.5);
    background: linear-gradient(135deg, #7b2fbe, #9b4dff, #7b2fbe);
    background-size: 300% 300%;
    box-shadow: 0 0 20px rgba(155, 77, 255, 0.5), inset 0 0 15px rgba(255, 255, 255, 0.15);
    transition: all 0.25s ease;
    position: relative;
    overflow: hidden;
    flex-shrink: 0;
  }

  .glitter-btn::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle at 30% 40%, rgba(255, 255, 255, 0.3) 0%, transparent 60%),
                radial-gradient(circle at 70% 80%, rgba(255, 215, 0, 0.25) 0%, transparent 50%),
                radial-gradient(circle at 10% 90%, rgba(255, 255, 255, 0.2) 0%, transparent 40%),
                radial-gradient(circle at 90% 10%, rgba(200, 150, 255, 0.3) 0%, transparent 50%);
    background-size: 200% 200%;
    animation: glitterMove 3s linear infinite;
    pointer-events: none;
  }

  .glitter-btn::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: 
      radial-gradient(2px 2px at 20% 30%, rgba(255, 255, 255, 0.8), transparent),
      radial-gradient(2px 2px at 40% 70%, rgba(255, 255, 255, 0.6), transparent),
      radial-gradient(3px 3px at 60% 20%, rgba(255, 215, 0, 0.7), transparent),
      radial-gradient(2px 2px at 80% 50%, rgba(255, 255, 255, 0.9), transparent),
      radial-gradient(2px 2px at 10% 80%, rgba(200, 150, 255, 0.7), transparent),
      radial-gradient(3px 3px at 70% 90%, rgba(255, 255, 255, 0.5), transparent),
      radial-gradient(2px 2px at 90% 30%, rgba(255, 215, 0, 0.6), transparent);
    background-size: 150% 150%;
    animation: sparkle 4s ease-in-out infinite alternate;
    pointer-events: none;
  }

  @keyframes glitterMove {
    0% { background-position: 0% 0%; }
    50% { background-position: 100% 100%; }
    100% { background-position: 0% 0%; }
  }

  @keyframes sparkle {
    0% { opacity: 0.3; transform: scale(1); }
    100% { opacity: 1; transform: scale(1.1); }
  }

  .glitter-btn:hover {
    transform: scale(1.08) rotate(-2deg);
    box-shadow: 0 0 40px rgba(155, 77, 255, 0.9), inset 0 0 25px rgba(255, 255, 255, 0.25);
  }

  .glitter-btn:active {
    transform: scale(0.92);
  }

  #btn-group {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 8px;
    margin: 6px 0 8px 0;
    flex-wrap: wrap;
  }

  #image-counter {
    font-size: 13px;
    color: #a07bb5;
    background: rgba(26, 15, 36, 0.6);
    padding: 4px 12px;
    border-radius: 20px;
    border: 1px solid rgba(155, 77, 255, 0.15);
    display: inline-block;
    margin-top: 2px;
  }

  #message {
    font-size: 15px;
    font-weight: bold;
    min-height: 26px;
    color: #c084fc;
    text-shadow: 0 0 20px rgba(155, 77, 255, 0.5), 0 0 40px rgba(155, 77, 255, 0.2);
    margin: 4px 0 2px 0;
    padding: 6px 8px;
    background: rgba(26, 15, 36, 0.5);
    border-radius: 10px;
    border: 1px solid rgba(155, 77, 255, 0.1);
    word-wrap: break-word;
    box-sizing: border-box;
  }

  @media (max-width: 350px) {
    #puzzle-container {
      max-width: 220px;
      gap: 2px;
      padding: 2px;
    }
    .glitter-btn {
      width: 54px;
      height: 54px;
      font-size: 20px;
    }
    #puzzle-wrapper {
      padding: 10px 6px;
    }
  }

  @media (min-width: 351px) and (max-width: 450px) {
    #puzzle-container {
      max-width: 250px;
    }
    .glitter-btn {
      width: 60px;
      height: 60px;
      font-size: 24px;
    }
  }
</style>

<div id="puzzle-wrapper">
  <div id="puzzle-container"></div>
  <div id="btn-group">
    <button class="glitter-btn" onclick="shufflePuzzle()" title="Mezclar">🔀</button>
    <button class="glitter-btn" onclick="nextImage()" title="Cambiar imagen">🖼️</button>
    <button class="glitter-btn" onclick="resetPuzzle()" title="Reiniciar">🔄</button>
  </div>
  <div id="image-counter">Imagen <span id="current-img-num">1</span> de <span id="total-img-num">3</span></div>
  <div id="message"></div>
</div>

<script>
  const IMAGES = [
    'https://i.pinimg.com/1200x/2f/b9/2f/2fb92f6a4043bea724ee60b8c90fa946.jpg',
    'https://i.pinimg.com/1200x/2f/b9/2f/2fb92f6a4043bea724ee60b8c90fa946.jpg',
    'https://i.pinimg.com/1200x/2f/b9/2f/2fb92f6a4043bea724ee60b8c90fa946.jpg'
  ];

  const GRID_SIZE = 3;
  const TOTAL_PIECES = GRID_SIZE * GRID_SIZE;

  let pieces = [];
  let emptyIndex = TOTAL_PIECES - 1;
  let moves = 0;
  let gameStarted = false;
  let currentImageIndex = 0;
  let currentImageUrl = IMAGES[0];

  function initPuzzle() {
    const container = document.getElementById('puzzle-container');
    container.innerHTML = '';
    pieces = [];
    for (let i = 0; i < TOTAL_PIECES; i++) {
      pieces.push(i);
    }
    emptyIndex = TOTAL_PIECES - 1;
    moves = 0;
    gameStarted = false;
    document.getElementById('message').textContent = '';
    renderPuzzle();
  }

  function renderPuzzle() {
    const container = document.getElementById('puzzle-container');
    container.innerHTML = '';
    for (let i = 0; i < pieces.length; i++) {
      const piece = document.createElement('div');
      piece.className = 'puzzle-piece';
      if (pieces[i] === -1) {
        piece.classList.add('empty');
      } else {
        const row = Math.floor(pieces[i] / GRID_SIZE);
        const col = pieces[i] % GRID_SIZE;
        piece.style.backgroundImage = `url('${currentImageUrl}')`;
        piece.style.backgroundPosition = `-${col * 100}% -${row * 100}%`;
        piece.dataset.index = i;
        piece.addEventListener('click', () => movePiece(i));
      }
      container.appendChild(piece);
    }
    document.getElementById('current-img-num').textContent = currentImageIndex + 1;
    document.getElementById('total-img-num').textContent = IMAGES.length;
  }

  function movePiece(index) {
    if (!gameStarted) gameStarted = true;
    const emptyRow = Math.floor(emptyIndex / GRID_SIZE);
    const emptyCol = emptyIndex % GRID_SIZE;
    const pieceRow = Math.floor(index / GRID_SIZE);
    const pieceCol = index % GRID_SIZE;

    if ((Math.abs(emptyRow - pieceRow) === 1 && emptyCol === pieceCol) ||
        (Math.abs(emptyCol - pieceCol) === 1 && emptyRow === pieceRow)) {
      pieces[emptyIndex] = pieces[index];
      pieces[index] = -1;
      emptyIndex = index;
      moves++;
      renderPuzzle();
      checkWin();
    }
  }

  function nextImage() {
    currentImageIndex = (currentImageIndex + 1) % IMAGES.length;
    currentImageUrl = IMAGES[currentImageIndex];
    initPuzzle();
    shufflePuzzle();
    moves = 0;
    gameStarted = false;
    document.getElementById('message').textContent = '🖼️ Imagen cambiada';
  }

  function shufflePuzzle() {
    for (let i = 0; i < 200; i++) {
      const emptyRow = Math.floor(emptyIndex / GRID_SIZE);
      const emptyCol = emptyIndex % GRID_SIZE;
      const neighbors = [];
      if (emptyRow > 0) neighbors.push(emptyIndex - GRID_SIZE);
      if (emptyRow < GRID_SIZE - 1) neighbors.push(emptyIndex + GRID_SIZE);
      if (emptyCol > 0) neighbors.push(emptyIndex - 1);
      if (emptyCol < GRID_SIZE - 1) neighbors.push(emptyIndex + 1);
      
      const randomNeighbor = neighbors[Math.floor(Math.random() * neighbors.length)];
      pieces[emptyIndex] = pieces[randomNeighbor];
      pieces[randomNeighbor] = -1;
      emptyIndex = randomNeighbor;
    }
    moves = 0;
    gameStarted = false;
    renderPuzzle();
  }

  function resetPuzzle() {
    initPuzzle();
    shufflePuzzle();
    moves = 0;
    gameStarted = false;
    document.getElementById('message').textContent = '';
  }

  function checkWin() {
    let win = true;
    for (let i = 0; i < pieces.length - 1; i++) {
      if (pieces[i] !== i) { win = false; break; }
    }
    if (win && pieces[pieces.length - 1] === -1) {
      document.getElementById('message').textContent = '🎉 ¡Completado en ' + moves + ' movimientos! 🎉';
      setTimeout(function() {
        nextImage();
        document.getElementById('message').textContent = '🔄 Nueva imagen cargada. ¡A resolver!';
      }, 1500);
    }
  }

  window.onload = function() {
    initPuzzle();
    shufflePuzzle();
  };
</script>
        

💜 Y eso sería todo. Dice mi hermana que les diga que si les da flojera buscar los colores, se los pidan a la IA, pero les juro que la tortura vale la pena. ✨

💜 Hecho con cariño para la comunidad 💜

miércoles, 15 de julio de 2026

Good Day

✧ Día de hoy ✧

☕ Hola chicos, ¿cómo están? Hoy traigo otra entrada en mi diario.

Escaneo facial

Pues les cuento que el día de hoy fui a una prueba de Skinquere, donde me hicieron un escaneo facial. Me mostraron las imperfecciones de mi piel por la falta de cuidado, las cuales —según la señora— no fueron muchas, "ya que aún soy menor de edad y mi cuerpo todavía tiene juventud". 😅

lunes, 13 de julio de 2026

vestidos

✧ Mi look del día ✧

🌸 Hola otra vez, hoy les traigo un momento muy especial

Vestido clausura

👗 ¿Les gusta mi vestido?

Es para la clausura de mi hermana 💕 ¡La que se creyó lo de la película! jajaj

Me encantaron las flores y los tonos 😍 ¿no están preciosos?

¿Taoísmo o Estoicismo?

Símbolo del Tao

El taoísmo es una filosofía y religión que tiene su origen en China y que pone como propuesta vivir en armonía con el Tao (el camino de la vida), buscando la simplicidad de dejarse llevar por la vida, olvidando y deshaciéndose de la sensación de control sobre las cosas.

Esta tradición tiene sus raíces en las enseñanzas atribuidas a Lao-Tse, un sabio del siglo VI a. C. considerado el autor del Tao Te Ching, uno de los textos fundamentales del taoísmo. Otro texto importante es el Zhuangzi, atribuido al filósofo del mismo nombre (también llamado Zhuang Zhou).

El taoísmo ha influido profundamente en la cultura china y otras culturas asiáticas en aspectos como la medicina tradicional, las artes marciales, la literatura, la caligrafía y el arte. Ha tenido un impacto duradero en la forma en que muchas personas perciben y se relacionan con el mundo que las rodea.

✧ ✦ ✧
Estoicismo romano

El estoicismo es una escuela filosófica del siglo III a. C. que propone una ética personal. Los estoicos de la Antigüedad sostenían que, aun cuando no se puede controlar lo que ocurre alrededor, sí se puede controlar la manera en que se lo piensa.

El estoicismo tuvo mucho éxito en la antigua Grecia. Se dice que tuvo tres fases: estoicismo antiguo, medio y nuevo. Tras sus inicios en Atenas se extendió hacia otras poblaciones mediterráneas, especialmente en la República romana. Allí se originó el estoicismo romano, cuyos representantes son Panecio, Posidonio, Séneca, Epícteto y Marco Aurelio. Estos autores fueron incluso más conocidos que los estoicos griegos. Del estoicismo romano se conservan más obras que del griego.

Una de las frases que me hizo preferir el estoicismo fue:

"Tienes poder sobre tu mente, no sobre los acontecimientos. Comprende esto y encontrarás la fuerza"
— Marco Aurelio, filósofo estoico

La primera vez que escuché sobre estas filosofías fue en Kung Fu Panda. Les dejo el video por si gustan verlo.

✦ Personalmente me agrada más el Estoicismo ✦