惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

K
Kaspersky official blog
小众软件
小众软件
Engineering at Meta
Engineering at Meta
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
G
Google Developers Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
罗磊的独立博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
MongoDB | Blog
MongoDB | Blog
L
LINUX DO - 热门话题
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
H
Help Net Security
Martin Fowler
Martin Fowler
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - Franky
V
Vulnerabilities – Threatpost
云风的 BLOG
云风的 BLOG
博客园_首页
C
Cybersecurity and Infrastructure Security Agency CISA
量子位
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
Scott Helme
Scott Helme
A
About on SuperTechFans
博客园 - 司徒正美
Hacker News: Ask HN
Hacker News: Ask HN
The GitHub Blog
The GitHub Blog
Forbes - Security
Forbes - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Spread Privacy
Spread Privacy
T
Tailwind CSS Blog
S
Security Affairs
宝玉的分享
宝玉的分享

CSS Wizardry

Front-End’s Missing Metric: The TBT Window Meet Your Users Where They Are with Obs.js Better Browser Caching with No-Vary-Search font-family Doesn’t Fall Back the Way You Think What Is CSS Containment and How Can I Use It? When All You Can Do Is All or Nothing, Do Nothing Obs.js: Context-Aware Web Performance for Everyone Low- and Mid-Tier Mobile for the Real World (2025) The Fastest Site in the Tour de France Making Sense of the Performance Extensibility API Why Do We Have a Cache-Control Request Header? HTML Is Not a Programming Language… Build for the Web, Build on the Web, Build with the Web A Layered Approach to Speculation Rules Designing (and Evolving) a New Web Performance Score Core Web Vitals Colours The Ultimate Contract Templates for Tech Consultants: Protect Your Business and Get Paid Optimising for High Latency Environments Cache Grab: How Much Are You Leaving on the Table? blocking=render: Why would you do that?! Correctly Configure (Pre) Connections The Three Cs: 🤝 Concatenate, 🗜️ Compress, 🗳️ Cache What Is the Maximum max-age? How to Clear Cache and Cookies on a Customer’s Device The Ultimate Low-Quality Image Placeholder Technique Core Web Vitals for Search Engine Optimisation: What Do We Need to Know? The HTTP/1-liness of HTTP/2 In Defence of DOM­Content­Loaded Site-Speed Topography Remapped Why Not document.write()? Speeding Up Async Snippets Critical CSS? Not So Fast! Measure What You Impact, Not What You Influence Optimising Largest Contentful Paint Measuring Web Performance in Mobile Safari Site-Speed Topography Speed Up Google Fonts Real-World Effectiveness of Brotli Performance Budgets, Pragmatically Lazy Pre-Browsing with Prefetch Making Cloud.typography Fast(er) Time to First Byte: What It Is and How to Improve It Self-Host Your Static Assets Tips for Technical Interviews Cache-Control for Civilians Bandwidth or Latency: When to Optimise for Which ITCSS × Skillshare What If? CSS and Network Performance The Three Types of Performance Testing Getting to Know a Legacy Codebase Image Inconsistencies: How and When Browsers Download Images Identifying, Auditing, and Discussing Third Parties My Digital Music Setup Measuring the Hard-to-Measure Finding Dead CSS The Fallacies of Distributed Computing (Applied to Front-End Performance) Ten Years Old Relative Requirements Airplanes and Ashtrays Performance and Resilience: Stress-Testing Third Parties Refactoring Tunnels Little Things I Like to Do with Git Writing Tidy Code Configuring Git and Vim Base64 Encoding & Performance, Part 2: Gathering Data Base64 Encoding & Performance, Part 1: What’s Up with Base64? Code Smells in CSS Revisited Typography for Developers Moving CSS Wizardry onto HTTPS and HTTP/2 Ack for CSS Developers A New Year, a New Focus Preparing Vim for Apple’s Touch Bar Choosing the Correct Average CSS Shorthand Syntax Considered an Anti-Pattern CSS Wizardry Newsletter Nesting Your BEM? Improving Perceived Performance with Multiple Background Images Continue Normalising Your CSS Pure CSS Content Filter Pragmatic, Practical, and Progressive Theming with Custom Properties Refactoring CSS: The Three I’s Speaker’s Checklist: Before and After Your Talk Improving Your CSS with Parker The Importance of !important: Forcing Immutability in CSS Mixins Better for Performance Managing Typography on Large Apps White October Events Workshop Partnership BEMIT: Taking the BEM Naming Convention a Step Further Travelling Like You Want to, When You Have To Contextual Styling: UI Components, Nesting, and Implementation Detail Subtleties with Self-Chained Classes Cyclomatic Complexity: Logic in CSS Immutable CSS Can CSS Be Too Modular? More Transparent UI Code with Namespaces When to use @extend; when to use a mixin The Specificity Graph CSS Wizardry Ltd.: Year 1 in review CSS Guidelines 2.0.0
Licensing Code on CSS Wizardry
Harry Roberts · 2024-12-04 · via CSS Wizardry

