Crear el efecto de texto de marquesina usando JavaScript

En este artículo, crearemos texto de marquesina usando JavaScript. Este efecto se puede lograr usando la etiqueta <marquee> , pero la marquesina ha quedado obsoleta y los nuevos sitios web no usan esta etiqueta. Todavía algunos navegadores admiten esta etiqueta, pero para estar seguro, no debe usar esta etiqueta. Aquí está el ejemplo a continuación de cómo funciona la etiqueta de marca.

Ejemplo: En este ejemplo, usaremos la etiqueta de marquesina HTML .

HTML

<!DOCTYPE html>
<html>
  
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width">
    <title>Marquee tag example</title>
</head>
  
<body>
    <marquee>
        GeeksForGeeks | A computer science portal for geeks
    </marquee>
    <br><br><br><br>
    <marquee direction="right">
        GeeksForGeeks | A computer science portal for geeks
    </marquee>
    <br><br><br><br>
    <marquee direction="up">
        GeeksForGeeks | A computer science portal for geeks
    </marquee>
    <br><br><br><br>
    <marquee direction="down">
        GeeksForGeeks | A computer science portal for geeks
    </marquee>
  
</body>
  
</html>

Producción:

Nota: No use la etiqueta de marquesina dentro de su código porque está obsoleta y puede romper su código en el futuro.

Uso de Javascript: para evitar la desaprobación de la etiqueta de marquesina, puede implementar su propio código JavaScript para lograr este efecto. Primero, creamos un esqueleto HTML. Cree una etiqueta div y dentro de la etiqueta div cree algunas etiquetas < p > que contengan su texto. 

Código HTML:

HTML

<!DOCTYPE html>
<html>
<body>
    <div id="main">
        <p class="para" id="para1">
            Geeksforgeeks | 
            A computer science portal for geeks
        </p>
  
        <p class="para" id="para2">
            This is another text
        </p>
  
        <p class="para" id="para3">
            This is the third line of the 
            example line of the example.
        </p>
  
    </div>
</body>
  
</html>

Código CSS: ahora agregue algo de CSS al código. Aquí, en el contenedor div (en el que residen todas las etiquetas <p>), oculta el desbordamiento (esto es necesario) y establece el color de fondo, el borde y el ancho de tu elección. Y en la etiqueta <p> debe haber tres propiedades necesarias : espacio en blanco , flotar y borrar. El espacio en blanco debe establecerse en nowrap , float en left y clear en both y otras propiedades de diseño de su elección.

CSS

<style>
  #main{
      border: 1px solid;
      background: yellow;
      width: 100%;
      overflow: hidden;
     }
  
    .para{
      color: black;
      font-weight: bold;
      white-space: nowrap;
      clear: both;
      float: left;
    }
</style>

Código JavaScript: ahora la parte principal de agregar lógica para mover el texto. Lo que hacemos es disminuir la propiedad margin-left de los elementos <p>. Cuando el elemento se vuelve invisible, nuevamente asignamos el margin-left igual al ancho del elemento padre del elemento <p>. Este es el proceso paso a paso para implementar esta lógica.

  • Cree una variable llamada elementWidth y asigne el offsetWidth del elemento <p>
  • Cree un nombre de variable parentWidth y asigne el offsetWidth del elemento principal del elemento <p>.
  • Crear variable de bandera e inicializarla con 0
  • Cree un setInterval con una frecuencia de actualización de 10 milisegundos.
  • En cada intervalo, disminuya el valor de la bandera y establezca ese valor en la propiedad margin-left.
  • Si el valor negativo de la bandera es igual al ancho del elemento, establezca el valor de margin-left igual al ancho del padre.

Javascript

const para1 = document.getElementById("para1");
const para2 = document.getElementById("para2");
const para3 = document.getElementById("para3");
  
animate(para1);
animate(para2);
animate(para3);
  
function animate(element) {
    let elementWidth = element.offsetWidth;
    let parentWidth = element.parentElement.offsetWidth;
    let flag = 0;
  
    setInterval(() => {
        element.style.marginLeft = --flag + "px";
  
        if (elementWidth == -flag) {
            flag = parentWidth;
        }
    }, 10);
}

Salida: Después de combinar las tres secciones anteriores, veremos algo como esto.

Publicación traducida automáticamente

Artículo escrito por _saurabh_jaiswal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *