Элемент не должен теряться
У меня была задача со спойлерами.
Решение которой здесь: 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, время: 07:10. |