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.

Determinar si la celda de la tabla es visible en el viewport.

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown.

Soy muy nuevo en frontend. Supongamos que tenemos una tabla en una página html. Ahora quiero crear una función. En esa función, pasaré rowId y columnId. Y esa función verificará si esa celda es visible en la ventana gráfica o no. Si no lo es, desplazará la tabla hacia la izquierda / derecha o hacia arriba / abajo.

No estoy seguro de cómo verificar si alguna celda es visible en la ventana gráfica o no. ¿Alguien puede ayudar aquí?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Comprobar si una celda está visible en la ventana del navegador en una tabla HTML

    Para comprobar si una celda en una tabla HTML está visible en la ventana del navegador, podemos usar el método getBoundingClientRect() para obtener la posición y dimensiones del elemento de celda. Luego podemos comparar estos datos con las dimensiones y posiciones de la ventana para determinar si la celda es visible o no.

    Aquí hay una implementación de la función isCellVisibleInViewport() que toma como argumentos rowId y columnId y comprueba si la celda correspondiente está visible en la ventana:

    function isCellVisibleInViewport(rowId, columnId) {
      // obtener el elemento de la celda
      var cell = document.getElementById("table").rows[rowId].cells[columnId];
    
      // obtener el rectángulo de límites de la celda
      var rect = cell.getBoundingClientRect();
    
      // obtener las dimensiones y posición de la ventana
      var viewportWidth = window.innerWidth || document.documentElement.clientWidth;
      var viewportHeight = window.innerHeight || document.documentElement.clientHeight;
      var viewportTop = window.pageYOffset || document.documentElement.scrollTop;
      var viewportBottom = viewportTop + viewportHeight;
      var viewportLeft = window.pageXOffset || document.documentElement.scrollLeft;
      var viewportRight = viewportLeft + viewportWidth;
    
      // comprobar si la celda está visible en la ventana
      var isVisible =
        rect.top >= viewportTop &&
        rect.bottom <= viewportBottom &&
        rect.left >= viewportLeft &&
        rect.right <= viewportRight;
    
      return isVisible;
    }
    

    Una vez que haya determinado que una celda no está visible en la ventana, puede usar el método scrollTo() para desplazar la tabla a la posición adecuada. Por ejemplo, para desplazarse hacia la derecha de la tabla, puede usar:

    document.getElementById("table").scrollLeft += cell.offsetWidth;
    

    De manera similar, para desplazarse hacia la izquierda, hacia arriba o hacia abajo, puede usar las propiedades scrollLeft yscrollTop y restar la anchura o altura de la ventana o la celda según corresponda.

Comments are closed.