English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Плагин отслеживания скроллинга (Scrollspy) автоматически обновляет навигационные цели в зависимости от положения полосы прокрутки. Основная реализация заключается в добавлении навигационных целей в навигационную панель на основе положения полосы прокрутки при скроллинге. .active class.
Если вы хотите использовать функции плагина отдельно, вам нужно ссылаться на scrollspy.js. Или, как Bootstrap плагины Как упоминалось в главе bootstrap.js или сжатую версию bootstrap.min.js.
Вы можете добавить поведение отслеживания скроллинга к верхнему меню:
через data атрибут: Добавьте атрибут data к элементу, который вы хотите отслеживать (обычно это body) data-spy="scroll". Затем добавьте элемент с Bootstrap .nav ID или класс родительского элемента компонента data-target. Чтобы это работало корректно, вам нужно убедиться, что на странице есть элементы с ID, соответствующие ссылкам, которые вы хотите отслеживать.
<body data-spy="scroll" data-target=".navbar-example"> ... <div> <ul> ... </ul> </div> ... </body>
через JavaScriptВы можете вызвать отслеживание скроллинга с помощью JavaScript, выбрать элемент, который нужно отслеживать, и затем вызвать .scrollspy() Функция:
$('body').scrollspy({ target: '.navbar-example' })
Пример demonstrates, как использовать плагин Scrollspy через атрибут data для отслеживания скроллинга:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Пример Bootstrap - плагин для наблюдения за прокруткой (Scrollspy)</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <nav id="navbar-example" class="navbar navbar-default navbar-static" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-js-navbar-scrollspy"> <span class="sr-only">Переключение навигации</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Название руководства</a> </div> <div class="collapse navbar-collapse bs-js-navbar-scrollspy"> <ul class="nav navbar-nav"> <li><a href="#ios">iOS</a></li> <li><a href="#svn">SVN</a></li> <li class="dropdown"> <a href="#" id="navbarDrop1" class="dropdown-toggle" data-toggle="dropdown">Java <b class="caret"></b> </a> <ul class="dropdown-menu" role="menu" aria-labelledby="navbarDrop1"> <li><a href="#jmeter" tabindex="-1">jmeter</a></li> <li><a href="#ejb" tabindex="-1">ejb</a></li> <li class="divider"></li> <li><a href="#spring" tabindex="-1">spring</a></li> </ul> </li> </ul> </div> </div> </nav> <div data-spy="scroll" data-target="#navbar-example" data-offset="0" style="height:200px;overflow:auto; position: relative;"> <h4 id="ios">iOS</h4> <p>iOS - это мобильная операционная система, разработанная и выпущенная компанией Apple. Впервые была представлена в 2007 году с выходом iPhone, iPod Touch и Apple TV. iOS является производным от OS X, они共享 Darwin основу. OS X операционная система используется на компьютерах Apple, iOS - это мобильная версия Apple. </p> <h4 id="svn">SVN</h4> <p>Apache Subversion, обычно сокращенно SVN, - это开源 система управления версиями. Subversion был создан компанией CollabNet в 2000 году.但是现在 он стал проектом Apache Software Foundation, что позволяет ему обладать большим сообществом разработчиков и пользователей. </p> <h4 id="jmeter">jMeter</h4> <p>jMeter - это开源 программное обеспечение для тестирования. Это 100% чистый Java приложение, используемый для тестирования нагрузки и производительности. </p> <h4 id="ejb">EJB</h4> <p>Enterprise Java Beans (EJB) - это архитектура разработки, созданная для создания высоко масштабируемых и мощных корпоративных приложений, развертываемых на J2EE,兼容имых с приложениями серверами (например, JBOSS, Web Logic и т.д.). </p> <h4 id="spring">Spring</h4> <p>Фреймворк Spring - это открытый платформа Java, которая предоставляет полные基础设施 для быстрого разработки мощных Java приложений. </p> <p>Фреймворк Spring был最初 написан Rod Johnson и был впервые выпущен под лицензией Apache 2.0 в июне 2003 года. </p> </div> </body> </html>Проверьте, пожалуйста,‹/›
Результат отображается следующим образом:
Передается через атрибут data или JavaScript. В таблице приведены эти параметры:
Имя параметра | Тип/значение по умолчанию | Имя свойство данных | Описание |
---|---|---|---|
смещение | число по умолчанию: 10 | data-offset | при вычислении положения прокрутки, смещение в пикселях от верха. |
.scrollspy('refresh')При вызове метода scrollspy с помощью JavaScript, вам нужно вызвать .refresh Метод обновляет DOM. Это очень полезно, когда в DOM发生变化 (например, вы добавили или удалили элементы). Ниже приведен синтаксис использования этого метода.
$('[data-spy="scroll"]').each(function () { var $spy = $(this).scrollspy('refresh') });
Ниже приведен пример: .scrollspy('refresh') Использование методов:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Пример Bootstrap - Методы модуля прокрутки (Scrollspy)</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-js-navbar-scrollspy"> <span class="sr-only">Переключение навигации</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Название руководства</a> </div> <div class="collapse navbar-collapse bs-js-navbar-scrollspy"> <ul class="nav navbar-nav"> <li class="active"><a href="#ios">iOS</a></li> <li><a href="#svn">SVN</a></li> <li class="dropdown"> <a href="#" id="navbarDrop1" class="dropdown-toggle" data-toggle="dropdown">Java <b class="caret"></b> </a> <ul class="dropdown-menu" role="menu" aria-labelledby="navbarDrop1"> <li><a href="#jmeter" tabindex="-1">jmeter</a></li> <li><a href="#ejb" tabindex="-1">ejb</a></li> <li class="divider"></li> <li><a href="#spring" tabindex="-1">spring</a></li> </ul> </li> </ul> </div> </div> </nav> <div data-spy="scroll" data-target="#myScrollspy" data-offset="0" style="height:200px;overflow:auto; position: relative;"> <div class="section"> <h4 id="ios">iOS<small><a href="#" onclick="removeSection(this);"> × Удалить эту часть</a></small> </h4> <p>iOS - это мобильная операционная система, разработанная и выпущенная компанией Apple. Впервые была представлена в 2007 году с выходом iPhone, iPod Touch и Apple TV. iOS происходит из OS X, они共享 Darwin базу. OS X операционная система используется на компьютерах Apple, iOS - это мобильная версия Apple.</p> </div> <div class="section"> <h4 id="svn">SVN<small></small></h4> <p>Apache Subversion, обычно сокращенно SVN, - это开源 система управления версиями. Subversion был создан компанией CollabNet в 2000 году.但现在 он стал проектом Apache Software Foundation, поэтому имеет обширное сообщество разработчиков и пользователей.</p> </div> <div class="section"> <h4 id="jmeter">jMeter<small><a href="#" onclick="removeSection(this);"> × Удалить эту часть</a></small> </h4> <p>jMeter - это开源 тестовое программное обеспечение. Это 100% чистый Java-приложение, предназначенное для тестирования нагрузки и производительности.</p> </div> <div class="section"> <h4 id="ejb">EJB</h4> <p>Enterprise Java Beans (EJB) - это архитектура разработки, предназначенная для создания высоко масштабируемых и мощных корпоративных приложений, которая развертывается на платформе J2EE, совместимой с приложениями серверов (например, JBOSS, Web Logic и т.д.).</p> </div> <div class="section"> <h4 id="spring">Spring</h4> <p>Фреймворк Spring — это открытая платформа Java, которая предоставляет完备ную инфраструктуру для быстрого разработки мощных Java приложений.</p> <p>Фреймворк Spring был最初 написан Rod Johnson и впервые опубликован в июне 2003 года под лицензией Apache 2.0.</p> </div> </div> <script type="text/javascript"> $(function() { removeSection = function(e) { $(".section").parents(e).remove(); $('[data-spy="scroll"]').each(function () { var $spy = $(this).scrollspy('refresh') }); } $("#myScrollspy").scrollspy(); }); </script> </body> </html>Проверьте, пожалуйста,‹/›
Результат отображается следующим образом:
В таблице ниже перечислены события, используемые в прокрутке. Эти события могут быть использованы в функции в качестве гвоздей.
Событие | Описание | Пример |
---|---|---|
activate.bs.scrollspy | Этот.event вызывается каждый раз, когда новый элемент активируется с помощью прокрутки. | $('#myScrollspy').on('activate.bs.scrollspy', function () { // Выполнение некоторых действий... }); |
Ниже приведен пример: activate.bs.scrollspy Использование событий:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Пример Bootstrap - Модуль прокрутки (Scrollspy) с событиями</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <nav id="myScrollspy" class="navbar navbar-default navbar-static" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bs-js-navbar-scrollspy"> <span class="sr-only">Переключение навигации</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Название руководства</a> </div> <div class="collapse navbar-collapse bs-js-navbar-scrollspy"> <ul class="nav navbar-nav"> <li class="active"><a href="#ios">iOS</a></li> <li><a href="#svn">SVN</a></li> <li class="dropdown"> <a href="#" id="navbarDrop1" class="dropdown-toggle" data-toggle="dropdown"> Java <b class="caret"></b> </a> <ul class="dropdown-menu" role="menu" aria-labelledby="navbarDrop1"> <li><a href="#jmeter" tabindex="-1">jmeter</a></li> <li><a href="#ejb" tabindex="-1">ejb</a></li> <li class="divider"></li> <li><a href="#spring" tabindex="-1">spring</a></li> </ul> </li> </ul> </div> </div> </nav> <div data-spy="scroll" data-target="#myScrollspy" data-offset="0" style="height:200px;overflow:auto; position: relative;"> <div class="section"> <h4 id="ios">iOS<small><a href="#" onclick="removeSection(this);"> × Удалить эту часть</a></small> </h4> <p>iOS - это мобильная операционная система, разработанная и выпущенная компанией Apple. Впервые была представлена в 2007 году с выходом iPhone, iPod Touch и Apple TV. iOS происходит из OS X, они共享 Darwin базу. OS X операционная система используется на компьютерах Apple, iOS - это мобильная версия Apple.</p> </div> <div class="section"> <h4 id="svn">SVN<small></small></h4> <p>Apache Subversion, обычно сокращенно SVN, - это开源 система управления версиями. Subversion был создан компанией CollabNet в 2000 году.但现在 он стал проектом Apache Software Foundation, поэтому имеет обширное сообщество разработчиков и пользователей.</p> </div> <div class="section"> <h4 id="jmeter">jMeter<small><a href="#" onclick="removeSection(this);"> × Удалить эту часть</a></small> </h4> <p>jMeter - это开源 тестовое программное обеспечение. Это 100% чистый Java-приложение, предназначенное для тестирования нагрузки и производительности.</p> </div> <div class="section"> <h4 id="ejb">EJB</h4> <p>Enterprise Java Beans (EJB) - это архитектура разработки, предназначенная для создания высоко масштабируемых и мощных корпоративных приложений, которая развертывается на платформе J2EE, совместимой с приложениями серверов (например, JBOSS, Web Logic и т.д.).</p> </div> <div class="section"> <h4 id="spring">Spring</h4> <p>Фреймворк Spring — это открытая платформа Java, которая предоставляет完备ную инфраструктуру для быстрого разработки мощных Java приложений.</p> <p>Фреймворк Spring был最初 написан Rod Johnson и впервые опубликован в июне 2003 года под лицензией Apache 2.0.</p> </div> </div> <span id="activeitem" style="color:red;"></span> <script type="text/javascript"> $(function() { removeSection = function(e) { $(".section").parents(e).remove(); $('[data-spy="scroll"]').each(function () { var $spy = $(this).scrollspy('refresh') }); } $("#myScrollspy").scrollspy(); $('#myScrollspy').on('activate.bs.scrollspy', function () { var currentItem = $(".nav li.active > a").text(); $("#activeitem").html("Выcurrently viewed - " + currentItem); }); }); </script> </body> </html>Проверьте, пожалуйста,‹/›
Результат отображается следующим образом:
Данный пример демонстрирует, как создать的水平ный скроллинг.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap Example</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> <style> body { position: relative; } #section1 {padding-top:50px;height:500px;color: #fff; background-color: #1E88E5;} #section2 {padding-top:50px;height:500px;color: #fff; background-color: #673ab7;} #section3 {padding-top:50px;height:500px;color: #fff; background-color: #ff9800;} #section41 {padding-top:50px;height:500px;color: #fff; background-color: #00bcd4;} #section42 {padding-top:50px;height:500px;color: #fff; background-color: #009688;} </style> </head> <body data-spy="scroll" data-target=".navbar" data-offset="50"> <nav class="navbar navbar-inverse navbar-fixed-top"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Название сайта</a> </div> <div> <div class="collapse navbar-collapse" id="myNavbar"> <ul class="nav navbar-nav"> <li><a href="#section1">Раздел 1</a></li> <li><a href="#section2">Раздел 2</a></li> <li><a href="#section3">Раздел 3</a></li> <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown" href="#">Раздел 4 <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#section41">Раздел 4-1</a></li> <li><a href="#section42">Раздел 4-2</a></li> </ul> </li> </ul> </div> </div> </div> </nav> <div id="section1" class="container-fluid"> <h1>Раздел 1</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> </div> <div id="section2" class="container-fluid"> <h1>Раздел 2</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> </div> <div id="section3" class="container-fluid"> <h1>Раздел 3</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> </div> <div id="section41" class="container-fluid"> <h1>Раздел 4 Подменю 1</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> </div> <div id="section42" class="container-fluid"> <h1>Раздел 4 Подменю 2</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> <p>Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке! Попробуйте прокрутить эту часть и посмотрите, как навигационная панель будет меняться при прокрутке!</p> </div> </body> </html>Проверьте, пожалуйста,‹/›
Следующий пример демонстрирует, как создать вертикальный скроллинг с наблюдением:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 示例</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> <style> body { position: relative; } ul.nav-pills { top: 20px; position: fixed; } div.col-sm-9 div { height: 250px; font-size: 28px; } #section1 {color: #fff; background-color: #1E88E5} #section2 {color: #fff; background-color: #673ab7} #section3 {color: #fff; background-color: #ff9800} #section41 {color: #fff; background-color: #00bcd4} #section42 {color: #fff; background-color: #009688;} @media screen and (max-width: 810px) { #section1, #section2, #section3, #section41, #section42 { margin-left: 150px; } } </style> </head> <body data-spy="scroll" data-target="#myScrollspy" data-offset="20"> <div class="container"> <div class="row"> <nav class="col-sm-3" id="myScrollspy"> <div class="container-fluid"> <div class="container-fluid"> <ul class="nav nav-pills nav-stacked"> <li class="active"><a href="#section1">Раздел 1</a></li> <li><a href="#section2">Раздел 2</a></li> <li><a href="#section3">Раздел 3</a></li> <li class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">Раздел 4 <span class="caret"></span></a> <ul class="dropdown-menu"> <li><a href="#section41">Раздел 4-1</a></li> <li><a href="#section42">Раздел 4-2</a></li> </ul> </li> </ul> </div> </div> </nav> <div class="col-sm-9"> <div id="section1"> <h1>Раздел 1</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как список навигации отображается при прокрутке!</p> </div> <div id="section2"> <h1>Раздел 2</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как список навигации отображается при прокрутке!</p> </div> <div id="section3"> <h1>Раздел 3</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как список навигации отображается при прокрутке!</p> </div> <div id="section41"> <h1>Раздел 4-1</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как список навигации отображается при прокрутке!</p> </div> <div id="section42"> <h1>Раздел 4-2</h1> <p>Попробуйте прокрутить эту часть и посмотрите, как список навигации отображается при прокрутке!</p> </div> </div> </div> </div> </body> </html>Проверьте, пожалуйста,‹/›