I noticed scrollIntoView
has some new options since last I looked.
Namely, block
and inline
. What's the difference between these two? I'm guessing {block: "start"}
will align the top of the element with the top of the page, but I'm not sure how that would be different from inline
, or how you would use both these options simultaneously?
The scrollIntoView() method scrolls an element into the visible area of the browser window.
Native method: scrollIntoView The usage is simple, just like this: function scroll(e) {e. scrollIntoView({behavior: "smooth", block: "start"});}scroll(document. getElementById(YOUR_DIV_ID));
scrollIntoView(true);", element); This works for vertical scrolling but not for horizontal.
scrollIntoView on Android Browser is fully supported on 97-103, partially supported on 2.3-4, and not supported on below 2.3 Android Browser versions. scrollIntoView on Opera Mobile is fully supported on 64-64, partially supported on 10-12, and not supported on below 10 Opera Mobile versions.
The block
option decides where the element will be vertically aligned inside the visible area of its scrollable ancestor:
{block: "start"}
, the element is aligned at the top of its ancestor.{block: "center"}
, the element is aligned at the middle of its ancestor.{block: "end"}
, the element is aligned at the bottom of its ancestor.{block: "nearest"}
, the element: The inline
option decides where the element will be horizontally aligned inside the visible area of its scrollable ancestor:
{inline: "start"}
, the element is aligned at the left of its ancestor.{inline: "center"}
, the element is aligned at the centre of its ancestor.{inline: "end"}
, the element is aligned at the right of its ancestor.{inline: "nearest"}
, the element: Both block
and inline
can be used at the same time to scroll to a specified point in one motion.
Check out the following snippet to see how each works in action.
Snippet:
/* ----- JavaScript ----- */ var buttons = document.querySelectorAll(".btn"); [].forEach.call(buttons, function (button) { button.onclick = function () { var where = this.dataset.where.split("-"); document.querySelector("div#a1").scrollIntoView({ behavior: "smooth", block: where[0], inline: where[1] }); }; });
/* ----- CSS ----- */ body { padding: 500px; width: 2000px; } header { position: fixed; top: 0; left: 0; width: 100; } div#a1 { width: 1000px; height: 300px; background: url(//www.w3schools.com/css/trolltunga.jpg); background-repeat: no-repeat; }
<!----- HTML -----> <header> <button class="btn" data-where="start-start">T-L</button> <button class="btn" data-where="start-center">T-C</button> <button class="btn" data-where="start-end">T-R</button> <button class="btn" data-where="center-start">C-L</button> <button class="btn" data-where="center-center">C-C</button> <button class="btn" data-where="center-end">C-R</button> <button class="btn" data-where="end-start">B-L</button> <button class="btn" data-where="end-center">B-C</button> <button class="btn" data-where="end-end">B-R</button> </header> <div id = "a1"></div>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With