scrollIntoView () не прокручивает узел к вершине дерева - PullRequest
0 голосов
/ 30 апреля 2019

У меня проблема с функцией scrollIntoView(). У меня есть дерево и две кнопки:

  1. первый из них прокрутит дерево до нижнего узла
  2. секунда прокрутит дерево до верхнего узла

Я не знаю, что мне делать, чтобы эта операция прокрутки всегда прокручивала узел до вершины дерева. Я имею в виду ситуацию из этой скрипки:

http://jsfiddle.net/presto41/xzb62pw5/8/

Если вы нажмете кнопку #button1 (Scroll to bottom node), то дерево будет прокручиваться до нижнего узла - но нижний узел не будет в верхней части дерева. Он работает как "просто показать узел. Готово".

Я хочу, чтобы при этом сценарии прокрутка до нижнего узла работала как прокрутка до верхнего узла:

  1. нажмите на #button1 (Scroll to bottom node)
  2. нажмите #button2 (Scroll to top node)
  3. topNode находится на вершине дерева

Есть идеи? Я пытался манипулировать этой scrollIntoView() функцией с помощью options , но либо я делал что-то не так, либо он не работает, как я ожидал.


Редактировать: Я не понимаю, почему кто-то дает мне минус за этот вопрос. я сделал исследование, я пытался решить эту проблему сам, и я поставить четкое описание моей проблемы. Это раздражает.


Редактировать 2: У меня нет идентификаторов этих узлов. У меня есть только узел, как Fancytree.FancytreeNode объект, поэтому мне нужно решение без операции по идентификатору узла.


Редактировать 3: это мой псевдокод, который больше всего похож на оригинал: http://jsfiddle.net/presto41/xzb62pw5/27/

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Я нашел решение. Решение функциональное:

function expandAndScrollTo(node) {
       node.setExpanded(true).then(()=>{
       node.span.scrollIntoView({behavior:'smooth', inline:'start'});
  });}
0 голосов
/ 30 апреля 2019

Использование scrollIntoView () предназначено для прокрутки элемента с id = "content" в видимой области окна браузера:

    var el = document.getElementById("content");
    el.scrollIntoView();

однако вы можете использовать

    function scrollToBottom(){
       var eldiv = document.getElementById("content");
       eldiv.scrollTop = div.scrollHeight - div.clientHeight;
    }
    function scrollToTop(){
       var eldiv = document.getElementById("content");
       eldiv.scrollTop = 0;
    }
...