Treehouse: Grow your CSS skills. Land your dream job.

Article Archives

LICEcap

Animated GIFs, aside from being megalolfunny, can be tremendously useful in communicating an idea. Like this or this. I get asked often how I make those. There is nothing to it, just use this app.…

24 comments

Make Sure Your Columns Don’t Collapse Horizontally

You might be familiar with elements collapsing vertically. If an element only contains other elements that are floated, the parent element will collapse to zero height. We often employ the clear fix for that. But if an element doesn't contain anything, it can collapse horizontally as well, which can be quite awkward for layout.…

CSS is 17

Some nice history on the birth of CSS by John Allsopp.…

The Growth of CSS Repos on GitHub

Interesting statistic uncovered by Donnie Berkholz: the number of repos that GitHub classifies as "CSS" (has more CSS in it than any other language) grew 13.6x in 2013. Doubling would be crazy, this is something else entirely. Assuming this isn't a fluke in how GitHub classifies this kind of thing.…

Myth

I thought I'd weigh in here...

  1. Calling it a "postprocessor" is weird. It gets parsed into CSS before the browser sees it, so it's a preprocessor. If something parses the CSS out from the browser, it can be a postprocessor, ala -prefix-free.
  2. I really love the idea of authoring as if vendor prefixes never existed and letting software fix it up for you. This is what Autoprefixer does. It might just use that internally?
  3. The whole point of calc()
29 comments

About Variables in CSS and Abstractions in Web Languages

Variables are coming to CSS. They already have implementations, so there is no stopping it now. Firefox has them in version 29 and Chrome has them unprefixed in 29+ if you have the "Enable experimental Web Platform features" flag turned on.

To be clear, no amount of arguing on whether this is good or bad is going to change things at this point. But I still think it's interesting, so let's talk about it anyway.…

42 comments

Line Menu Icon… That Is A Menu

I had a dumb little idea the other night so I just coded it up (as you do). You know those little icons that have come represent navigation? We've called them Three Line Menu icons around here, but otherwise known as Navicon (clever) or Hamburger (dumb). The point of that icon is that it looks like a little menu, so hopefully it's obvious you click it to reveal a real menu. But what if that icon wasn't an icon at …

What You May Not Know About Z-Index

It controls which element is "on top" visually when they happen to overlap, right? Right. But there is more to the stacking order, much of which you can't control. You can control stacking contexts though, which kind of reset the playing field within them, but themselves can be stacked. Steven Bradley explains.

Related: Jake Archibald also encountered this and has a little more info. Paul Lewis explains how this (kinda sucky) situation is unique to the web. Philip …

59 comments

New Poll: Command Line Usage

I have a feeling the readers of CSS-Tricks represent a fairly wide range of job types and skill levels. It would be interesting to know how frequently used command line usage is amongst the general web worker population.…

14 comments

Why You Should Use Continuous Integration and Continuous Deployment

The following is a guest post by Florian Motlik. Florian is CTO of Codeship, a hosted Continuous Integration and Continuous Deployment platform. What the heck is that, you might ask? It's kind of a philosophy and toolset for working on websites. That is perhaps a bit too simplified, so I'll let Florian explain.

Animated SVGs

Mike Fortress explains animation with <svg> with a specific example involving charts on Sprout.

It's funny how SVG has all these great features like gradients and filters and animations that we have in CSS, but the syntax is so different. I think it would be cool if there was some kind of converter that would let us target SVG parts with CSS selectors, apply things like gradients, filters, and animations, and it would convert it into the SVG format that …

Chrome DevTools for Mobile

Emulate mobile devices directly through DevTools, simulating touch events, mimicking screen size, and spoofing user agent.

Plug in a mobile device over USB and use Chrome DevTools on the actual mobile browser. Push your local site to the mobile device with port forwarding.

This is excellent stuff, not only because it's very powerful, but because it's easy.…

26 comments

SVG Tabs (Using an SVG Shape as Template)

An excellent feature of SVG is that you can define a shape (or set of shapes) once, and then use it multiple times throughout a page. You can even apply different fills and filters and whatnot to the different versions. SVG templating, if you will.

