Próbuję przenieść stronę do <div>
elementu.
Próbowałem następnego kodu bez skutku:
document.getElementById("divFirst").style.visibility = 'visible';
document.getElementById("divFirst").style.display = 'block';
javascript
html
DO..
źródło
źródło
visibility
idisplay
służą do uwidocznienia elementów (nie). Czy chcesz przewinąć element DIV na ekranie?el.scrollIntoView(true)
Odpowiedzi:
Możesz użyć kotwicy, aby „skupić” element div. To znaczy:
a następnie użyj następującego javascript:
źródło
location.href="#";location.href="#myDiv"
. Używanieid="myDiv"
jest preferowanename="myDiv"
i działa też.scrollIntoView działa dobrze:
pełne odniesienie w dokumentacji MDN:
https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView
źródło
scrollIntoView
Twoje pytanie i odpowiedzi wyglądają inaczej. Nie wiem, czy się mylę, ale dla tych, którzy szukają w Google i docierają tutaj, moja odpowiedź byłaby następująca:
Moja odpowiedź wyjaśniła:
tutaj jest prosty skrypt javascript do tego
wywołaj to, gdy chcesz przewinąć ekran do elementu, który ma id = "yourSpecificElementId"
to znaczy. na powyższe pytanie, jeśli intencją jest przewinięcie ekranu do div o identyfikatorze 'divFirst'
kod wyglądałby następująco:
window.scroll(0,findPos(document.getElementById("divFirst")));
i potrzebujesz tej funkcji do pracy:
ekran zostanie przewinięty do konkretnego elementu.
źródło
window
chcesz przewijać, a nie przepełniony obszar wyświetlania[curtop]
, abycurtop
na koniec(window.screen.height/2)
od findPosDla Chrome i Firefox
Trochę się temu przyglądałem i znalazłem ten, który wydaje się być najbardziej naturalnym sposobem na zrobienie tego. Oczywiście jest to teraz mój ulubiony zwój. :)
Dla zwolenników IE, Edge i Safari
Pamiętaj, że
window.scroll({ ...options })
nie jest obsługiwane w przeglądarkach IE, Edge i Safari. W takim przypadku najlepiej jest użyćelement.scrollIntoView()
. (Obsługiwane w IE 6). Najprawdopodobniej możesz (czytaj: nieprzetestowane) przekazać opcje bez żadnych skutków ubocznych.Można je oczywiście opakować w funkcję, która zachowuje się w zależności od używanej przeglądarki.
źródło
window.scroll
Spróbuj tego:
np. @:
źródło
element.tabIndex
ale nieelement.tabindex
; druga działa na Firefoksie, ale nie na Chrome (przynajmniej kiedy próbowałem go jakiś czas temu). Oczywiście, używany jako atrybut HTMLtabIndex
itabindex
działa (i na XHTML,tabindex
musi być używany)Aby przewinąć do danego elementu, po prostu zrobiłem to rozwiązanie tylko javascript poniżej.
Proste użycie:
Obiekt silnika (możesz bawić się filtrem, wartościami fps):
źródło
Oto funkcja, która może zawierać opcjonalne przesunięcie dla tych stałych nagłówków. Żadne zewnętrzne biblioteki nie są potrzebne.
Możesz pobrać wysokość elementu za pomocą JQuery i przewinąć do niego.
Aktualizacja marzec 2018
Przewiń do tej odpowiedzi bez używania JQuery
źródło
Możesz ustawić fokus na element. Działa lepiej niż
scrollIntoView
node.setAttribute('tabindex', '-1')
node.focus()
node.removeAttribute('tabindex')
źródło
Najlepsza, najkrótsza odpowiedź, że to, co działa nawet z efektami animacji:
Jeśli masz stały pasek nawigacji, po prostu odejmij jego wysokość od górnej wartości, więc jeśli stała wysokość paska wynosi 70 pikseli, linia 2 będzie wyglądać następująco:
Objaśnienie: Linia 1 pobiera pozycję elementu Linia 2 przewija do pozycji elementu;
behavior
właściwość dodaje płynny efekt animacjiźródło
Fokus można ustawić tylko na elementach interaktywnych ... DIV reprezentują tylko logiczną sekcję strony.
Być może możesz ustawić obramowanie wokół div lub zmienić jego kolor, aby zasymulować ostrość. I tak Widoczność nie jest skupiona.
źródło
Myślę, że jeśli dodasz tabindex do swojego div, będzie on mógł uzyskać fokus:
Nie sądzę jednak, że jest to poprawne, tabindex można zastosować tylko do obszaru, przycisku, wejścia, obiektu, zaznaczenia i obszaru tekstu. Ale spróbuj.
źródło
tabindex
jest to „podstawowy atrybut”, czyli „atrybuty globalne” (atrybuty, które są wspólne dla wszystkich elementów w języku HTML). Zobacz w3.org/TR/2011/WD-html-markup-20110113/global-attributes.htmlPodobne do rozwiązania @ caveman
źródło
Nie możesz skupić się na div. Możesz skupić się tylko na elemencie wejściowym w tym div. Ponadto musisz użyć element.focus () zamiast display ()
źródło
<div>
ustawić fokus, używająctabindex
atrybutu. Zobacz dev.w3.org/html5/spec-author-view/editing.html#attr-tabindexPo długim rozglądaniu się, to w końcu zadziałało:
Znajdź / zlokalizuj div w swojej domenie, który ma pasek przewijania. Dla mnie wyglądało to tak: "div class =" table_body table_body_div "scroll_top =" 0 "scroll_left =" 0 "style =" width: 1263px; wysokość: 499px; "
Zlokalizowałem to za pomocą tej ścieżki xpath: // div [@ class = 'table_body table_body_div']
Użył JavaScript do wykonania przewijania w następujący sposób: (JavascriptExecutor) sterownik) .executeScript ("arguments [0] .scrollLeft = arguments [1];", element, 2000);
2000 to liczba pikseli, które chciałem przewinąć w prawo. Użyj scrollTop zamiast scrollLeft, jeśli chcesz przewijać div w dół.
Uwaga: próbowałem użyć scrollIntoView, ale nie działało to poprawnie, ponieważ moja strona internetowa zawierała wiele elementów div. Będzie działać, jeśli masz tylko jedno główne okno, w którym znajduje się fokus. To najlepsze rozwiązanie, z jakim się spotkałem, jeśli nie chcesz używać jQuery, czego ja nie chciałem.
źródło
Metoda, której często używam do przewijania kontenera do jego zawartości.
jeśli chcesz nadpisać globalnie, możesz również zrobić:
źródło
Ze względu na zachowanie "płynne" nie działa w Safari, Safari ios, Explorer. Zwykle piszę prostą funkcję wykorzystującą requestAnimationFrame
źródło
Jeśli chcesz używać html, możesz po prostu użyć tego:
i uczyń z niego link html do określonego identyfikatora elementu. Jego zasadniczo
getElementById
wersja html.źródło
spróbuj tej funkcji
Przekaż id div jako parametr, który zadziała. Już go używam
źródło
$j
?