Written by on CSS Wizardry.

Table of Contents

Independent writing is brought to you via my wonderful Supporters.

  1. Motives
  2. The MIT License
  3. Using My Code: What to Know

Since founding csswizardry.com in 2007, I’ve shared hundreds of articles, tips, tricks, techniques, snippets, and more—all for free. These have ranged from simple one-liners to concepts that have shaped the way thousands of developers approach their work.

This freemium model has been the cornerstone of my consultancy business for the last 11 years, and as someone who learned to code from freely available resources, I’m deeply committed to keeping this knowledge accessible to everyone.

While it’s incredibly rewarding to spot code inspired by my work across the web, it can be disheartening to see it used without any attribution or credit. With this decision, I aim to maintain the free and open spirit of csswizardry.com while ensuring a small nod of recognition in return.

Motives

Over the years, conscientious developers and organisations have occasionally reached out to ask if they can use my code in commercial settings. My answer has always been an informal yes!

However, I feel it’s time to provide more structure and clarity. From now on, everything shared on csswizardry.com—unless stated otherwise—is covered by the MIT License.

This move isn’t about restricting or limiting usage. Instead, it formalises my commitment to sharing my work freely while making it clear to commercial organisations that they’re welcome to use it in for-profit ventures without worrying about licensing fees or compliance issues.

In return, all I ask for is appropriate credit. I think that’s fair.

The MIT License

I chose the MIT License because it’s one of the most permissive and widely used licenses available. It allows you to use, modify, and reproduce my work freely, whether for personal or commercial purposes.

At the same time, it protects me by absolving any liability for how the content is used. It’s a win-win.

The MIT License is already a familiar standard in the open-source world, so the chances are you or your company have used work under this license before. It’s simple, clear, and works perfectly for my goals.

Using My Code: What to Know

Here are answers to common or expected questions about using my code under the MIT License.

Do I need to pay to use your code?

No, you don’t need to pay to use any of the code shared on csswizardry.com. My content is licensed under the MIT License, which allows free use for both personal and commercial purposes.

Do I need to apply to use your code?

No, there’s no need to apply or seek permission. The MIT License already grants you the right to use, modify, and distribute the code as long as you meet its conditions, which primarily involve proper attribution.

Do I need to tell you I’m using your code?

You’re not required to inform me, but I’d love to hear about it! It’s always rewarding to see how my work is being used, so feel free to drop me a line if you’d like to share what you’ve built.

What happens if I don’t comply?

If you don’t comply with the MIT License (e.g. by failing to include attribution), you’re in breach of the license. This means you lose the rights granted by it, and technically, your use of the code would be unauthorised.

I’d prefer to resolve issues amicably, so if there’s a misunderstanding, I’d encourage you to reach out so we can work things out.

Can I use your code in a commercial project?

Yes, you’re free to use my code in commercial projects. The MIT License permits this, and there are no hidden fees or obligations beyond proper attribution.

What does ‘proper attribution’ mean?

Proper attribution involves giving credit to the original source of the code. Typically, this means including a copy of the license and copyright notice in your repository and a comment in your code.

Can I modify your code?

Yes, the MIT License allows you to modify my code to suit your needs. Even if you make changes, you still need to include attribution to the original source.

Does using your code mean you support my project?

Not necessarily. While I’m happy to see my code being used, using it doesn’t imply my endorsement of your project.

What happens if someone else uses your code improperly?

If you’re aware of someone misusing my code, feel free to let me know. However, enforcement is ultimately my responsibility, and I’ll handle it as needed.

Where can I learn more about the MIT License?

You can read the full text of the MIT License or read the License page of this site.

Have a question that’s not covered?

I’d love to help! Feel free to get in touch with me.