Let's see if we can put that to good use by creating some tabs.…

20 comments

Colorpeek: A Simple Way to See and Share CSS Colors

The following is a guest post by Tyler Sticka Tyler created a tool called Colorpeek. In this article, he'll introduce you to what the web app does and why, and then how the Chrome Extension works to extend that. Then tomorrow, stay tuned, as Tyler will show us how he built the Chrome Extension.…

58 comments

A Blue Box

A little meme went around CodePen the other night. A Blue Box. I'm not sure how it started, but lots of people started posting code of different ways to draw a blue box. It's weird, it's funny, but it's also rather amazing there is as many ways as there are for doing something so simple. …

Turn Off Hovers on Scroll

Sometimes hover effects can cause redraws and repaints and whatnot that take time and reduce performance. As you scroll down a page, you're likely inadvertently triggering hover events that have no meaning while you scroll. Turning them off (via CSS's pointer-events) is a clever way to reclaim some scrolling performance.…

Dom Monster

A bookmarklet you can click to give you performance information specifically related to the DOM. E.g. duplicate IDs, excessive stylesheets, excessive nesting, empty nodes, HTML comments, etc.…

Responsive Comments

Meaning like <!-- these kind of comments -->. You put a media query in a data-* attribute of a parent element and it will determine if that block of commented HTML should be un-commented or not. A form of conditional loading. If the HTML bloat bothers you, I suspect it could be easily adapted to load the comment from a URL at another data-* attribute instead.…

26 comments

The HTML5 meter Element

The following is a guest post by Pankaj Parashar. Pankaj has written here before, last time about the progress element. Fitting indeed then to write again about the very related meter element. They are different both functionally and semantically, so read on!

What Screens Want

I'm happy to be the last person in our industry to link to Frank Chimero's beautiful essay on screen design (watch the colors slowly fade emphasizing the "flux" point). A small point I like:

We need abstractions, otherwise we’d be writing code in machine language or Assembly

Exactly the point I've been making in recent talks and in my foreword in Sass for Web Designers.

Ultimately I'm not quite as pessimistic (i.e. the "things are starting to suck" vibe). I …

32 comments

Introducing Scut, a new Sass utility library

The following is a guest post by David Clark. I think David's new Sass library "Scut" is pretty interesting. It's like a design utility library, which is distinct from a design pattern library in that it enforces no particular structure or particular visual design. I've always found this kind of thing fascinating, largely because I've never been able to pull it off in a way that feels good to me. I always end up leaning too far into visual

50 comments

Why Responsive Images Is So Hard

Perhaps you've been keeping up on the responsive images #hotdrama? If you have no idea what "responsive images" means, it means serving different images under different circumstances. How to do that and what those circumstances are vary widely.…

18 comments

Namespaced Events in jQuery

It's really easy to add an event listener in jQuery. It's equally easy to remove an event listener. You might want to remove a listener because you don't care to perform any actions on that event anymore, to reduce memory usage, or both. But let's say you've attached several listeners to the same event. How do you remove just one of them? Namespacing can help.…

Caption Everything

Help Dave Rupert build a thing:

I started a repository called WordCast under the Accessibility Project with the goal of converting that CodePen into a Node/Express/Socket.IO app that can brodcast subtitles. I’ve never built anything on any of these buzzwords I just typed, so I could definitely use some help.…

CSS Stats

Some heuristics on CSS that you can run on any site. Started with the sharing of that data from several popular sites. It's open source and I would think the most valuable feedback to give would be "what data would be useful to know about your CSS?"

10 comments

The CSS Standards Process

The following is a guest post by Sebastian Ekström (@seb_ekstrom) a web developer from Sweden. I was interested in it because we talk a lot about CSS around here but have never talked about how CSS comes to be. CSS is just a syntax invented by people like you and me to try and solve problems. It's an extremely complicated thing involving: ease of use, backwards compatibility, browsers ability to implement with satisfactory speed, coverage of use cases,

Sass for Web Designers

Speaking of books, Dan Cederholm's new book on Sass is out. Forwarded by yours truly (!).…

Grade components, not browsers

