If you’re like most users, there are so many options available in the Thesis administration panels that you haven’t actually tried out all of them – and you might not know what they all do. One option in particular has stumped many new Thesis users, as it’s not immediately obvious what it’s for. In fact, even if you change it, you probably won’t see anything visually change on your site at all. This simple option can make a world of difference in your choices for design. It’s found in the panel “Framework Options” under “Thesis Design Options” in the administration of your Wordpress installation. By default, when you install a fresh copy of Thesis, the Page Framework is selected. You may have been using Thesis already for some time and never realized you had another option! For this tutorial, we will assume that you’re already familiar with customizing Thesis in the Page Framework mode and are ready to learn how to customize your site using the Full-Width Framework.
When the default Page Framework is active, a rendered page consists of a single #container which contains a #page element which encompasses all of your page elements: header, content, and footer. That #container is a certain width, and outside of it is the body background. Visually, this results in a layout that looks like a single, cohesive page floating on a background (if they’ve been colored differently, of course). Any customizations of the header, content or footer are restrained within that #page element, and thus do not reach from edge to edge of the window. Most new users run up against this limitation when they first attempt to create a custom header or footer that spans the width of the screen. A quick search on the Thesis forums reveals the answer: “switch to the Full-Width Framework” – but that’s just the beginning. You need to understand how Thesis is generating the page elements to take advantage of the new layout possibilities.
Once you’ve switched your options to the Full-Width Framework, you may not see anything change visually at first – but a close inspection of the html code that Thesis has generated will reveal some new “zones” that didn’t exist before:
#header_area#content_area#footer_area
All three of these also have the class .full_width as well. The #page element id has changed to a .page element class, and it has now been placed as a div inside of each of the three areas. Your page, in effect, has been sliced into 3 horizontal “zones”, which extend the full-width of the screen. Because these zones are stacked upon each other, your page probably still looks just like before – a single, cohesive page – but now you could in theory separate these regions (with padding or margins) and most of all, style them independently, creating the visual design that is so common these days of having headers and footers that span the entire window and are visually different from the middle “content” region.
In the Page Framework the elements were nested like this:
body > #container > .page > #header body > #container > .page > #content_box body > #container > .page > #footer
In the Full-Width Framework, they are nested like this:
body > #header_area > .page > #header body > #content_area > .page > #content_box body > #footer_area > .page > #footer
Thus, if you already had an image as the background of the #header, it will still only reach from edge to edge of the page (that’s why nothing seemed to change). In order to create a visual header graphic that spans the screen, you will want to target the #header_area instead. You can still apply formatting to the #header, but as it is nested within the .page, it will be limited in its size.
A note on “Outer Page Padding”: you may have noticed another option within the same “Framework Options” panel. This, as it states, applies extra padding to the .page element which contains the #header, #content_box, and #footer – which, as long as it is colored the same as the nested elements, will simply look like you’ve added a gap around the entire page edge. Style it differently, however, and you will notice that it is only visible if you set the “Outer Page Padding” to anything other than zero, *or* if its nested child elements have no background color or images of their own (being transparent, they will show the .page element “underneath”).
Now that you’ve learned how the Full-Width Framework modifies Thesis’ html output, you may already be tempted to jump right in with your new design. Something that many people prefer when designing massive full-width headers is to move the navigation menu out of the header entirely (so as not to be limited by the width of the #header, which is nested inside the .page. A popular mod was shared by Kristarella some time ago to move the navigation menu out of the header and into its own “zone” below the entire #header_area. Thanks to the powerful hook system of Thesis, you can rearrange the elements quite easily by adding the following code to your custom_functions.php file:
remove_action('thesis_hook_before_header', 'thesis_nav_menu');
function full_width_nav() { ?>
<div id="nav_area" class="full_width">
<div class="page">
<?php thesis_nav_menu(); ?>
</div>
</div>
<?php }
add_action('thesis_hook_before_content_area', 'full_width_nav');
This function prevents Thesis from generating the nav menu where it usually would, then defines a new #nav_area, inserted between the #header_area and #content_area, with the .page class nested just like the other zones, and the nav menu gets generated within. Now you can style the #nav_area to look like the navbar fills the full width of the screen.
The following visual guide should help you see how it all comes together (click to enlarge):

Remember that the “nested” elements are actually drawn on top of their parent elements. This has been visualized above with shades of color. Darker colors are lower “layers”, with lighter ones overlaid on top – thus from bottom up you have #header_area, then #header_area .page, then #header. If you do not specify formatting for upper layers (or in some cases, if you remove the default thesis formatting, usually #fff backgrounds), they will transparently show whatever is specified for the layers below. It also helps to remember that each #[zone]_area always spans the whole width behind everything else, so if yours doesn’t appear to, it’s because something is overlaid on top and its formatting is blocking your view of the elements underneath.
This also explains how you can specify an image for #header_area .page that spans the full width of the “page”, but not the full “screen”, while maintaining the page padding which gives a nice margin for the content below. By doing so, you could have a repeating infinite background assigned to the #header_area, which would extend to the screen edges, and a single image assigned to #header_area .page that blends seamlessly with the #header_area background.
If it helps, you can recreate the above screenshot with your own clean install of Thesis by pasting the following code into your custom.css:
/* HEADER ZONE */
.custom #header_area { background: #213C63; }
.custom #header_area .page { background: #7a98c2; }
.custom #header { background: #cfe2ff; border-bottom: 0; }
/* NAVBAR ZONE */
.custom #nav_area { background: #589b4d; }
.custom #nav_area .page { background: #7fc874; }
.custom .menu { background: #c4e9be; border: 0; }
.custom .menu li.tab a, li.tab { border: 0; }
/* CONTENT ZONE */
.custom #content_area { background: #d8d86c; }
.custom #content_area .page { background: #efef8e; }
.custom #content_box { background: #ffffd3; }
/* FOOTER ZONE */
.custom #footer_area { background: #eba7b5; }
.custom #footer_area .page { background: #eccdd3; }
.custom #footer { border: 0; background: #fef; }
/* BEHIND EVERYTHING */
body.custom { background: #9b1f1f; }
Remember that any .page styling will only be visible extending around the edges if you have the “Outer Page Padding” set to something greater than zero. Otherwise, the .page element will still be there, but it won’t show past the edges and will most likely be obscured by the nested elements above it.
The Full-Width Framework is a very powerful layout within Thesis. I personally always enable it on every Thesis customization I do, even if I’m not designing anything visually that will appear from edge to edge of the screen. I like how it breaks up the page into three “zones”, which makes it really easy for me to insert custom code in between those zones. It also allows me to format the header and footer independently from the content section. It’s probably the most familiar layout system for most Wordpress tweakers (it’s comparable to other themes) even though the Page Framework is enabled by default. That’s exactly why people who have designed Wordpress sites from scratch often switch on the Full-Width Framework first (or bang their heads a few times before discovering the solution on the Forums) before they begin to customize Thesis.
Get Free Updates From Art Of Blog
Sign up to receive insider tips only available to our email subscribers.
You can also subscribe to our RSS feed or follow us on Twitter to get the latest updates. Check out our YouTube channel for the latest video tutorials!



Top 25 Tutorials for Thesis Newbies
Two Sure-Fire Ways to Increase Website Traffic
Introduction to Custom CSS in Thesis
Installing and Optimizing Thesis Theme for Wordpress
Thesis Recent Tweets with @Anywhere Integration
Enable Your Fans – Top Community Building and Social Sharing Tools for Your Blog
15 Incredibly Useful Wordpress Plugins to Make Your Life Easier
Thesis Review: Thesis Wordpress Theme Video Review
What’s in It for Me: 7 Types of Timeless Core Content
{ 21 comments… read them below or add one }
An extremely well written tutorial/info. Damn fine job!
Biggups & thank you! (From a thesis/php/wordpress newbie)
Love the visual framework idea and your customisations on this site are smooth!
Bit of an error in the post though,
.pageonly exists in the full-width framework. In the page framework the element inside#containeris#page, with an ID of page, not a class.@kristarella – If my errors had to be spotted by someone, I’d rather it be it you ;-)
post duly updated….
I have been waiting exactly for this,
thank you
Israel,
Thank you. Very helpful article and something I needed to read.
I have one question about this.
I’m using Thesis to design a header in which I want the #header to float right and the #menu to float left. So, I’ve removed them from the .page container.
So far it looks okay but I’m wondering if I’m setting myself up for a fall.
Is there any reason why I would NOT want to take the header outside of the .page class?
Will doing so tamper with the page padding and the nice margin it creates for the content below?
Excellent visualization tutorial..you really made it look easy …
Thanks a bunch…
Great tutorial – I come back to this page again and again.
Thank you
Do you guys find the full-width framework easier to manipulate? I’ve just started messing with it this morning and I feel like a million light bulbs have been turned on!
Yes! I think it’s loads easier to manipulate almost 100% of the time. I also have a video that demonstrates the full-width framework a bit that might turn on some ore light bulbs (forgive the self-promotion, but I thought it might be useful).
oh wow! I’ve been a secret admirer of yours for some time now… Will watch the video. Thanks!
still…. after 4 more months I keep coming back to this tutorial. I’ve got a major redesign in process – thanks to all of you.
Love the tutorial, I find it much easier to follow a written tutorial then a video. I would like to see a PSD to Thesis tutorial one day.
Tutorial is mind boggling. I am so impressed with your visual way of presentation. Thank you.
Thanks, but this tutorial does not work at all for me. I have easytheis installed, and it just crops the whole top of the page off. Hopefully I can find a better tutorial somewhere, because this one kinda sucks.
sorry that you’re having problems Adam. did you copy and paste the code exactly as-is? is it the only code you have in your custom.css and custom_functions file?
Can you provide a link so we can see what’s up?
Hi, very nice tutorial – your colour scheme is excellent! I have Thesisi 1.7 installed and I am not familiar with it (actually it is a bit overwhelming). Trying now for hours to construct the full screen header and nav-bar, to put your tutorial in to practice. Everything is fine except for the “header area” and the “nav area” do not show up! But this is what I want and need….
When I make use of your function above and put it in the custom_functions.php file, I get this errormessage in the line where the menue should appear:” Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘full_width_nav’ was given in /www/htdocs/w00ba1bb/UPR/wp-includes/plugin.php on line 339″ – Could this relate to the new Thesis version? Do you havĂ© an idea or hint? Would appreciate your help very much! Thank you very much in advance
Hi All,
Been messin’ with websites forever it seems (still have my original clay tablets – heady days!), but Thesis has to be, flat-out, the best design template I’ve ever encountered for WordPress. Just grabbed 1.7 for a website redesign and working my way through some tutorials. This one nailed my first thought about ‘full width’, so it’s very timely where I’m concerned. Again thanks for all the great work. Cheers!
Randy
I’m trying do create the full width nav menu that is only as wide as the content area, then have a outer page padding, but I can’t seem to get the menu to display properly. It over lays the menu/color on the page padding. I tried removing and a bunch of different things with the #nav_area .page but nothing sees to work with out messing up with color of the full width.
Heres the css.
/* Full Width Nav Menu */
#nav_area { background-color: #DD0404;}
#nav_area .page { background-color: #DD0404;}
.full_width { width:900px; margin-left:auto; margin-right:auto;}
One of the best articles on thesis customization. I was thinking the same from the last 1 month about tips on full width frame work customization and this tells me everything.
Thanks
Pritam Nagrale
Thank you so much! Your image of the framework helped me solve a problem I’ve been having with my site since forever.
This tutorial not only got me upto speed with customizing thesis but also taught me all the basics of css. The visual guide is great.
Thesis + Firebug + This tutorial = a crash course in css and thesis customization!
Huge thank you!
Is there a “buy me a beer” button somewhere?
{ 2 trackbacks }