¿Cómo hacer que un div se adhiera a la parte superior de la pantalla?

En este artículo, sabremos cómo hacer un elemento adhesivo que se adherirá a la parte superior de la pantalla. Aquí, hemos usado el div para quedarnos en la parte superior de la pantalla. Entenderemos su implementación usando los siguientes 2 métodos.

Método 1: usar el valor fijo de la propiedad de posición

El valor ‘pegajoso’ de la propiedad position establece que un elemento use una posición ‘relativa’ a menos que cruce una parte específica de la página, después de lo cual se usa la posición ‘fija’ . La posición vertical del elemento a pegar también se puede modificar con la ayuda de la propiedad ‘top’ . Se le puede dar un valor de ‘0px’ para que el elemento no deje espacio desde la parte superior de la ventana gráfica, o se puede aumentar aún más para dejar espacio desde la parte superior de la ventana gráfica.

Ejemplo: Este ejemplo ilustra el uso de la propiedad position para adherirse a la parte superior del elemento.

HTML

<!DOCTYPE html>
<html>
<head>
 
    <style>
        .sticky-div {
            background-color: green;
            position: sticky;
            top: 0px;
            padding: 10px 0px;
        }
         
        .start {
            height: 100px;
        }
         
        .end {
            height: 500px;
        }
    </style>
</head>
 
<body>
    <h1 style="color: green">
        GeeksforGeeks
    </h1>
    <h3>Sticky Element</h3>
    <b>
        How to make a div stick
        to the top of the screen once
        it’s been scrolled to?
    </b>
    <p class="start">
         A Computer Science portal for geeks.
         It contains well written, well thought
         and well explained computer science and
         programming articles, quizzes and
         practice/competitive programming/company
         interview Questions.
     </p>
 
 
    <div class="sticky-div">
        This is div will stick to the top
        when it has been scrolled past
    </div>
    <p class="end">
        A Computer Science portal for geeks.
        It contains well written, well thought
        and well explained computer science and
        programming articles, quizzes and
        practice/competitive programming/company
        interview Questions.
    </p>
 
 
</body>
</html>

Producción:

Método 2: configurar el div para que se atasque después de haber pasado 
 

Este método intenta emular el método de «posición: pegajoso» . El elemento se establece en ‘fijo’ o ‘relativo’ dependiendo de si el usuario se ha desplazado más allá del elemento.
Primero se identifica el elemento a pegar y se calcula su posición actual en la página. Esto se hace agregando la posición del elemento en relación con la ventana gráfica con la posición de desplazamiento actual.

El método getBoundingClientRect() devuelve un objeto DOMReact cuyo valor ‘superior’ podría usarse para obtener la posición relativa a la ventana gráfica. La posición de desplazamiento vertical actual se puede encontrar utilizando la propiedad window.pageYOffset . Agregar estos dos valores nos daría la posición del elemento en la página, independientemente de la posición de desplazamiento actual.

El método onscroll luego se anula con una nueva función para calcular la posición de desplazamiento actual y compararla con la posición del elemento en la página. Si el desplazamiento vertical es mayor que la posición del elemento, la propiedad position se establece en ‘fixed’ y la propiedad ‘top’ recibe un valor de ‘0px’ . De lo contrario, la posición se establece en ‘relative’ y la propiedad ‘top’ se restablece con el valor ‘inicial’ .

Esto comparará y hará que el elemento se adhiera cada vez que el usuario se desplace más allá del elemento. 

Ejemplo: este ejemplo ilustra la configuración para que el div se atasque después de haber pasado.

HTML

<!DOCTYPE html>
<html>
<head>
    <style>
        .sticky-div {
            background-color: green;
            position: relative;
            width: 100%;
            padding: 10px 0px;
        }
         
        .start {
            height: 100px;
        }
         
        .end {
            height: 500px;
        }
    </style>
</head>
 
<body>
    <h1 style="color: green">
      GeeksforGeeks
    </h1>
    <b>
        How to make a div stick
        to the top of the screen once
        it’s been scrolled to?
    </b>
    <p class="start">
        A Computer Science portal for geeks.
        It contains well written, well thought
        and well explained computer science and
        programming articles, quizzes and
        practice/competitive programming/company
        interview Questions.
    </p>
 
 
    <div class="sticky-div">
        This is div will stick to the top
        when it has been scrolled past
    </div>
    <p class="end">
        A Computer Science portal for geeks.
        It contains well written, well thought
        and well explained computer science and
        programming articles, quizzes and
        practice/competitive programming/company
        interview Questions.
    </p>
 
 
    <script>
    stickyElem = document.querySelector(".sticky-div");
     
    /* Gets the amount of height
    of the element from the
    viewport and adds the
    pageYOffset to get the height
    relative to the page */
    currStickyPos = stickyElem.getBoundingClientRect().top + window.pageYOffset;
    window.onscroll = function() {
         
        /* Check if the current Y offset
        is greater than the position of
        the element */
        if(window.pageYOffset > currStickyPos) {
            stickyElem.style.position = "fixed";
            stickyElem.style.top = "0px";
        } else {
            stickyElem.style.position = "relative";
            stickyElem.style.top = "initial";
        }
    }
    </script>
</body>
</html>

Producción: 

Publicación traducida automáticamente

Artículo escrito por sayantanm19 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 *