#twitter-bootstrap #scrollspy
#twitter-bootstrap #scrollspy
Вопрос:
Я обнаружил небольшую проблему в scrollspy Bootstrap 5. Когда Windows изменяет размер, навигация не корректна и не обновляется.
Исходный код взят из оригинального bootstrap 5
https://v5.getbootstrap.com/docs/5.0/components/scrollspy/#refresh
Неперехваченная ошибка типа: не удается прочитать свойство ‘refresh’ null
ДЕМОНСТРАЦИЯ :
var dataSpyList = [].slice.call(document.querySelectorAll('[data-spy="scroll"]'))
dataSpyList.forEach(function (dataSpyEl) {
bootstrap.ScrollSpy.getInstance(dataSpyEl)
.refresh()
})
html {
scroll-behavior: smooth;
}
/*margin padding*/
.py-9 {
padding-top: 7rem;
padding-bottom: 7rem;
}
.my-9 {
margin-top: 7rem;
margin-bottom: 7rem;
}
body {
font-family: system-ui;
background: #f06d06;
color: white;
text-align: center;
}
.py-9 {
padding-top: 7rem;
padding-bottom: 7rem;
}
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha2/css/bootstrap.min.css" integrity="sha384-DhY6onE6f3zzKbjUPRc2hOzGAdEf4/Dz WJwBvEYL/lkkIsI3ihufq9hk9K4lVoK" crossorigin="anonymous">
<body id="page-top" data-spy="scroll" data-target="#main-nav" data-offset="92">
<!-- ========== { HEADER }========== -->
<header id="main-nav" class="fixed-top nav-dark bg-light border-bottom py-3">
<div class="container">
<!-- Navbar -->
<nav class="js-navbar-scroll navbar navbar-expand-lg navbar-light">
<a class="navbar-brand main-logo" href="#">
MY LOGO
</a>
<!-- navbar button -->
<button class="navbar-toggler" type="button"
data-toggle="collapse"
data-target="#navbarTogglerDemo"
aria-controls="navbarTogglerDemo"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- collapse menu -->
<div class="collapse navbar-collapse" id="navbarTogglerDemo">
<ul class="navbar-nav nav-hover1 ml-auto mt-2 mt-lg-0">
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#hero">Home</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#one">About</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#two">Skill</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#three">Progress</a>
</li>
<li class="nav-item">
<a class="nav-link js-scroll-trigger" href="#four">Statistic</a>
</li>
</ul>
<div class="text-center my-3 my-lg-0 ml-0 ml-lg-2">
<a class="nav-link btn btn-primary btn-sm btn-block js-scroll-trigger" href="#five">Download
</a>
</div>
</div><!-- end collapse menu -->
</nav><!-- End Navbar -->
</div>
</header><!-- end header -->
<!-- =========={ MAIN }========== -->
<main id="content" role="main">
<!-- section -->
<section id="hero" class="section position-relative bg-light py-9 border-bottom"
>
<h3 class="text-center my-9 py-9">SECTION HERO</h3>
</section>
<!-- section -->
<section id="one" class="section position-relative bg-light py-9 border-bottom"
>
<h3 class="text-center my-9 py-9">SECTION ONE</h3>
</section>
<!-- section -->
<section id="two" class="section position-relative bg-light py-9 border-bottom"
>
<h3 class="text-center my-9 py-9">SECTION TWO</h3>
</section>
<!-- section -->
<section id="three" class="section position-relative bg-light py-9 border-bottom"
>
<h3 class="text-center my-9 py-9">SECTION THREE</h3>
</section>
<!-- section -->
<section id="four" class="section position-relative bg-light py-9 border-bottom"
>
<h3 class="text-center my-9 py-9">SECTION FOUR</h3>
</section>
<!-- section -->
<section id="last" class="section position-relative bg-light py-9 border-bottom"
>
<h3 class="text-center my-9 py-9">SECTION LAST</h3>
</section>
</main>
<!-- end main -->
<!-- =========={ FOOTER }========== -->
<footer class="py-5 bg-dark">
<p class="text-light text-center">Copyright 2020</p>
</footer>
<!-- End Footer -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha2/js/bootstrap.bundle.min.js" integrity="sha384-BOsAfwzjNJHrJ8cZidOg56tcQWfp6y72vEJ8xQ9w6Quywb24iOsW913URv1IS4GD" crossorigin="anonymous"></script>
</body>
Есть решение этой проблемы?
Ответ №1:
Я только что обновился с альфа-версии до beta1, и, похоже, эта конкретная проблема устранена (обязательно обновите оба компонента css и js). Не уверен, что это решит ее для вас. Я не вносил отдельных изменений, я внес несколько, прежде чем увидел, что он начал работать, но если бы мне пришлось догадаться, это было бы тем, что исправило это.
Тем не менее, scroll spy Bootstrap 5 в настоящее время сильно прослушивается вплоть до последней версии (beta1).
[немного не связано]
Я на самом деле понял это после нескольких дней борьбы с проблемой, когда scrollspy вычисляет ошибочные смещения для подсмотренных элементов после перезагрузки страницы при прокрутке в любое место, отличное от 0. github scollspy проблема с перезагрузкой страницы.