A gentle introduction to anchor positioning

(webkit.org)

92 points | by feross 11 hours ago

10 comments

  • quantummagic 4 hours ago
    Unless there is a polyfill for Firefox, it will be at least a couple of years before you can rely on this for public sites.
    • azangru 5 minutes ago
      > Unless there is a polyfill for Firefox

      Doesn't this count? Been there for several years.

      https://github.com/oddbird/css-anchor-positioning

    • 63stack 55 minutes ago
      There are already a few sites that don't work properly in Firefox, people started testing only for chrome because its market share is so big.

      Really unfortunate because it lets Google get away with anything they want, they are the new standard. But then again, I'm reminded of how Mozilla has pissed away all the users goodwill, and it's not a surprise.

  • falcor84 9 hours ago
    As mentioned at the end of TFA, Codepip's Anchoreum is an excellent way of learning this.

    [0] https://anchoreum.com/

  • eviks 2 hours ago
    Would be cooler if the whole system were more flexible: you simply define 2 anchor points (one on the target, another on the source, so center bottom would be bottom width 50% and top width 50%) instead of being limited to the 9 predefined areas
  • Antrikshy 3 hours ago
    `position-area` syntax feels a little tough to remember, but I'm glad top/right/bottom/left is still available.
  • xswhiskey 8 hours ago
    It being available on WebKit makes me hopeful for general adoption then.
    • MBCook 6 hours ago
      I’m surprised it’s not in Firefox. I don’t remember the last time I ran into something in Safari and Chrome but not FF.

      I was reading the article and thinking it would be a great thing to adopt for some code we recently wrote, but we have to support Firefox. And since we already have an existing solution that works, no point cleaning it up with this until Firefox adopts it.

      Still, looks like a very nice feature.

  • rtkwe 8 hours ago
    I was expecting boat anchors haha.
  • pupppet 10 hours ago
    Any day now, Firefox.
  • efilife 10 hours ago
    Do we really need this? Why won't position: absolute and setting top/left/bottom/right suffice?
    • adamschwartz 9 hours ago
      It solves many of the pain points Tether[0] tried to solve.

      For example it helps when the anchoring element is inside of an oveflow hidden/scroll container, but geometrically you need the tethered element to sit/extend outside of the container (so—for now at least—its DOM node needs to be outside of the container).

      [0] https://tetherjs.dev

    • netghost 3 hours ago
      Yes. Unless you want to rely on JavaScript libraries like popper and FloatingUI, we definitely need this for many use cases.

      The simplest example is if you have content that it not contained by the box you're positioning against. Think tooltips, popovers, etc.

      For some usecases like annotating content, this hugely simplifies things.

    • Antrikshy 3 hours ago
      That's fine for a lot of stuff. It becomes tricky to do certain other things. CSS-only tooltips are notoriously limited in scope.
    • cyral 7 hours ago
      This always results in a ton of hacky JS to detect how the element should reposition itself if it overflows the screen (depending on the content and screen size)
    • pupppet 6 hours ago
      This relies on being able to set the position relative to a parent selector, this doesn't work if the element you are positioning is not a descendant of the element you wish to anchor to.
    • bee_rider 6 hours ago
      Fundamentally no, html was fine. But hey it’s one fewer reason to reach for JavaScript, right?
  • RobRivera 8 hours ago
    Anchor post
  • danielvaughn 10 hours ago
    Anchor positioning sounds cool, but I ran into some very unintuitive behavior when I tried to use it. Can’t remember the details, it was a couple years ago.
    • bombcar 10 hours ago
      My problem is always been on sites that have a menu or something similar at the top. The anchor always inevitably goes to the very top of the screen gets covered by whatever menu it is.
      • chiefalchemist 9 hours ago
        Isnt there something like scroll-padding or scroll-margin? More or less an offset you can set so that doesn’t happen
    • jaffathecake 4 hours ago
      I guess you're being downvoted as a general nay-sayer, but you're right. I tried this feature last month and a bunch of browser bugs and design issues got in the way. I reported them, and they're being worked on https://github.com/w3c/csswg-drafts/issues/12466

      The `margin:0` issue was particularly frustrating & imo should have been covered in the article, as it's a real gotcha when trying to use popover & anchor positioning in combination.