Comments (11)
here is a solution
let item = // what we want to scroll to
let wrapper = // the wrapper we will scroll inside
let count = item.offsetTop - wrapper.scrollTop - xx // xx = any extra distance from top ex. 60
wrapper.scrollBy({top: count, left: 0, behavior: 'smooth'})
from smoothscroll.
This is an old thread but I just came across it while working out my own solution. Using scroll()
instead of scrollBy()
seems to make a lot more sense to me.
I simply did...
var offset = 50; // sticky nav height
var el = document.querySelector('.some-element'); // element you are scrolling to
window.scroll({ top: (el.offsetTop - offset), left: 0, behavior: 'smooth' });
from smoothscroll.
In case anyone's still searching, I got around this issue with a fixed position header by setting the { block: 'end' }
option for my element in element.scrollIntoView(options).
This conveniently lines it up based on the bottom of the element rather than the top, and you can take care of the height of the element yourself by simply subtracting the height of your header or other fixed element.
from smoothscroll.
That helped in my case —
HTML
<div class='stick-to-top'></>
Javascript
document.getElementsByClassName('stick-to-top')[0].scrollIntoView({behavior: "smooth", block: "center"});
CSS
.stick-to-top {
padding-bottom: 400px;
}
from smoothscroll.
I'd also love this, or some way of having a callback when animation is finished to be able to re-adjust the element.
from smoothscroll.
If there are some element floating that will imply the scrolling need to be readjust you need to manually get the y position of the elements and use window.scroll
with the resulting metrics gathered.
from smoothscroll.
On @joshuatuscan comment, I would absolutely love a callback for when the scroll movement is completely done. 👌🏻
from smoothscroll.
People, remember this is a polyfill and not a library. Unless a callback is added to the spec is not likely to make it in the code.
The best option is to listen to the scroll event and check for the final y
position to execute some call and later remove the listener until a new smooth scroll ocurrence.
from smoothscroll.
It's a good suggestion but does not apply to any sort of website with fixed height content as this would break when tested on larger devices with smaller scrolling distance.
from smoothscroll.
somebody know how to do? or need use offset and animation to move from top?
from smoothscroll.
Closing since the feature requested is not included in the official specs. If you find a use case that works on native implementations and not with the polyfill feel free to report it. Thanks!
from smoothscroll.
Related Issues (20)
- smoothscroll no working when added @media query to document HOT 1
- Newest version isn't published to NPM because of that Cloudflair CDN can't get newest version HOT 2
- Body can't be used as scroll-container HOT 4
- Smoothscroll Flickering Page Elements and too fast on Safari 13.0.5 HOT 2
- Make scrollIntoView work for Safari and SVGElement HOT 4
- smooth scroll is not working in chrome version>=81 HOT 2
- [Feature Request] Padding option HOT 2
- Doesn't work with Safari CSS Scroll Snap HOT 3
- window.scrollTo with behavior: 'smooth' doesn't scroll to the top of the page with safari
- Check for existence of window to support SSR HOT 3
- null as the first argument causing a TypeError
- smoothscroll from <script> tag not working HOT 1
- Accessibility: respect prefers-reduced-motion
- Not working with window.parent? HOT 1
- Support for `scrollTop` & `scrollLeft` for Elements
- scrollIntoView with arguments is not working HOT 3
- Polyfill not working on Safari 15 (iOS & macOS) HOT 24
- Cannot scroll center for scrollIntoView in iOS HOT 4
- Support scrollBehavior after connecting the polyfill
- undefined is not an object (evaluating 'e.clientHeight')
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smoothscroll.