JQuery - cómo detectar el scroll con el mouse o con el dedo y saber en qué sección de mi página estoy

 
Vista:
sin imagen de perfil
Val: 17
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

cómo detectar el scroll con el mouse o con el dedo y saber en qué sección de mi página estoy

Publicado por Sergio (9 intervenciones) el 01/05/2020 22:55:54
Buenas noches. Tengo esta web
https://laalmozara.000webhostapp.com/
Me gustaría saber cómo detectar el scroll con el mouse o con el dedo (si la vemos en un móvil) y saber en qué sección de mi página estoy y cambiar de color el item que corresponda. No sé si me he explicado bien. Con el ratón, al hacer click, ya lo tengo. Muchas gracias. Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de joel
Val: 229
Oro
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

cómo detectar el scroll con el mouse o con el dedo y saber en qué sección de mi página estoy

Publicado por joel (71 intervenciones) el 02/05/2020 11:12:00
Hola Sergio con
1
window.scrollY
sabes la posición del scroll.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 17
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

cómo detectar el scroll con el mouse o con el dedo y saber en qué sección de mi página estoy

Publicado por Sergio (9 intervenciones) el 03/05/2020 11:09:01
Buenos días. Ya lo conseguí. Os pongo el código:

Primero el menú:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<nav class="navbar navbar-expand-md navbar-light fixed-top" style="background-color: black; color: white !important; font-family: 'Courgette', cursive;">
    <a data-scroll class="navbar-brand" href="#bienvenidos" onclick="animar('#bienv', 'animated rubberBand delay-1s');">La Almozara</a>
    <button class="navbar-toggler"  type="button" data-toggle="collapse" data-target="#menuprincipal" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
 
    <div class="collapse navbar-collapse" id="menuprincipal">
      <ul class="navbar-nav mx-auto" id="menu">
        <li class="nav-item active">
          <a  class="nav-link" href="#bienvenidos" onclick="animar('#bienv', 'animated rubberBand delay-1s'); agregarAlTitulo('Bienvenidos');">Inicio</span></a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" href="#historia" onclick="animar('#hist', 'animated flip delay-1s'); agregarAlTitulo('Historia');">Historia</a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" href="#noticias" onclick="animar('#not', 'animated bounceInRight delay-1s');  animar('.foto-noticia', 'animated flip delay-1s'); agregarAlTitulo('Noticias');">Noticias</a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" href="#deporte" onclick="animar('#depor', 'animated flip delay-1s'); agregarAlTitulo('Deporte');">Deporte</a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" href="#negocios" onclick="animar('#neg', 'animated flip delay-1s'); agregarAlTitulo('Negocios');">Negocios</a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" href="#actividades" onclick="animar('#acti', 'animated rubberBand delay-1s'); agregarAlTitulo('Actividades');">Actividades</a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" id="click-blog" href="#blog" onclick="animar('#b', 'animated rubberBand delay-1s'); agregarAlTitulo('Blog');">Blog</a>
        </li>
        <li class="nav-item">
          <a  class="nav-link" id="click-blog" href="#covid" onclick="animar('#titulo-covid', 'animated flip delay-1s'); agregarAlTitulo('Covid-19');">Covid-19</a>
        </li>
      </ul>
    </div>
</nav>

Y ahora el código jquery

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<script type="text/javascript">
    var lastId,
    topMenu = $("#menu"),
    topMenuHeight = topMenu.outerHeight()+15,
    // All list items
    menuItems = topMenu.find("a"),
    // Anchors corresponding to menu items
    scrollItems = menuItems.map(function(){
      var item = $($(this).attr("href"));
      if (item.length) { return item; }
    });
 
// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e){
  var href = $(this).attr("href"),
      offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
  $('html, body').stop().animate({
      scrollTop: offsetTop
  }, 1000);
  e.preventDefault();
});
 
// Bind to scroll
$(window).scroll(function(){
   // Get container scroll position
   var fromTop = $(this).scrollTop()+topMenuHeight;
 
   // Get id of current scroll item
   var cur = scrollItems.map(function(){
     if ($(this).offset().top < fromTop)
       return this;
   });
   // Get the id of the current element
   cur = cur[cur.length-1];
   var id = cur && cur.length ? cur[0].id : "";
 
   if (lastId !== id) {
       lastId = id;
       // Set/remove active class
       menuItems
         .parent().removeClass("active")
         .end().filter("[href='#"+id+"']").parent().addClass("active");
   }
});
</script>

Muchas gracias. Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Joel
Val: 229
Oro
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

cómo detectar el scroll con el mouse o con el dedo y saber en qué sección de mi página estoy

Publicado por Joel (71 intervenciones) el 03/05/2020 21:55:41
gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar