A List Apart

Menu
Issue № 358

Build pacing and rhythm into your digital products. Power the way you work with CSS’s hardest working new features.

Learning to Love the Boring Bits of CSS

by Peter Gasston · 27 Comments

The future of CSS gives us much to be excited about: On the one hand, there’s a whole range of new methods that are going to revolutionize the way we lay out pages on the web; on the other, there’s a new set of graphical effects that will allow on-the-fly filters and shaders. People love this stuff. Magazines and blogs are full of articles about them. But if these tools are the show ponies of CSS, then it’s time to give some love to the carthorses of the language. Learn why “boring bits” like selectors, units, and functions will be revolutionary to the way we work—albeit in humble, unassuming ways.

Everything in its Right Pace

by Hannah Donovan · 15 Comments

The real-time web started as something we did because we could. Technological advancements like more efficient ways to retrieve large amounts of data, the cloud, and the little computers we now carry around in our pockets made it just a really sexy problem to solve. Successful experiments turned into trends, and those trends are now becoming unquestioned convention. But does the always-on, pull-to-refresh design of Twitter and Facebook make sense your product? Hannah Donovan explores whether real time is the right choice—and how we can instead consider pace.

More from A List Apart

Columnists

Matt Griffin on How We Work

Pricing the Web

If you plan to bill your clients, you need a method for putting a price on what you do. The variables are always money, time, and scope of work, but the way they relate to each other can bring different client motivations to the foreground and fit different agency needs.

From the Blog

Driving Phantom from Grunt

For this example, we're going to build a Grunt task that takes a screen shot of the pages we're building (similar to Wraith, but far less advanced). There are multiple parts to make this work, so let's break it down. First, we will write a PhantomJS script that renders each page. Second, we make a NodeJS function that calls this script. Finally, we make a GruntJS task that calls that Node function. Fun!