I recently needed to make a donut chart for a reporting dashboard at work. I wanted it to dynamically calculate its segments based on an arbitrary set of values, have labels, scale well across all screen sizes and devices be accessible, and cross-browser compatible, among other things. This article details the steps I took to do that, using Vue.js.
This is a follow up to my previous post looking into clip paths. Last time around, we dug into the fundamentals of clipping and how to get started. We looked at some ideas to exemplify what we can do with clipping. We’re going to take things a step further in this post and look at different examples, discuss alternative techniques, and consider how to approach our work to be cross-browser compatible.
Here's a little example that Jeremy Keith used to use in his talks. It's stuck with me as one of the coolest examples of progressive enhancement and Technology Being CoolTM around.
There is this musical notation format called abc. They don't capitalize it. Kinda like npm, which I guess makes sense as it isn't an acronym. But it is the name of something so it's super awkward. Ughakdhk. Anyway.
The format itself is really cool. It's super simple and text-based. (more…)
A reader wrote in to tell me we should update our articles about SVG
<use></use> elements. The attribute we always use for them,
xlink:href, is deprecated. Indeed, MDN says:
One of the cool things about
<svg> is that it's literally its own document, so
@media queries in CSS inside the SVG are based on its viewport rather than the HTML document that likely contains it.
This unique feature has let people play around for years. Tim Kadlec experimented with SVG formats and which ones respect the media queries most reliably. Sara Soueidan experimented with that a bunch more. Jake Archibald embedded a canvas inside and tested cross-browser compatibility that way. Estelle Weyl used that ability to do responsive images before responsive images.
Another thing that has really tripped people's triggers is using that local media query stuff to make responsive logos. Most famously Joe Harrison's site, but Tyler Sticka, Jeremy Frank, and Chris Austin all had a go as well.
Nils Binder has the latest take. Nils take is especially clever in how it uses
<symbol>s referencing other
<symbol>s for extra efficiency and
min-aspect-ratio media queries rather than magic number widths.
For the record, we still very much need container queries for HTML elements. I get that it's hard, but the difficulty of implementation and usefulness are different things. I much prefer interesting modern solutions over trying to be talked out of it.
From time to time at Stackoverflow, the question pops up whether there is an equivalent to the
stroke-dashoffset technique for animating the SVG
stroke that works for the
fill attribute. But upon closer inspection, what the questions are really trying to ask is something like this:
I have something that is sort of a line, but because it has varying brush widths, in SVG it is defined as the fill of a path.
How can this "brush" be animated?