How to replicate background-attachment fixed on iOS [duplicate]
Asked Answered
R

2

95

I'm trying to get fixed-background-image divs working on iOS for a school project. I've been using

background-attachment: fixed;

But this is leading to weird sizing and no scrolling effects in mobile safari. Here is the site that I'm working with; the method I'm currently using for the quote div image backgrounds works well on desktops but fails completely on iOS.

Somehow, http://www.everyonedeservesgreatdesign.com got this working. I'm having difficulty following the code because they're using a squarespace template of some kind, but it looks like they're putting images into a position:fixed div that is somehow being clipped by its position:relative parent div. I was under the impression that it wasn't possible to clip position:fixed divs with anything other than the viewport, so I'm very curious as to what's going on here.

Any ideas on how to implement this method for fixed image div backgrounds in my site?

Retract answered 23/4, 2014 at 6:11 Comment(2)
Hey this is not related to your question but the links in the bottom break your layout in mobile. Try putting some overflow-x hidden to the body and the mail div so it doesn't scroll horizontally.Kicker
This is marked as a duplicate yet no duplicate question has been identified and this is the question with the most upvotes. SMH.Underlay
K
128

It has been asked in the past, apparently it costs a lot to mobile browsers, so it's been disabled.

Check this comment by @PaulIrish:

Fixed-backgrounds have huge repaint cost and decimate scrolling performance, which is, I believe, why it was disabled.

you can see workarounds to this in this posts:

Fixed background image with ios7

Fixed body background scrolls with the page on iOS7

Kicker answered 2/5, 2014 at 3:57 Comment(5)
I'm curious about the specific technique being used by everyonedeservesgreatdesign.com, which seems to be unique in that it uses images with position:fixed instead of a javascript-based workaround.Retract
It is not just css, look at #parallax-images div the image-container has inline css. This is handled in static.squarespace.com/static/ta/515c7b5ae4b0875140c3d94a/2476/…Kicker
Ah, thank you. I was really wondering how they managed to pull off the effect without js; looks like the answer is that they did not.Retract
This is interesting. I don't know if this was true five years ago, but not only is this not disabled on android, but profiling with and without a fixed background I only see a 1% framerate difference. iOS should remove this limitation...Wakerobin
The comment is not a defined conclusion but more of an assumption. We need more data to be ensured about that.Manhood
G
2

It looks to me like the background images aren't actually background images...the site has the background images and the quotes in sibling divs with the children of the div containing the images having been assigned position: fixed; The quotes div is also given a transparent background.

wrapper div{
   image wrapper div{
       div for individual image{ <--- Fixed position
          image <--- relative position
       }
   }
   quote wrapper div{
       div for individual quote{
          quote
       }
   }
 }
Gastrotomy answered 8/5, 2014 at 16:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.