Scott Jehl (who is writing a book on the subject) on why you might want to progressively enhance on a component-by-component basis based on what that component needs, rather than a sweeping capability judgement based on the browser.…

pattern lab

Make your own "tiny bootstraps, for every client."…

CSSOff 2013

It's live!

If this is the first you've heard of it, it's a contest where you get a Photoshop document and have two weeks to convert it into HTML and CSS. You're judged on an established set of criteria.

The design this year is by Daniel Mall.

You have to submit your design through CodePen. As you'll need to host files (like images) to make it happen, and you'll want to be working privately, you'll need a …

HTML Imports

Essentially a way to import a block of dependancies (scripts and styles) into an HTML document.

<link rel="import" href="imports.html">

It doesn't actually just plop the content from the referenced file where you call it though, like an @import does in CSS or and include does in a server side language. HTML could very much use that.…

-moz-gone

Mozilla says they "will no longer ship new 'moz'-prefixed APIs" as part of an overall philosophy of: "Is this good for the Web?"

Blink has also said this. Word has it WebKit still plans to use them as they deem necessary.…

23 comments

Multi-Line Padded Text

This is one of those tricky CSS things that I see come up every few months. I guess what better place to address it than CSS-Tricks eh?…

54 comments

A Guide to Web Components

The following is a guest post by Rob Dodson (@rob_dodson). Rob and I were going back and forth in CodePen support getting Polymer (a web components polyfill, kinda) working on a demo of his. We did get it working, and things kind of evolved into this article. Take it away Rob.

Update: Rob updated this article on March 5, 2014, getting everything up to date, as this is a rather fast-moving technology at the moment.

Update: Updating …

29 comments

Transformer Tabs

Tabs are a simple design pattern in which a row of links are obviously clickable navigation and when a link is clicked, new content is shown. There are loads of variations of course, but it's one of the most ubiquitous navigation design patterns out there. When arranged in a horizontal row, it is also one of the least small-screen-friendly design patterns out there.

We can make it work though.…

Which CSS Measurements To Use When

I agree with these general guidelines from Dudley Storey. Funny how these general-purpose length measurements have fallen into to some pretty specific niches.…

62 comments

Tinted Images with Multiple Backgrounds

The background property in CSS can accept comma separated values. "Multiple" backgrounds, if you will. You can also think of them as layered backgrounds since they have a stacking order. If we layer a transparent color over an image, we can "tint" that image. But it's not quite as obvious as you might suspect.…

13 comments

Bookmarklet to Colorize Text Between 45 and 75 Characters (for line-length testing)

Recently at the CSS Dev Talk, I attended Clarissa Peterson's talk on responsive web typography. One part of it was about line length and readability. Of course, there are exceptions to every rule and your mileage may vary, but the traditional thinking is that body copy (long text, multiple paragraphs, takes more than a glance to read...) should be between 45 and 75 characters per line to be comfortable. Shorter is awkward, longer makes it easy to lose your place …

32 comments

Email Domain Datalist Helper

What if someone signs up for your web app and they type in their email address as susan_smith@gmaoil.com? They don't notice, they never get their confirmation email, they never can log in again, the "forgot password" feature doesn't work, and there is a lot of frustration and finger pointing.

Can't we help with that?…

33 comments

Conditional Media Query Mixins

Using a @mixin in Sass for your media queries is useful for a variety of reasons. The most important of which is probably the cognitive ease of having the properties and values you are changing right next to the originals. But another reason is that you then gain the ability to "shut off" those media queries if you need to, and there are some perfectly valid reasons to want to do that.

Animating DOM transitions

Say you add some new element to the page and it pushes things around. That can happen instantly, but it helps your brain understand what just happened if the elements that were pushed away animate to their new position. Enter Alex MacCaw and his new magicMove jQuery plugin:

The library works by appending a separate and hidden clone of the element you’re transitioning to the page. Any DOM manipulation you do is actually manipulating that clone. Then, when you’re finished, …

13 comments

Well Rounded: Compound Shapes in CSS

The following is a guest post by Parker Bennett. Parker is a bit of a regular around here, known for tackling common problems with unique solutions. This time he's back at it creating complex shapes that have image backgrounds, shadows, and curves, yet are flexible.