Подчеркнуть пункт меню при достижении определенного раздела - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь разработать подсветку меню при прокрутке окна. Соответствующий пункт меню будет подчеркнут при достижении прокрутки к разделу. Мне действительно трудно получить то же самое, и я очень плохо с этим борюсь. Будучи новичком в дизайне, я не могу достичь. Пожалуйста, поделитесь некоторыми соображениями по этому вопросу, будет очень полезно. Ниже приведены пункты меню, над которыми я хочу работать.

 <ul class="nav navbar-nav" id="mainNav">
    <li class="active"><a data-scroll href="#wmc" class='hidden-xs hidden-sm' >Home</a></li>
    <li><a data-scroll href="#agenda" class='hidden-xs hidden-sm'>Agenda</a></li>
    <li><a data-scroll href="#wmcpartners" class='hidden-xs hidden-sm'>Partners</a></li>
    <li><a data-scroll href="https://www.aafmindia.co.in/EventRegistration.aspx" class='hidden-xs hidden-sm'>Register</a></li>
    <li><a data-scroll href="#contact" class='hidden-xs hidden-sm'>Contact Us</a></li>
    <li class="dropdown">
<a href="#" class="dropdown-toggle bottompad0 dropbtn hidden-xs hidden-sm" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
    Past Events
 <span class="caret"></span>
</a>
<ul class="dropdown-content">
<li><a href="gallery2018.html">2018</a></li>
<li><a href="gallery2017.html">2017</a></li>
<li><a href="gallery2016.html">2016</a></li>
<li><a href="gallery2015.html">2015</a></li>
<li><a href="gallery2014.html">2014</a></li>
<li><a href="gallery2013.html">2013</a></li>
</ul>
h</li></ul>

1 Ответ

1 голос
/ 04 октября 2019

Это решение, которое я написал для вас ... используйте это .. это работает .. вам нужно внести некоторые коррективы, но это работает .. Надеюсь, я помог :)

$(window).scroll(function () { //on scroll event on window
        var position = $(this).scrollTop(); //position scrolled sofar
  
        $('.section').each(function() { //for each loop(chcecks for every element with that class)
        //for your every section on site or your class of main sections you are targetting
            var target = $(this).offset().top;//each element position from top
            var targetBot = target + $(this).height();

            var id = $(this).attr('id'); //this element ID - should be same as data-id on your nav link
            $('nav a[data-id=' + id + ']').removeClass('hovered'); //clearing
            if (position >= target && targetBot >= position) { //if you are scrolled over element with some id 
                $('nav a[data-id=' + id + ']').addClass('hovered');
                //this will check wich element you are scrolled on and selects in menu that item with same data-id :) 
            }
        });

});
section{
  float:left;
  width:100%;
  height:1000px;
  color:white;
  font-size:70px;
  display:flex;
  flex-wrap:wrap;
  align-content:center;
  align-items:center;
  justify-content:center;
}


#mainSection{background:red;}
#nextSection{background:blue;}
#lastSection{background:gray;}

nav{
  position:fixed;
  top:0px;
  left:0px;
  width:400px;
}

nav a{
  float:left;
  width:100%;
  text-align:left;
  background:white;
  padding:5px 15px;
}

nav a.hovered{
background:black;
color:white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<body>
<nav>
<a href="" data-id="mainSection">Main section</a>
<a href="" data-id="nextSection">Next section</a>
<a href="" data-id="lastSection">Last section</a>
</nav>

<section class="section" id="mainSection">
  Hello :)
</section>
<section class="section" id="nextSection">
  Hello :)
</section>
<section class="section" id="lastSection">
  Hello :)
</section>
</body>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...