How To Reset & Rebuild WordPress Theme CSS & Define Your Layouts
Here we’re going to layout a WordPress Theme CSS development arsenal for you:
- A stylesheet that resets default CSS across all web browsers and makes a sane standard we can work from
- Another stylesheet that rebuilds our typographical foundations in a smart way
- A stylesheet just for WordPress classes (keeping the first two pure so we can use them for non-WordPress projects)
- A series of 6 fluid stylesheets that will create ALL the common blog and website layouts you expect—and each one ready to adapt into a fixed width layout.
All the code we’ll talk about is open-source, under the GPL, and browse-able at the Your Theme Project Page. View the raw source for any one of these files and copy-paste at your leisure.
First things first, make a “style” directory in your Theme folder. That’s where we’ll be putting everything. Your CSS quiver, as it were. Ready to hit the target?
Reset CSS
Our Reset CSS is adapted from Eric Meyer’s famous Reset CSS with some minor, minor changes. Basically what it does is take all the typographical defaults of every browser and … obliterates them. You’re left with a squashy, gray mess.
It’s beautiful.
What this does is equalize the rendering of every browser, leaving you free to ignore countless individual quirks particular to each one.
Using it is simple. Add the following lines to your style.css
, at the very top, immediately after the initial comments section.
/* Reset default browser styles */ @import url('styles/reset.css');
Reload, your page and check it what reset.css
does in multiple browsers (if you can). It’s wonderfully gross, isn’t it?
Rebuild CSS
Our Rebuild CSS is my own personal invention adapted from an early version of the Blueprint CSS typography stylesheet and refined in the Thematic Project. What it does is swing back some vertical rhythm in our pages, but in a really smart way.
What I’ve tried to do with this iteration of my typography-rebuild CSS is combine the best of both worlds for web typography: using Pixels for font height, with relative line-height for the main declaration on the body element, and Ems for all subsequent vertical margins (like for paragraphs and lists).
What does this mean? It’s really easy to set your font height later—without doing any math work—and have all of your typographical elements follow suit with an appropriate vertical rhythm (the vertical space between type elements like paragraphs and lists).
Using rebuild.css
is also really easy. Just add the following lines immediately after yourreset.css
import.
/* Rebuild default browser styles */ @import url('styles/rebuild.css');
The Basic WordPress Styles
There are some elements in WordPress that you’re just going to have to style every time. What I’ve done is taken those styles and put them in there own little corner called wp.css
.
Right now, what we’ve got in there are styles for floating all the images—including handling captions and image galleries. And! preset styles for simple pull-quotes. All you need to do is add a class of left or right to the blockquote tag and you’re ready to roll.
Can you guess how we’re going to use wp.css
?
/* Basic WordPress Styles */ @import url('styles/wp.css');
All The Layouts You’ll Ever Need
For your new theme, I’ve taken the rock-solid, indestructible layouts that shipped with the Sandbox Theme and adapted them for your new HTML structure. There are 6 in total. Each is a fluid layout (that stretches to fill the width of your browser window) but each one is easily adaptable to a fixed width layout.
Using anyone of these layouts is simple. Immediately after your basic WordPress styles import, import one of these layouts. Here’s how to import the 3 column layout, with the content in the center.
/* Import a basic layout */ @import url('styles/3c-b.css');
The simplest method of turning any one of these layouts into a fixed-width layout is to add a width and centering margin to the #wrapper div.
#wrapper { margin: 0 auto; width: 960px; }
BONUS: STYLING THE MENU
If you’ve never taken an unordered list (that’s the smart markup generated bywp_page_menu
) and styled it to look like a menu before it can seem kinda weird. As a bonus, here’s the CSS I use when I start out creating menus for WordPress Themes.
#access { margin: 0 0 1.5em 0; overflow: auto; } .skip-link { position:absolute; left:-9000px; } .menu ul { list-style: none; margin: 0; } .menu ul ul { display: none; } .menu li { display: inline; } .menu a { display: block; float: left; }
It’s pretty simple but it’ll put you on sure footing. Good luck!
How To Create a WordPress Theme
This post concludes the WordPress Themes Tutorial series that shows you how to create a powerful WordPress Theme from scratch. Read it from the beginning and code yourself up something awesome.