Show HN: Make SVGs interactive in React with 1 line

(svggles.vercel.app)

54 points | by shantingHou a year ago ago

22 comments

  • paulirish a year ago

    I love playful interaction too, but you can get all this for free: SVGs are natively interactive.

    Here's your demo in 45 lines of SVG and CSS: https://codepen.io/paulirish/pen/gbOZXJp

    • culi a year ago

      From what I read of the docs, it's a pretty lightweight "library" that's actually mainly just a collection of css classes you can attach to an svg

  • yomielu a year ago

    Awesome work! Not sure if this is intentional but it looks like the (lack of) contrast on the text vs background color is making it hard to read anything on the landing page.

  • westurner a year ago
  • simlevesque a year ago

    This example doesn't seem to work, I hover it and nothing happens, in incognito, chrome latest: https://svggles.vercel.app/?tab=Documentation%2FHover%2FAnim...

    • nartho a year ago

      You need to hover the heart in the middle, not just the card.

    • a year ago
      [deleted]
  • westurner a year ago
  • tracker1 a year ago

    Depending on what you're doing, I find SVG manipulation in React to come out pretty well. I've used it for overlays on scanned documents and basic charts without much issue at all.

    • culi a year ago

      I've used it for very complex visualizations and, as long as things are properly memoized, it has also turned out very well.

      SVG a11y standards are pretty undeveloped however which is disappointing

  • khaki54 a year ago

    Did you consider using lottie and its interactivity? What were the tradeoffs?

  • hersko a year ago

    Your landing page made my 9 year old laugh. Good work!

  • a year ago
    [deleted]
  • abdulyki a year ago

    Looks cool but isn't this just using gsap and having a wrapper around it?

  • ckemere a year ago

    Doesn't seem to do anything in firefox either.

    • jazzcomputer a year ago

      Try hovering over the symbols on the card - though I couldn't get the morph one to work on Firefox

  • 1ilit a year ago

    looks cool, you should probably gitignore some of the dirs there though

    • ge96 a year ago

      Reminds me when I was new to dev, I committed and pushed node_modules up ahh good times

      • 1ilit a year ago

        been there, done that

  • recursive a year ago

    It seems unusual to make the package name so different from the project name.

    Also, the instructions for converting svg to react component work sometimes. It won't work if your svg has any style attributes for example. React also warns on some valid svg attributes, such as this one.

        <rect x="11" y="11" width="8" height="8" stroke="green" clip-path="circle() view-box" />
    
    I've spent at least a day cleaning up after devs who just dropped inline SVG content into react components without checking whether it works. If you actually had a reliable way of embedding SVG in JSX in such a way that it worked with react, I might have use for it on occasion.

    The given code example is missing a right angle brace on the `<svg` line.