-
Notifications
You must be signed in to change notification settings - Fork 11
/
css2021.yml
470 lines (354 loc) · 21.9 KB
/
css2021.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
locale: pt-BR
translations:
###########################################################################
# Introduction
###########################################################################
- key: introduction.css2021
t: |
<span class="first-letter">D</span>o woodworkers have to learn a new, better way to saw a board every couple years? Do painters feel like frauds for still using oil paint? Or is it just us front-end developers who get to experience this constant state of change?
With container queries and more just around the corner, things are definitely moving fast. And since we need to keep up as well, we took the time to give these survey results a couple new power-ups of their own!
What this means in practice is that we can now cross-reference two datapoints, such as yearly salaries by experience level; or gender by country. You'll see some of these breakdowns included throughout the results, but we encourage you to explore the data further using [our API](https://api.stateofjs.com/) or by [downloading our data](https://www.kaggle.com/sachag/state-of-css). Let us know if you end up making your own data visualizations!
And now, let's see what CSS has been up to this year!
*Note: We've had to push back the 2021 [State of JavaScript](http://stateofjs.com/) survey to January 2022 for lack of time. See you after the holidays!*
<span class="conclusion__byline">– Sacha Greif</span>
###########################################################################
# Tshirt
###########################################################################
- key: sections.tshirt.title
t: T-shirt
- key: sections.tshirt.description
t: |
## Support the Survey With the State of CSS T-Shirt
Between the bad video quality, the bulky cassettes, and having to rewind, there's not much to miss about the VHS era. But one thing we *do* miss are the amazing 90s visuals that used to adorn blank VHS tapes.
But now, thanks to the talented Christopher Kirk-Nielsen you can enjoy all this retro radness while also celebrating your love for CSS at the same time!
- key: tshirt.about
t: About the T-shirt
- key: tshirt.description
t: |
We use a high-quality, super-soft tri-blend shirt with a slim fit printed by our partners at Cotton Bureau.
- key: tshirt.getit
t: Get It
- key: tshirt.price
t: USD $29 + shipping
- key: tshirt.designer.heading
t: About the Designer
- key: tshirt.designer.name
t: Christopher Kirk-Nielsen
- key: tshirt.designer.bio
t: |
Originally from France but now based in the United States, Chris is not just an amazing front-end developer, but also a talented illustrator who specializes in retro visuals. In fact, we encourage you to also check out his [other t-shirt designs](https://chriskirknielsen.com/designs)!
###########################################################################
# Sections Introductions
###########################################################################
- key: sections.user_info.description
t: |
This year's survey reached **8,714** developers throughout the world, and in order
to help highlight different voices and surface deeper insights, we made a special
effort to provide new ways to break our data down.
- key: sections.features.description
t: |
CSS's dynamism shows no sign of stopping, as developers make an effort to adopt the current
crop of new features while looking forward to even more innovation in the next few years.
- key: sections.technologies.description
t: |
With nearly 50% of respondents happily using one or more CSS-in-JS library, it's safe to say that
the category has managed to carve out its niche. Maybe the two sides of the front-end world are
not so far apart after all?
- key: sections.tools_others.description
t: |
Picking a technology can often come down to a series of tough choices between
competing priorities, and this year we tried to capture this process using a new bracket-style question format.
- key: sections.environments.description
t: |
Accessibility has long been an after-thought when it comes to web development, but many developers
are now realizing that it should in fact be the foundation on which everything else rests.
- key: sections.resources.description
t: |
Highlighting blogs, podcasts, and sites is fine, but this year we decided to go one step further
and actually feature the people who make up the CSS community themselves!
- key: sections.opinions.description
t: |
Whether it's pain points that hold you back today, or missing features that you hope to use
tomorrow, this was your chance to vent and share your gripes with CSS!
###########################################################################
# Charts
###########################################################################
- key: options.features_categories.layout
aliasFor: sections.layout.title
- key: options.features_categories.shapes_graphics
aliasFor: sections.shapes_graphics.title
- key: options.features_categories.interactions
aliasFor: sections.interactions.title
- key: options.features_categories.typography
aliasFor: sections.typography.title
- key: options.features_categories.animations_transforms
aliasFor: sections.animations_transforms.title
- key: options.features_categories.accessibility
aliasFor: sections.accessibility.title
- key: options.features_categories.media_queries
aliasFor: sections.media_queries.title
- key: options.features_categories.other_features
aliasFor: sections.other_features.title
###########################################################################
# Notes
###########################################################################
- key: blocks.gender.note
t: |
If you're interested in learning more, we [wrote a blog post](https://dev.to/sachagreif/is-our-survey-biased-against-women-49oj) that addresses the survey's gender dynamics.
- key: blocks.css_missing_features.note
t: |
You can explore the full dataset of answers to this question in [this side project](https://whatsmissingfromcss.com/).
- key: blocks.source.note
t: >
This chart aggregates a mix of referrers, URL parameters, and freeform answers.
- State of JS: the [State of JS](https://stateofjs.com) mailing list.
- State of CSS: the State of CSS mailing list; also matches `email`, `by email`, etc.
- Work: matches `work`, `colleagues`, `coworkers`, etc.
###########################################################################
# Awards
###########################################################################
- key: award.feature_adoption_delta_award.comment
t: With a **{value}** progression in 2021, CSS comparison functions are becoming a key part of every CSS developer's toolkit.
# - key: award.tool_usage_delta_award.comment
# t: No other tool comes even close to Tailwind CSS's dramatic **{value}** progression over the last year.
- key: award.tool_satisfaction_award.comment
t: PostCSS takes the top spot once again with a **{value}** satisfaction ratio.
- key: award.tool_interest_award.comment
t: With a **{value}** ratio, CSS Modules again generated the most interest among CSS developers this year.
# - key: award.most_write_ins_award.comment
# t: Many questions also accepted write-in answers, and with **{value}** mentions PhpStorm was the most popular item overall.
###########################################################################
# Conclusion
###########################################################################
- key: conclusion.css2021
t: |
<span class="first-line">The way you write CSS is about to change forever</span>
For many years now, many innovations in writing styles for the web have happened elsewhere: in preprocessors, JavaScript frameworks, or compilers. To be sure, CSS itself has also received some welcome improvements like [aspect-ratio](https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio) or [custom properties](https://developer.mozilla.org/en-US/docs/Web/CSS/--*). Yet we still reach for libraries and other helpers on a daily basis.
But there's a change coming. The core CSS language is getting shaken up and renewed, and we're right at the forefront of accelerated evolution.
[Container Queries](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Container_Queries) will bring in an entirely new era of responsive design, and [Cascade Layers](https://developer.mozilla.org/en-US/docs/Web/CSS/@layer) will make our use of frameworks, theming and managing complex codebases significantly easier.
When we look a little further ahead, we can also see the [@when/else conditional](https://css-tricks.com/proposal-for-css-when/) coming up, which will let us combine media, container and supports queries into a single at-rule.
And fingers crossed, 2022 is the year we finally see some movement on native CSS nesting. Those of us that work with tools like Sass and PostCSS already couldn't imagine another way of working.
All of this together means that 2022 is likely to be a year where the way you write CSS is going to fundamentally change. It's an incredibly exciting period, and we look forward to all the amazing implementations in the year to come.
- key: conclusion.css2021.bio
t: Web developer and creator of Polypane
###########################################################################
# Picks
###########################################################################
- key: picks.my_pick
t: "My 2021 Pick: "
- key: picks.intro
t: We asked members of the CSS community to share their “pick of the year”
- key: picks.georgedoescode.name
t: The CSS Paint API
- key: picks.georgedoescode.bio
t: Developer, writer, and generative artist.
- key: picks.georgedoescode.description
t: |
The Paint API allows us to create images programmatically,
to use in our CSS. It unlocks a whole world of creativity,
and I am very excited about it!
- key: picks.cassidoo.name
t: Lynn Fisher
- key: picks.cassidoo.bio
t: Developer advocate, educator, and startup advisor.
- key: picks.cassidoo.description
t: |
I'd love to pick Lynn Fisher. She's consistently surprised
and delighted the CSS community with her creative projects and experiments,
and I love how much folks can learn from her!
- key: picks.joshwcomeau.name
t: Amelia Wattenberger
- key: picks.joshwcomeau.bio
t: Software developer and creator of [CSS for JavaScript Developers](https://css-for-js.dev/).
- key: picks.joshwcomeau.description
t: |
Amelia is creating some of the most amazing
interactive blog posts about CSS and JS.
Check out this post about how percentages work in CSS!
- key: picks.kevinjpowell.name
t: Stephanie Eckles
- key: picks.kevinjpowell.bio
t: CSS Evangelist
- key: picks.kevinjpowell.description
t: |
I'm constantly blown away by Stephanie's continued initiatives
to help share her knowledge of modern CSS techniques,
as well as her contagious enthusiasm for CSS.
- key: picks.mmatuzo.name
t: aspect-ratio
- key: picks.mmatuzo.bio
t: Front-end developer from Vienna, and creator of [htmhell.dev](https://htmhell.dev).
- key: picks.mmatuzo.description
t: |
All major browsers shipped support for aspect-ratio in 2021.
At first I underestimated it, but there are so many
situations where this property comes in handy.
- key: picks.lauragift_.name
t: Kevin Powell
- key: picks.lauragift_.bio
t: Frontend Developer and Content Creator
- key: picks.lauragift_.description
t: |
Kevin creates CSS content on YouTube and I really enjoy watching his videos a lot.
He does a really good job teaching CSS concepts in a way that's easy and fun
to understand.
- key: picks.ericwbailey.name
t: Miriam Suzanne
- key: picks.ericwbailey.bio
t: Inclusive Design and \#a11y advocate.
- key: picks.ericwbailey.description
t: |
CSS is about to go from good to great.
Miriam's work on Container Queries and Cascade Layers is going
to revolutionize how CSS is written.
- key: picks.samuelkraft.name
t: Vanilla Extract
- key: picks.samuelkraft.bio
t: Frontend & design
- key: picks.samuelkraft.description
t: |
Lately I've loved working with Vanilla Extract, it's like CSS Modules but
fully typed with a magical developer experience.
- key: picks.sachagreif.name
t: Open Props
- key: picks.sachagreif.bio
t: State of JS and State of CSS creator
- key: picks.sachagreif.description
t: |
It's really cool to see the feedback loop between new CSS features and new
projects taking advantage of them! And I think Adam Argyle's Open Props
is a great use of Custom Properties (CSS variables).
- key: picks.shadeed9.name
t: Container Queries
- key: picks.shadeed9.bio
t: Author of [Debugging CSS](https://debuggingcss.com/), Writing at [ishadeed.com](http://ishadeed.com)
- key: picks.shadeed9.description
t: |
CSS container queries again! We got the chance to play with them in a browser.
Thanks to Miriam Suzanne for moving this forward!
I can't wait to use them without a flag.
# - key: picks.georgedoescode.name
# t:
# - key: picks.georgedoescode.bio
# t:
# - key: picks.georgedoescode.description
# t: |
- key: picks.argyleink.name
t: CSS Noise
- key: picks.argyleink.bio
t: CSS at Google
- key: picks.argyleink.description
t: |
CSS generated texture and randomness makes for unique and
interesting paint jobs in your design.
Noise tools have made the technique accessible.
- key: picks.walterstephanie.name
t: Miriam Suzanne
- key: picks.walterstephanie.bio
t: UX Researcher and CSS lover
- key: picks.walterstephanie.description
t: |
Miriam is an artist and an activist who creates software and art that celebrate the queer complexity of human experience. She's a CSS expert, and is doing an amazing job on the specifications for CSS Container Queries.
- key: picks.michebarks.name
t: “Building a Color Scheme” by Adam Argyle
- key: picks.michebarks.bio
t: Senior Front End Developer
- key: picks.michebarks.description
t: |
I love this article because although custom properties have been around for a while now, it really takes them to a different level and showcases their power. I hope it makes some people think of them in a different way, as more than simple variables.
# - key: picks.christianoliff.bio
# t: Front-end developer for Trimble MAPS
# - key: picks.christianoliff.description
# t: |
# One thing I've really started using and appreciating this year though is Purge CSS- an awesome tool for removing unused CSS. It can greatly reduce the size of your CSS, and its fast and easy to use.
- key: picks.kilianvalkhof.name
t: prefers-reduced-data
- key: picks.kilianvalkhof.bio
t: Web developer and creator of Polypane
- key: picks.kilianvalkhof.description
t: |
We need more devs to ask browsers about this feature, and to realize how big a difference it can make. With 64% of respondents not knowing it though, we have work to do!
# - key: picks.piccalilli_.bio
# t: Freelance designer & dev who runs piccalil.li
# - key: picks.piccalilli_.description
# t: |
# This blog is an absolute gold mine of CSS knowledge. Michelle is a CSS legend and every post or tutorial they write is heaped with useful content.
# - key: picks.piccalilli_.bio
# t: Freelance designer & dev who runs piccalil.li
# - key: picks.piccalilli_.description
# t: |
# This blog is an absolute gold mine of CSS knowledge. Michelle is a CSS legend and every post or tutorial they write is heaped with useful content.
# - key: picks.sarasoueidan.bio
# t: Independent UI/design engineer
# - key: picks.sarasoueidan.description
# t: |
# My pick is a person, namely Rachel Andrew. She taught CSS Grid to a whole generation of developers.
# - key: picks.5t3ph.bio
# t: Software Engineer @ Microsoft
# - key: picks.5t3ph.description
# t: |
# In this conference talk, Manuel Matuzovic provides thoughtfully
# crafted examples that are engaging, approachable, and actionable.
# - key: picks.hugogiraudel.bio
# t: Non-binary accessibility & diversity advocate
# - key: picks.hugogiraudel.description
# t: |
# Fela is an amazing piece of software.
# It’s pretty powerful, relatively easy to use and very performant
# - key: picks.foolip.bio
# t: Software Engineer @ Google
# - key: picks.foolip.description
# t: |
# Sergio has recently fixed lots of Flexbox in WebKit and even some in Chromium,
# notably bringing flex gap to WebKit,
# which means that soon it will be available on all modern browsers.
# - key: picks.jina.bio
# t: Design systems advocate and practitioner
# - key: picks.jina.description
# t: |
# The media query to reduce motion, which helps avoid
# triggering dizziness and discomfort.
###########################################################################
# Sponsors
###########################################################################
- key: sponsors.frontendmasters.description
t: Advance your skills with in-depth, modern front-end engineering courses.
- key: sponsors.polypane.description
t: The browser for ambitious devs. Build responsive, accessible and fast websites with ease.
- key: sponsors.google_chrome.description
t: Thanks to the Google Chrome team for supporting our work.
###########################################################################
# FAQ/About
###########################################################################
- key: about.content
t: >
The 2021 State of CSS survey ran from October 5 to November 2 2021, and collected 8714 responses. The survey is run by me, [Sacha Greif](https://sachagreif.com/), with help from a team of open-source contributors and consultants.
This year's logo and t-shirt were designed and animated by [Christopher Kirk-Nielsen](http://chriskirknielsen.com/).
### Survey Goals
This survey, along with the [State of JavaScript](https://stateofjs.com/) survey, was created to identify upcoming trends in the web development ecosystem in order to help developers make technological choices.
As such, these surveys are focused on anticipating what's coming over the next few years rather than analyzing what's popular now, which is why the features or technologies that are currently most widespread are not always included.
### Survey Design
The survey was designed in part based on last year's survey, with an open feedback period where the survey outline was discussed [on GitHub](https://github.com/StateOfJS/StateOfCSS-2020/issues/8).
All survey questions were optional.
### Survey Audience
The survey was openly accessible online and respondents were not filtered or selected in any way. Respondents were primarily a mix of respondents from past surveys (alerted through a dedicated mailing list) and social media traffic.
### Representativeness & Inclusivity
While we believe it's important to give a voice to every community, the reality is that an open survey like this one will always struggle to properly represent everybody, especially when operating through systems that already carry their own inherent biases.
In order to counter-balance this, we are implementing three distinct strategies:
- **Outreach**: this year, we reached out to 23 organizations representing BIPOC and LGBTQ developers in the hopes of partnering up. While very few of them replied, we will keep looking for ways to reach out beyond our current audience.
- **Data Analysis**: through features like facets and variants, we're always trying to make it easier to surface the voices of any demographic segment, no matter how minoritized it might be in our data.
- **Barrier Lowering**: making the survey too long, inaccessible, slow to load, English-only, etc. can all contribute to imposing an "effort tax" that cuts off the parts of the community that can't afford to pay it. Fixing these issues can lower the barrier to entry and in the process make our audience more diverse.
### Project Funding
Funding from this project comes from a variety of sources:
- **T-shirt sales**.
- **Sponsored links**: the links to recommended resources at the bottom of each page are provided by our partner [Frontend Masters](https://frontendmasters.com/).
- **Other Funding**: this year, the [Google Chrome](https://www.google.com/chrome/) team set aside a small budget to help hire an [accessibility consultant](https://fossheim.io/) to work on the survey.
Despite these funding sources, the surveys remains mostly a self-funded project overall and any contribution or sponsorship would be greatly appreciated. I would especially like to work closely with more browser vendors, since they play such a central role in the web ecosystem.
### Technical Overview
You can find a more in-depth technical overview of how the surveys are run [here](https://dev.to/sachagreif/how-the-state-of-js-css-surveys-are-run-4lnb).
- **Data collection**: custom [Vulcan.js](http://vulcanjs.org/) app.
- **Data storage/processing**: MongoDB & MongoDB Aggregations.
- **Data API**: Node.js GraphQL API.
- **Results Site**: [Gatsby](https://www.gatsbyjs.com/) React app.
- **Data Visualizations**: [Nivo](https://nivo.rocks/) React dataviz library.
- **Type**: [IBM Plex Mono](https://fonts.google.com/specimen/IBM+Plex+Mono) and [Bebas Neue](https://fonts.google.com/specimen/Bebas+Neue).