es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué no se están aplicando los estilos de transformación en línea?

Entonces lo que estoy tratando de hacer es asignar cada carácter de una cadena a un span. Con cada span, estoy utilizando estilos en línea para cambiar dinámicamente la posición y del carácter en función de la posición actual en la cadena. Luego tomo esta cadena de spans y la agrego a una variable que al final contendrá todos los caracteres convertidos en spans, y luego muestro esto en el DOM utilizando innerHTML.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
  </head>
  <body>
    <p id="output"></p>
  </body>
  <script>
    const text = "the dog jumped over the fence";

    let output = "";

    let i = 0;
    for (char of text) {
      output += `<span style="transform: translateY(${i}px)">${char}</span>`;
      i += 1;
    }

    document.querySelector("#output").innerHTML = output;
  </script>
  <style>
    body {
      background-color: black;
    }
    span {
      color: green;
    }
  </style>
</html>

Sin embargo, ninguno de mis estilos que tienen que ver con transform se están aplicando externamente. He verificado la consola del desarrollador y los spans tienen los estilos que quiero, pero no se aplican en la página real. [1] https://i.stack.imgur.com/MoDnq.png

Lo extraño es que esto solo parece estar sucediendo para la propiedad CSS transform. Cuando edito el tamaño de fuente para cada span usando la posición actual, obtengo el resultado esperado.

/* Cuando cambio el bucle for para ajustar el tamaño de fuente en lugar de usar transform */
for (char of text) {
  output += `<span style="font-size: ${i}px">${char}</span>`;
  i += 1;
}

Esto es lo que obtengo: [1]: https://i.stack.imgur.com/0dk21.png

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema parece estar relacionado con la propiedad CSS transform. Una posible solución es agregar un prefijo de proveedor a la propiedad transform. Por ejemplo, en lugar de usar transform: translateY(${i}px), intenta usar -webkit-transform: translateY(${i}px).

    for (char of text) {
      output += `<span style="-webkit-transform: translateY(${i}px); transform: translateY(${i}px)">${char}</span>`;
      i += 1;
    }
    

    Esto garantizará que la propiedad transform se aplique correctamente en diferentes navegadores.

Comments are closed.