Slow Movement
There was a time when I felt overwhelmed by how fast the web developed. It seemed like not a single day passed without a new plugin, framework, technique, or language feature being released. I believed that in order to survive as a freelancer and to compete with others I had to learn everything everyone else was so good at: webpack, React, Angular, SVGs, Houdini, CSS Grid Layout, ES6, you name it. Being active on Twitter and going to conferences didn’t help with that because I was constantly exposed to all the new things.
Surrender
At some point, I surrendered. I decided for myself that I can’t keep up. Professionally it changed nothing for me because, in reality, no one expected me to know everything and this impression I had was only happening in my bubble anyway. Slowing down was a brilliant decision because it wasn’t just a mental relief, it also helped me focus on the things I actually wanted to learn. I still read newsletters, blogs and Twitter, and I still take some time to try something new every now and then, but I do it without pressure. I try to keep up-to-date but I don’t feel the urge to know everything.
This is how I have been dealing with developments on the web over the past few years, but recently, especially this year, I learned something new. It wasn’t a framework or language — it was the insight that in our aspiration for innovation and progress, we’re neglecting to draw on the many features HTML, CSS, and JavaScript offer today. In other words: there’s so much we can learn if we look back instead of ahead.
Don’t go chasing waterfalls
I’m speaking of neglect because I believe that there’s a significant divide between the things we believe we know about front-end languages and what we actually should know.
HTML
It’s part of my job and a hobby to inspect websites and evaluate the quality of their front-end. I’ve looked under the hood on many websites, and I can only confirm what web accessibility experts preach every day: most HTML documents are in terrible shape. If you don’t believe me, just look at the data:
- 98.1% of the top 1,000,000 home pages have detectable WCAG 2 failures.
- Thousands of websites contain
and
elements.
- After title and meta, div is the most popular element.
- On average, we only use about 30 of the 110+ available elements.
There’s a massive difference between knowing HTML syntax and knowing how to use it properly. When it comes to writing well-structured, semantic HTML documents, we all can use a little refresher. In 2020, I’ve spent a good deal of my time learning HTML and I hope that users of the websites I build can benefit from my insights.
Two of my favorite things I’ve learned about HTML in 2020:
You can change the filename of a downloadable file by defining a value in the download
attribute.
<a href="files/yxcvc27.pdf" download="report.pdf">Download (2MB)</a>
You can use the value
attribute to change the numbering in an ordered list.
<ol>
<li value="3">C</li>
<li value="2">B</li>
<li value="1">A</li>
</ol>
CSS
Almost every time I look up a CSS property on MDN or CSS-Tricks, I discover something new. Try it yourself. Search for margin
, list-style-type
or color
. I’m sure you’ll learn something.
The list of things I’ve learned about CSS in 2020 is pretty long, here are two of my favorites.
You can use the url()
function as (part of) the value of the content
property.
div::before {
content: url('marker-icon.png');
}
You can implement native smooth scrolling in CSS.
// Animate scrolling only if users don't prefer reduced motion
@media (prefers-reduced-motion: no-preference) {
html {
scroll-behavior: smooth;
}
// Add some spacing between the target and the top of the viewport
:target {
scroll-margin-top: 0.8em;
}
}
JavaScript
I write JavaScript regularly, but it’s not one of my core strengths, so I learn new things about it all the time. Here are two of my favorites this year:
You can use the nomodule
attribute to run JavaScript code only in browsers that don’t support JavaScript modules.
<script nomodule>
console.log('This browser doesn't support JS Modules.');
</script>
<script type="module">
console.log('This browser supports JS Modules.');
</script>
Conclusion
HTML is the backbone of every website; knowing how to write semantic documents should be every web developer’s top priority. CSS is, to its own extent, so complex that in order to learn new concepts we must understand which problems they solve compared to older techniques. JavaScript frameworks and libraries come and go, but what they all have in common is that they’re written in vanilla JavaScript.
In 2020, I relearned things I had already forgotten and discovered new things about established elements and properties. There’s so much hidden knowledge to find if you only look for it. I’ll expand on that in 2021 because there’s so much awesome stuff to discover.
The post Slow Movement appeared first on CSS-Tricks.
You can support CSS-Tricks by being an MVP Supporter.