And all that Malarkey

For over ten years our blog’s been a popular destination for thousands of website designers and developers from all around the world.

Querying Apple’s Nelson Mandela billboard

Apple doesn’t have what many of us would consider to be a fully responsive website, but that doesn’t mean they don’t sometimes use two of Ethan’s ingredients; flexible media and CSS3 media queries, to improve the placement of some elements on an otherwise fixed page.

Star Wars styling (a silly idea that might just work)

I sometimes work with other designers helping them to translate their design atmosphere and wide screen layouts into responsive designs. Breaking down their designs into systems is big part of what I do. In practical terms that means working through what are sometimes dozens of static visuals to identify patterns of typography, use of colour and layouts, both smaller modules and whole page compositions. From these patterns I classify and identify elements and compose stylesheets based on them.

Two good links to more on CSS filters

Following up on my M M M Madness post, here are two good links to more on CSS filters:

My prediction? Designers are going to go CSS filter crazy over the next year.

The CSS Zen Garden at 10

I’m struggling to believe it quite frankly, but The CSS Zen Garden was planted ten years ago today. I don’t think we should underestimate the importance of The CSS Zen Garden in the history of the web. Its influence still resonates today. Now it’s back accepting submissions and making some of us feel very old.

This could be most essential CSS3 media query you’ll need today

We know that it’s only web designers who habitually resize a browser window to see if a site’s responsive. But why not reward their dedication with a little something special? Add this to your stylesheet:

