Ask HN: Please stop making infinite scrolling websites
Sarcastic disclaimer: I am not backing my statements with facts. I think infinite scrolling websites are already a fact against themselves.
- They might be visually appealing (sometimes) but they are against usability, load and usefulness in general.
- Not even Pinterest (one of the most famous infinite scrollers advocates) allows you to go back to your scrolling level if you refresh.
- They are annoying. Their format fits mostly mobile devices where knowing where you are in a page is perceived differently (and sometimes totally not important).
- Fitting analytics (that make some sense) on infinite scrollers is another pain.
- If I am using a website for anything different from leisure, I want to use its content as a reference for something I need to share or use later.
- They were already despised in 2013: http://www.smashingmagazine.com/2013/05/03/infinite-scrolling-lets-get-to-the-bottom-of-this/
- They got XKCDed: https://xkcd.com/1309/
Even Google didn't like them, then got used to them: http://www.zdnet.com/article/google-tries-to-save-the-web-from-the-curse-of-infinite-scrolling/
Other sources http://www.nngroup.com/articles/infinite-scrolling/ http://www.sitepoint.com/ux-infinite-scroll-good-bad-maybe/ http://designmodo.com/infinite-scrolling/ https://econsultancy.com/blog/61703-infinite-scrolling-pros-and-cons/ https://www.linkedin.com/pulse/20140626160300-5182010-bad-website-bad-infinite-scrolling-pages https://www.quora.com/Is-infinite-scroll-and-parallax-design-good-or-bad-for-conversions-for-single-product-sites
- The only funny source: http://whitemenwearinggoogleglass.tumblr.com/
EDIT: improved readability
94 comments
[ 2.3 ms ] story [ 160 ms ] threadtake this: http://www.bld3r.com/
This argument has been used many times in the past against things that evolved to be common. Complain about the poor implementation, not the concept.
It's like how javascript doesn't mean dirtier code, but it can certainly favour it.
Does the fall of Rome prove that republics/democracies suck?
Does Chernobyl and Fukushima prove nuclear power sucks?
Electric cars, smartphones, personal computers, there are so many things that sucked before someone figured out how to get things right.
There's always more than one factor in play, and there are many arguments to be made on the viability of Communism, perhaps it was just ahead of its time.
An example of an infinite scroll that works is the one used in Discourse: http://www.discourse.org/
One way around this for a user ironically is to use page up and page down. I.e. hacked pagination of that vertical beast!
Discourse does a pretty good job of it. http://www.discourse.org/ or if you just want to try it http://discuss.emberjs.com/t/ember-cli-the-ramcat-way/7666/1...
One thing I see frequently which is preposterous is infinite scroll on pages that actually have a footer which is pretty much impossible to access.
What is a crash on an iPad1 is a major slowdown on a netbook. In five years when web pages get even heavier, it'll be a crash on a netbook too.
Eg:
Goes to: Even more work in implementation, admittedly. ;)How do pdf viewers handle this wrt memory conservation. If you have a 1000 page pdf, scroll through a couple of hundred pages (using a infinite scroll type view), what does the viewer do with viewed content, it has to cache it somehow, right?
Maybe the infinite scroll needs to be more accomodated by the browsers rather than just not used. I know in certain circumstances (image search, reddit on mobile) that I find it useful.
Some site (Tumblr I think) did something like this a while ago where it would do something like this, it was very fluid:
1. When a new section has been appended to the bottom of the page…
2. Calculate the current height if the topmost div and save it explicitly as the div's height…
3. Then remove all content from that div.
4. And when another new section has been loaded and appended do the same thing, but with the second topmost and so on.
Notice that when you scroll, the page value changes, and when you scroll back up, the browser re-fetches the content.
Parallax scrolling: get out.
http://scrollsample.appspot.com/items https://news.ycombinator.com/item?id=7314965
Just give me the option to turn it off or something.
Left/right navigate _within_ a page or position a page. I'll immediately close the tab where I go to a different page.
Imgur is an extreme exception.
NY Times is the worst case of abuse which comes to mind. Fuck them.
As in: in utter disgust of the page's behavior and hijacking of UI controls.
EDIT: not saying it's optimal, just that it ought to at least get you to where you could apply for a job.
You could stop by adding a breakpoint, for sure, but it seems like you're suggesting there's a method accessible to normal users? An addon. (I'm on FF but interested if there's such an option in any other mainstream browser).
Just because you can use a feature, doesn't mean you should.
One thing in particular that really annoys me is things like Ctrl + A tend to be really annoying. If you want to select everything, it makes it really difficult.
--------
some background pic
some call to action
---------
about section
----------
product section
----------
other people are saying section
---------
example usage section
---------
api docs section
---------
some social section
----------
footer
-----------
And as you scroll down the page, various transitions and animations (powered by jquery) popped out telling you more about the product / asking you to make an account.
I personally have made a good handful of websites like this, but I never really enjoyed the scrolling down craze because I use Emberjs and dumping everything into one application.hbs really isn't what Ember is about. But what's the consensus out there? Do people enjoy layouts like this?
edit: formatting
Now I battle it. Are you scrolled halfway between this animation and that one? Good luck, things are halfway animated, or block things, and my attention is drawn from the information to this stupid moving thing.
It is somewhat more reasonable with a touch screen; either my laptop or phone, but I don't tend to do serious browsing on my phone anyway (I ain't a young'un, and my eyesight doesn't reward such activities).
At least it is better than the text on top of an image thing that used to be the rage (thanks Wired!) which made the page impossible to read.
It avoids the issues of infinite scrolling really well. What you do is have a very tall div, say 8 million pixels. Inside of that you add a div that you move around as the page scrolls, let's call it the viewport. Whenever there is a scroll event, you check and see if the viewport is no longer visible on the screen and then repopulate its contents.
This is indistinguishable from a very long page as far as the user is concerned. You can grab the scrollbar and jump halfway down. You can hit the "END" key and jump all the way to the end of the results. If you scroll faster than content can be loaded, scrolling doesn't suddenly stop when you reach the end of the loaded content, then have the content appear and have to start scrolling again.
The back and forward buttons work as expected, at least in all the browsers I've tried. Refresh does too. This doesn't require any extra work on my part. The browser goes back to the page and sets the scroll position correctly, which fires an onscroll event. This is then treated like a normal user scroll, which will cause the viewport to be moved and the necessary information to be drawn.
In my case it's a grid of square images so the math is straightforward. I load three extra rows above and below what is visible in the viewport.
Unfortunately, I don't have a demo available in a public place. I've implemented this in jquery, then again in ember, then again in react (as ember was too slow). I'm working on getting it working with the ember glimmer branch. If you're interested in looking at my broken code, it's at https://github.com/jewel/hypercheese.
If you are using infinite scroll to replace pagination, please consider using this technique.
Edit: SlickGrid has something they call "virtual scrolling" that appears to be using a similar technique. Here is a spreadsheet with 500,000 rows: http://mleibman.github.io/SlickGrid/examples/example-optimiz...
With use of url hashes, you can even deep-link to specific scroll positions, allowing links to be shared sanely.
As you have to know the dimensions of each "page" upfront to keep the scrollbar honest, I think this technique fits better with image-based content; textual content can have unpredictable flowing with different browser fonts, plus as siblings have noted it breaks ctrl-f.
[1]: http://tangent128.name/depot/toys/freefall/freefall-flytable... [2]: https://github.com/Tangent128/freefall-speedreader
http://mcfunley.com/design-for-continuous-experimentation
One of the examples he uses was how Etsy spent months engineering an infinite scroll feature in their product search -- without any debate over whether it would be successful (at that time, just about every big site, Tumblr, Facebook, Twitter, etc had implemented it)...When they finally finished, their A/B testing found that infinite scroll had a profound negative impact on user engagement. This talk was from a couple years ago, I rechecked Etsy and it still looks like they haven't gone back to infinite scroll.
McKinley said they didn't know exactly know or investigate why infinite scroll (he said that there didn't seem to be any technical problem) caused this negative effect, just that it was undeniably a negative effect, and it was a lesson in how you should not just jump into a big project without experimentation at every step. My theory is that when it comes to finding for what you are intentionally searching for (and this applies to Google and Amazon) and then acting upon it (i.e. a purchase), infinite scroll may seem more helpful but in reality, it may cause the user to get "lost"...The user might see something interesting in the first page of results, but rather than stopping to check out those results, the infinite scroll tempts them to keep going and going...and after having consumed several pages of results, the user forgets that there were good things at the top, and never returns to them.
edit: that said, when it comes to just browsing a stream, i.e. leisurely discovery for Facebook/Twitter/Tumblr...I think infinite scroll feels like the right feature.
[1] http://danwin.com/2013/01/infinite-scroll-fail-etsy/
This could be a good start: http://motherfuckingwebsite.com/.
[1] http://en.wikipedia.org/wiki/Dogme_95
So, if you agree that your content isn't worth remembering/referencing later, go for infinite scrolling. Every visitor will instantly see the value of the site.
The tricky part is inserting the previous content. It requires a combination of setting overflow:hidden on the container to disable the scrollbar, inserting the previous content, adjusting the top positions, then re-enabling overflow to restore the scrollbars. It has to be done very quickly to avoid visible content jumps and getting it to work well across browser platforms wasn't easy.
Switch to portrait and at least the text scrolls past on top of the image. But text and image are the same colour, so you can't actually read it.
And don't use links/buttons that simply scroll to a different part of your way too long page.
Just don't even put completely different pages (about 1 screen height each if I'm lucky) below one another.
To be more constructive: If you must have a sticky header bar with link buttons, just let me use left/right arrow keys or left/right swipes to navigate them
Thank you.