English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Bootstrap базовый учебник

Bootstrap плагины

Bootstrap плагин отслеживания скроллинга (Scrollspy)

Плагин отслеживания скроллинга (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>
Проверьте, пожалуйста,‹/›