Элемент не должен теряться
У меня была задача со спойлерами.
Решение которой здесь: http://javascript.ru/forum/jquery/67...dgruzkojj.html В показанном решении есть небольшой недостаток. Решение само, безусловно, замечательное. Дело в том, что раскрытый спойлер может теряться: его может быть не видно на экране, а чтобы увидеть такую "потеряшку", нужно выполнять прокрутку. Нажал на спойлер, а он убежал за область видимости экрана. Т. е. не "раскрыл - увидел", а "раскрыл - прокрутил к - увидел". Лишнее действие. Хотелось бы избежать лишней прокрутки. Как сделать так, чтобы лишнего действия (прокрутки) избежать? |
Это происходит, если спойлеров много, а внутри них достаточно много текста.
|
daslex,
Цитата:
|
Знать бы, что искать ещё.
|
|
|
Возможно, оно.
Как тот код переправить к своему варианту я не знаю... |
daslex,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.spoiler_body {
display: none;
}
.active{
display: block;
}
body{
height: 2000px;
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(function() {
$(".spoiler_head").click(function() {
var a = $(this).next(".spoiler_body");
$(".spoiler_body").not(a.toggleClass("active")).removeClass("active");
a.is(".active") && a[0].scrollIntoView();
})
});
</script>
</head>
<body>
<div class="spoiler_head">Спойлер №1 (кликните для открытия/закрытия)</div>
<div class="spoiler_body">Текст спойлера 1</div>
<div class="spoiler_head">Спойлер №2 (кликните для открытия/закрытия)</div>
<div class="spoiler_body">Текст спойлера 2</div>
<div class="spoiler_head">Спойлер №3 (кликните для открытия/закрытия)</div>
<div class="spoiler_body">Текст спойлера 3</div>
<div class="spoiler_head">Спойлер №4 (кликните для открытия/закрытия)</div>
<div class="spoiler_body">Текст спойлера 4</div>
</body>
</html>
|
Спасибо.
Можно немного это изменить и делать мгновенный скроллинг? Мне не нужно, чтобы видно было, как страница прокручивается. |
daslex,
смотрите код выше снова |
| Часовой пояс GMT +3, время: 05:49. |