@media only screen and (min-width: 960px) and (max-width: 970px) {

body {
-webkit-transform : rotate(180deg);
-moz-transform : rotate(180deg);
-o-transform : rotate(180deg);
transform : rotate(180deg); }


This could be the most essential CSS3 media query you’ll need today.

Three clever people talk about CSS layout

Not since the turn of the century, when we largely shifted from using CSS positioning to floats, has CSS layout been so interesting. Here are three great reads from just today that are all worth your time:

PS: If you can remember either The Noodle Incident or Position Is Everything, it’s past your bedtime.

Firefox’s file uri origin policy and web fonts

File this one under gotchas.

I’m desktop browser testing a series of layout templates for a current project today. Everything was going really well until I encountered some files where my web fonts stubbornly refused to display in Firefox, but rendered perfectly in every other browser. Luckily I found the reason for the problem and a solution to it.

Is separating layout styles from design atmosphere using data-layout good practice?

I’ve been reading Jonathon Snook’s Scalable and Modular Architecture for CSS book this week. (It’s well written, practical and perfectly formatted for Kindle. I learned a lot and I’d highly recommend it.) In SMACSS, Jon recommends breaking down stylesheets into rules for:

  • Base
  • Layout
  • Module
  • State
  • Theme

He establishes a naming convention for these categories of styles. Jon says:

I like to use a prefix to differentiate between Layout, State, and Module Rules. For Layout, I use l- but layout- would work just as well. Using prefixes like grid- also provide enough clarity to separate layout styles from other styles.

I like this idea a lot because, 1; I’ve had a fascination with naming conventions, and 2; I’ve long had a problem with mixing styles for layout with styles for ‘atmosphere’ (colour, texture and typography,) something we’ve all done for years.

To me, using classes makes sense when we need to ‘classify’ items such as modules on a page. They make sense for groups of styles in a theme too. But it doesn’t make sense to me to use classes for the layout outline of a page, particularly when many times we add the elements they style purely for layout reasons and especially in a responsive context. It feels somehow messy.

Years ago, when oft-used browsers only supported element, class and id selectors, we didn’t have much choice. Now that browsers from Internet Explorer 7 up have solid support for CSS attribute selectors, we can bind our styles to elements based on their attributes. That’s why we’ve seen more and more people binding styles using ARIA role attributes. For example:

<div role="navigation">…</div>

[role="main"] {
/* styles */ }

Reading SMACSS got me thinking. Why not abstract layout styles even further than Jon suggested, by using HTML5’s data- attributes instead of classes. Something like:

<div data-layout="content">…</div>

[data-layout="content"] {
/* styles */ }

Conceptually, this fully separates styles for layout from every aspect of atmosphere. Although I’m aware that there are no practical advantages to using data-, to me it somehow feels cleaner.

I’m not 100% sure if this could be a legitimate use for data-. What are the experts’ opinion? I’d be interested in hearing if you’ve used this approach already and what you think might be the possible advantages and disadvantages?

There, I said it

Faruk Ate? in Opera Confirms WebKit Prefix Usage:

I’m left feeling that this is just Browser War II, and what grace we’d regained by switching to Feature Detection rather than UA sniffing will be lost once again as a result of these moves.

With some luck, things will just become better for the users of those browsers who will once more pretend to be someone they aren’t, and us web authors aren’t inconvenienced too much. Meanwhile, it is left—again—up to web authors to invent the tools to placate the browser vendors who gave us this mess in the first place.

I commend Opera for finally admitting — through their decision to adopt WebKit Prefixes — that their real motives are the corporate motives we always knew them to be. That they’re not the standards champions they pretend to be. That they’re prepared to break a fragile, but working standard for corporate gain.[1]

What their actions also tell us is that despite hiring some of the best minds in the business[2], their strategy of evangelists and ‘web openers’ has resoundingly failed to convince developers that Opera is relevant. If that wasn’t the reality, they would have no need to adopt another platform vendor’s prefixes.

What Opera forgets in its colossal arrogance, is that vendor specific prefixes were intended to give developers a choice to support a browser platform — or not.

We were never ‘required’ to include a full set of prefixes.

Excluding Opera didn’t qualify as ‘invalid.’

If I choose to exclude Opera (or Webkit or Mozilla or Microsoft,) that’s my choice and my right.

1. For the record, I don’t have a problem with a profit motive, just hypocrisy. 2. I don’t have a problem with individual Opera employees either (although many think I do). This isn’t about them.


About two years ago, I tweeted “If your CSS is complicated enough to need a compiler or pre-processor, you’re fucking doing it wrong!” I meant it too. After-all, CSS isn’t hard to learn and it’s easy to write and write quickly. So why would you need a processor like LESS or Sass?


After pushing my redesign live yesterday, I’ve been asked a few times about why I pulled respond.js (and with it, CSS3 Media Query support for older versions on Internet Explorer) from the new site.

320 and Up

As Jeremy mentioned yesterday, just before An Event Apart in Seattle, I spent a few hours on a spot of guerrilla testing at an AT&T store. Specifically, I was looking at how Windows Phone 7’s Internet Explorer browser handles ‘responsive sites’.

Do try this at work

Today, RIM unveiled its latest mobile browser. It runs WebKit making every mobile platform except one run that rendering engine. With that in mind, I’d like you to try this experiment.

You’re living in a fantasy world

Always an example of the best the web design industry has to offer, this year 24 ways, the advent calendar for web geeks, has its focus firmly set on moving your web design forward.

Eating accessibility humble pie

We all make mistakes. Right? Particularly when it comes to accessibility. Often in the rush to ready a site for launch, we forget to check the details that can make a world of difference. That’s what I did when I launched the latest For A Beautiful Web.

Changingman layout (updated)

Changingman, a liquid three column CSS layout with a fixed positioned and width centre column, released under a Creative Commons Attribution 2.0 license. (This entry was originally posted on 23rd November 2005 and has been updated in 2009.)

Advanced CSS Styling workshop example

I’m busy working on the slide deck and example site files for our Advanced CSS Styling workshops in Birmingham, Newcastle (and Tokyo). I’m really excited about this new workshop format and wanted to share one of the example site pages.


Smashing Magazine published an excellent primer for CSS3 properties by Inayaili de Leon today which referenced a little of my work. I was pleased, but as today as gone on and I’ve watched the comments roll, my heart started to sink.

An appropriate use for CSS frameworks

Could this be the day that I eat my words about CSS frameworks? I’ve been mean to them in the past, written harsh things. I once likened them to instant cake mixes in response to Jeff Croft’s What’s not to love about CSS frameworks?

CSS: A tribute to selectors

I wanted to learn more about CSS attribute selectors.—This article was originally published on And All That Malarkey on February 20th, 2005.

In defense of IE6

I've got a Honda CRV. It's eleven years old. It's rusty around the bonnet, the electric windows are sticky and the exhaust is noisy. That's OK. It's been reliable, hardly serviced and as I only drive it a few miles about twice a week, it does everything that I need it to do. I'll probably drive it until I can't drive it anymore.

I Keep Faith, CSS workshop example site

Having been booked by Carsonified to host a full-day workshop on advanced CSS back in May, in the weeks leading up to the show I had a flash of inspiration. Why not combine one of my favourite topics with one of my favourite musicians?

CSS Working Group proposals

My entry of last week, where I called for the current W3C CSS Working Group to be immediately disbanded, has generated some serious debate, and a few raised voices. I’m glad that is happening. Now, after a little more consideration, I thought I would outline some concrete proposals for how the CSS Working Group could change for the better.

CSS Unworking Group

Following Opera’s action, today I am calling on Bert Bos, chairman of the CSS Working Group, and those higher up within the W3C including Sir Tim Berners Lee, to immediately disband the CSS Working Group in its current form. I am asking for immediate action to be taken on the formulation of a replacement CSS Working Group that will include new members who are not the representatives of browser vendors.

What’s not to love about instant cake mixes?

Over the past several weeks, I’ve been bombarded (in e-mail, in person, and over IM) with questions about instant cake mixes. It’s completely understandable people would come to me with these questions.

Lost any CSS lately?

If your Internet connection happens to lose a bit of CSS data, you get a mess on your screen.

CSS: Browser testing order

I would prefer that clients save money for more valuable things than achieving pixel perfection.

More power to the people

How can the CSS Working Group give web designers, developers and visitors want they need?

And All That (IE7) Malarkey

To Chris Wilson and the IE7 team, I acknowlege the work that you have done thus far and I’m confident that IE7 will be everything that I expect it to be. Please don’t let me down.


The one where Malarkey takes his clothes off.

CSS: Specificity Wars

A few weeks back in Cupertino, I saw Aaron explain how the specificity of CSS selectors is calculated in a way which I hadn't seen before. Then today I came across a knotty problem while building XHTML and CSS templates for a new project where two selectors behaved differently to how I expected and I realised that I had not completed my training.

Hide CSS from Safari

If you feel the need to be nasty to Safari, here's another way to do just that.

And all that (CSS) Malarkey

Covering <body> attributes, attribute selectors and pseudo-elements. Scattered thoughts written during the 2005 Stuff and Nonsense design.

MIR image replacement

Using negative CSS letter-spacing for interesting (and useful?) results. (Update: All example files now updated to include the Verkade Mac IE/Opera fix.)

The weakest link

I’ve been trying to better optimise my CSS recently, and this has lead me to wonder where certain rules are best arranged.

3d CSS Zen Garden

I’ve been thinking about making a CSS Zen Garden entry for a little while now, but before I think about design, I wanted to understand the Garden’s XHTML structure. I don’t know if this has come up anywhere before, but it seemed sensible for me to make a graphic illustration of the XHTML file.

Style-sheet ordering

A recent dig into Mozilla’s style-sheets and coding guidelines got me thinking more about the conventions that I use inside my CSS files, to make them more logical and easier to update.

An objective look at IE CSS

While Internet Explorer’s patchy support for W3C CSS can lead to hair-pulling frustrations, its CSS extensions offer designers and developers an extra set of tools which, it might be argued, have their rightful place.

Contact us


Let’s design something fabulous together

Call 01745 851848, tweet or email us.

Answer these questions if you’d prefer to send us a little information about your project before you call.

Our projects start at £5,000 plus VAT with an average project costing between £10,000 and £20,000 plus VAT.

We’ll keep your information private and we won’t share it with anyone else.

Registered office

Eversleigh, Lon Capel, Gwaenysgor, Flintshire, North Wales, LL18 6EJ

(Here’s a map showing how to find our studio.)