preview

Design and Code Your First Website in Easy to Understand Steps

Aug 3rd in HTML & CSS by Tessa Thornton

In this tutorial, we're going to design and code our first website in simple, easy steps. This tutorial was written for the beginner with the hope that it will give you the tools to write your own standards-compliant websites! It's a brand new week; maybe it's time to learn a new skill!

PG

Author: Tessa Thornton

I'm a University of Toronto student, majoring in philosophy. I recently took up web design as a hobby and have learned a great deal in a short time, largely thanks to the resources of the online community. I'd like to share what I've learned and contribute to the knowledge base available to new learners.

Step 1 - What We're Making

We're going to design and code this very simple website. Spectacular design, it's not, but it'll be very effective for teaching basic coding techniques.

1

Step 2 - Getting Ready

What you need

This tutorial was written assuming that you've never coded a website before, or have only done it a few times. Nevertheless, to complete this tutorial, you will need the following:

  • Photoshop or a similar image editor
  • A code editor (more on that later)
  • Basic understanding of how html works, basic syntax and tags. To get up to speed, check out the official resource at w3 Schools, where you can learn all the basics needed for this tutorial.
  • Ditto for css, you should understand how selectors work and be familiar with basic properties. Again, the best resource here is w3 Schools
  • A browser, obviously. I'm using Firefox, and if you want your site to look just like my screenshots in each step, you should too

Layout

We're making a very simple website here, with four basic elements: header, content, sidebar and footer, the layout is going to look something like this:

2

It's a good idea to block out the layout of your design before you start, either on paper or in Photoshop, to streamline your workflow and organize your ideas.

Step 3 - Getting Started

Open up a shiny, new Photoshop document, say, 1000px by 1200px. We can always crop it later. I'm making it pretty narrow because I'm working on a laptop here, but feel free to go wider if you like more space to work.

Now, I'm not going to go into the debate about screen resolutions and optimal website width here. All you need to know is that the content of our page is going to be 800px wide, and that that's okay. So, on our 1000px wide document, we're going to drag in guides at the 100 and 900px marks to set the width. Our design has a sidebar, and I've decided to make it one third the width of the page. Two thirds of 800 is about 530, so let's put in one more guide at 630px. We'll also set a nice background color of #ebe8e8.

3

Step 4 - Header

Grab the rectangle tool and draw a big, blue box at the top of the document, mine is about 170px high and the color is #23b6eb. Next draw a skinny, dark grey bar at the very top of the page, I used #5d5a5a

4

Step 5 - Highlight

Now we're going to add a bit of a lighting effect on the blue header area. Create a clipping mask above the blue layer, then Grab a big, soft brush (400px wide) and pick a color a bit lighter than the blue background.

Now lightly click the tip of the brush right below the bar, around the centre of the document. Keep it subtle, and try not to let the lighter color reach the edges of the page (this will be clear later). And set the blending mode to screen.

5

Step 6 - Navigation Bar

Now we're going to add another bar to the bottom of the blue one, we can make it grey, but we're going to add a gradient overlay so it doesn't really matter.

In the layer styles panel, add a gradient from #e2e3e4 to #bebdbd at 90degrees.

6

Step 7 - Footer

Next, let's draw a grey box at the bottom of the page, I picked a color a bit darker than the grey from the bar at the top.

7

Step 8 - Logo

Background

For the logo, we're going to draw a rectangle and add another anchor point at the end, then drag it out to the side. To get rid of the rounding, option-click on the point.

8

Next, add some layer styles: a gradient overlay and a 1px stroke: Gradient from #aec457 to # cdf399

8b
8c
8d

Text

Now for the text: big and bold.

  • Font: Myriad Pro
  • Style: Bold
  • Size: 60px
  • Color: #36809a

To give it some depth, add an inner shadow:

8e
8f

Step 9 - Tagline

Next I just added in a short tagline:

  • Font: Arial
  • Style: Bold
  • Size: 30pt
  • Color: #e4dfdf
9

Step 10 - Navigation

Write in the navigation links nice and big, spread them out and space them about evenly.

  • Font: Arial
  • Style: Bold
  • Size: 30pt
  • Color: #676666
11

Step 11 - Main Content

Time to paste in some dummy content. I used one bit header, which will be h2 and the smaller one will be h3 link to html ipsum.

Make the text boxes about The width of the first 2 thirds of the page. Text styles:

h2 Header:

  • Font: Arial
  • Style: Bold
  • Size: 36pt
  • Color: #0e5d7a

h3 Header:

  • Font: Arial
  • Style: Bold
  • Size: 24pt
  • Color: #444444

Paragraph:

  • Font: Arial
  • Style: Normal
  • Size: 14pt
  • Color: #595858
11a

The dates under "latest updates" are going to be wrapped in a small tag, the font is the same as the paragraph, but 12pt. I copied the news item twice, cause I'm lazy.

11b

Step 12 - Sidebar

Links

Next draw a skinny rectangle over our sidebar region, color #d4d6d3, with a 1 px stroke of #bebdbd

Fill up the sidebar with some more dummy content, you can get the free icons I used here. The fonts are:

h3 Headers:

  • Font: Arial
  • Style: Normal
  • Size: 24pt
  • Color: #044055

List items:

  • Font: Arial
  • Style: Normal
  • Size: 18/14pt
  • Color: #373737
12a

Button

Next we're going to add a "join our team" button beneath the contributors links. The button is just a rectangle with the same gradient as the logo, and a 1px stroke color c7c7c7. The text is:

  • Font: Arial
  • Style: Normal
  • Size: 24pt
  • Color: #434343
12b

Step 13 - Footer

To finish off the mockup, just add a bit of dummy copyright text, or whatever you want, to the footer. The font is:

  • Font: Arial
  • Style: Normal
  • Size: 14pt
  • Color: #e0e2e2
13

And that's it for the page design, it's nothing special, but its simplicity will make it easier for you to follow the rest of the process.

Part Two - Slicing the PSD

Now that we have our lovely completed psd, it's time to chop it up into pieces we can use. The idea here is to use as few images as possible, and to make them as small as possible. Okay, so let's start with the header. We want it to stretch out across the whole screen, no matter how wide it is. To do that, we're going to grab a tiny little sliver of the header, and have it repeat across the screen again and again, no matter how wide.

Step 14 - The Slice Tool

Now you probably haven't had to use the slice tool before, but it's really very simple. It just lets you slice your file into teeny tiny pieces which can be exported for the web.

Header

So, let's go ahead and grab a little slice of our header. Click and drag to create the slice, just like the rectangular marquee tool. Be careful to take the slice from the side of the image, so you don't get any of the highlight.

14a

Now that we have this little stripe, we can repeat it along the x-axis. The highlighted area, however, is non-repeating, so we have to cut out the whole thing. Slice the section of the header between the two guides that denote our 800px width.

14b

Footer

We use the exact same process for slicing the footer, grab a skinny piece of the footer.

14c

Everything Else

We just need a couple more images: the "subscribe" icons and the "join our team" button.

Because the icons and the logo are irregularly shaped, we're going to save them as transparent .png files, so we're going to come back and grab them separately.

Okay, so to slice the button, we can use the same technique as the header and footer, but this time we only need the one thin slice. When you make the slice, be sure to not include the 1px stroke, (we're going to add that in later) you might need to zoom in really close for this.

14d

Step 15 - Export for the Web

Now that we have our images all sliced up, let's save them as optimized jpegs and put them someplace useful.

Go to File/Save for web and devices... In the popup window, hold down shift and click to select each of the slices (again, you might want to zoom in) Check that the "preset" drop-down menu is set to JPEG-High, uncheck the "convert to srgb" and click "save"

15a

In the next window that pops up, pick a name and location for your images, I'm just going to save to the desktop for now.

Make sure it's set to "images only", "default settings", and "selected slices only."

15b

Next, check out the location you saved your files to. Instead of seeing the individual images, you'll just find a folder labeled "images" where all your pictures are located. The computer will give each image a number, which isn't very useful. Check that you have the right images, then name them appropriately.

Now, back to those pesky icons and the logo. Be sure to hide all the background layers, then take out the slice tool again and cut out nice little boxes around each icon and the logo.

15c
15d

Now we go through the same process of exporting for the web as we did with the jpegs, only this time be sure to select PNG-24 from the "preset" dropdown menu, and that the "transparency" box is checkmarked. Rename these files too, and your images folder should look something like this:

15e

Alright, that's it, we're done cutting up our psd, and we have all the images we need. Don't close Photoshop just yet, though, we'll still need to pick out colors, fonts, dimensions, etc.

Part 3 - HTML

Step 16 - Getting Started

Alright, time to dive into some html. The first thing you're going to need is a code editor of some kind. This is often an area of personal preference, but I recommend starting off with a free one. For mac and PC, I highly recommend Komodo edit as a first code editor. It has a lot of features that are ideal for beginners and advanced users. One of the best features is the syntax-checker, which is like the spell-check in word processors, which will identify and explain little mistakes. For PC, there are a lot more options, none of which I'm very familiar with, but check out Andrew Burgess' article 22 Neat Code Editors for Windows

In this tutorial, we're going to use Komodo edit, but the principles are the same in every editor.

Step 17 - Setting up our Folders

First things first, we need to set up a place to hold all the files related to our site. Create a folder for your website, mine is called "MySite", inside this folder, create another folder containing the images we just sliced. Name this folder "images". Now we open up our code editor, this part will be a bit different depending on what software you're using: If you're following along in Komodo, select "create new project" and save/move the .kpf file to the "MySite" folder. When you open up the file, the file browser at the side of Komodo should display the contents of the folder. Next right-click on the project file, and scroll to "add" and select "new file". In the window that pops up, select "html(xhtml)" and name the file "index.html".

17a
17b

If you're using another editor, the process should be similar, but the essentials are the same: you need to create an index.html file, and it needs to be in the "MySite" folder along with the images folder.

Step 18 - Setting up our index.html File

The first thing we need to do is declare the doc type, character encoding, and create the <html> tags. Many editors will do this for you, but if not, it should look something like this:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
</html> 

between the html tags, we need a "head" section, which contains all sorts of important information about the site which isn't displayed within the body of the site. For us, at this point all it's going to contain is the title of the page, like this:

<head>
	<title>MySite</title>
</head>

below the head, logically, we add the body, also contained within the <html> tags. Okay, so far we have:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
      <title>MySite</title>
  </head>
  <body>
     <!-- content goes here -->
  </body>
</html>

This is a basic page setup, you might want to save this clip somewhere for future use. So remember when we said we'd have header, content, sidebar, and footer sections? Good, now each of these is going to be within its own <div>, and will be given an appropriate id.

<body>
    <div id="header">
    </div><!--end header -->
    
    <div id="content">
    </div><!--end content-->
    
    <div id="sidebar">
    </div><!--end sidebar-->
   
    <div id="footer">
    </div><!--end footer-->
    
</body>

NOTE: it's a good idea, especially when you first start, to add comments at every </div> so you can keep track of the hierarchy of divs.

Now let's take another look at our psd - remember how we want the footer and header slices to repeat indefinitely out to the sides? We're going to need a way to let these elements stretch out, but at the same time, we need the main content ("content" "sidebar") to be contained within a specified width at the centre of the screen.

To handle this, we need a big div holding our expanding elements, and a div to contain the main content. We should also notice that the footer text is centered too, so we need to repeat the same process for the footer. To do this, we need to wrap some divs around the ones we already have. We have two basic sections, the main section, and the footer section. Each is going to be contained within one big, unruly div with an unspecified width, and the content of each will be wrapped in individual divs that specify width and centering.

We want to use the same rules for the main and footer content, so instead of (or in addition to) specific id's, they will have specified classes, which means you can create a set of rules to define all div's with the same class.

So the main content is going to be wrapped inside a div with the id "main" and our footer will be wrapped in a div with the id "footer." If it helps to visualize the structure, here's a diagram:

18

And the markup looks like this:

<body>
    <div id="main">
        <div id="header">
        </div><!--end header -->
    
        <div id="content">
        </div><!--end content-->
    
        <div id="sidebar">
        </div><!--end sidebar-->
        
    </div><!--end main--> 
   
    <div id="footer">
    </div><!--end footer-->
    
</body>

Now we wrap each section in a containing div, with the class of "container."

 
<div id="main">
    <div class="container">
         <div id="header">
         </div><!--end header -->
    
         <div id="content">
         </div><!--end content-->
    
         <div id="sidebar">
         </div><!--end sidebar-->
            
    </div><!--end main container--> 
</div><!--end main-->
        
<div id="footer">
    <div class="container">
    </div><!--end footer container--> 
</div><!--end footer-->

I know all these wrapping divs seem redundant, but they will become relevant when we start styling the page.

Step 19 - Adding Content

Now that the structure of our page is set, we can start adding content, from top to bottom. Here's an outline of the html elements that will make up our page:

19a

Header

At the very top we have our header, and within the header we have 3 main elements: a logo, a tagline, and a navigation menu. So let's create a div for our header, and to keep things clean, we'll put the logo and tagline in their own divs.

 
<div id="header">
	<div id="logo">
    	</div>
	<div id="tagline">
    	</div>
</div><!--end header -->

Because it's the most important heading of the page, the Logo is going inside an <h1> tag. We have more options for the tagline, depending on how relevant it is to your site. In this case, I'm using an <h3> tag.

For the navigation, standard practice is to place menu items within an unordered list, with each list item containing an anchor tag. So we have:

<div id="header">
    <div id="logo">
   	 <h1>Logo</h1>
    </div>
    <div id="tagline">
    	<h3>And a little tagline, too.</h3>
    </div>
    <ul id="menu">
    	<li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Portfolio</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div><!--end header -->

NOTE: the "href" value in the anchor tags would normally specify where the link goes, but in this case, the pound symbol just means "link to top of page."

Main content

Looking at our main content area, we have 4 different styles of type: a big heading at the top, a smaller one, and an even smaller one heading for the news item titles, plus some paragraphs, and the small little dates on news items. We're going to call these <h2>, <h3>,<h4>, <p>, and <small>, respectively. Now it's just a matter of pasting in your content, which isn't much fun, but it is pretty easy.

<div id="content">
        <h2>Lorem ipsum, Dolor sit</h2>
    	<h3>Nullam vulputate felis id odio interdum nec malesuada mi pretium. </h3>
    	<p>Praesent luctus egestas nisl, vitae vehicula eros rhoncus vel. 
    		Phasellus consequat arcu eu neque convallis eu vulputate diam vehicula. In eget venenatis nisl. 
    		Vestibulum id nulla eu sapien pellentesque malesuada pharetra ac lacus. 
   	    	Curabitur et ultricies quam. Aenean pretium aliquet velit, gravida vulputate urna tempus vel.  </p>
    	<p>Proin tempor erat sit amet nisl porta nec vulputate arcu imperdiet. Praesent luctus egestas nisl, vitae vehicula eros rhoncus vel. 
    		Phasellus consequat arcu eu neque convallis eu vulputate diam vehicula. In eget venenatis nisl. 
   	    	Vestibulum id nulla eu sapien pellentesque malesuada pharetra ac lacus. Curabitur et ultricies quam. Aenean pretium aliquet velit, 
		gravida vulputate urna tempus vel. Proin tempor erat sit amet nisl porta nec vulputate arcu imperdiet. </p>
    <div id="news">
    	<h3>Latest Updates</h3>
    	<h4>Vestibulum id nulla eu sapien pellentesque</h4>
    	<small>June 1, 2009</small>
    	<p>Ut vel turpis a orci pulvinar tincidunt. Mauris id purus turpis. Aliquam metus arcu, 
        	facilisis quis pellentesque vitae, dapibus non nulla. Nulla suscipit sagittis sodales. 
   	    	Etiam laoreet ante in purus laoreet id malesuada dui pretium.<a href="#"> Read More</a></p>
   	<h4>Vestibulum id nulla eu sapien pellentesque</h4>
   	<small>June 1, 2009</small>
   	<p>Ut vel turpis a orci pulvinar tincidunt. Mauris id purus turpis. Aliquam metus arcu, 
   	   	facilisis quis pellentesque vitae, dapibus non nulla. Nulla suscipit sagittis sodales. 
      	Etiam laoreet ante in purus laoreet id malesuada dui pretium.<a href="#"> Read More</a></p>
    </div><!--end news-->
</div><!--end content-->

I've added anchor tags with the value "Read More" at the end of each news item.

Sidebar

On to the sidebar now. The sidebar has three elements, each of which will be wrapped in its own div. Each div will contain an <h3> header, and an unordered list, and each list item will again contain an anchor tag. So go ahead and copy and paste your text in, and it should look something like this:

<div id="sidebar">
                <div id="subscribe">
                    <h3>Subscribe!</h3>
                    <ul>
                        <li><a href="#">Subscribe via RSS</a></li>
                        <li><a href="#">Get Email Updates</a></li>
                        <li><a href="#">Follow us on Twitter</a></li>
                    </ul>
                </div>
                <div id="popular">
                    <h3>Popular Items</h3>
                    <ul>
                        <li><a href="#">Lorem ipsum dolor site amet</a></li>
                        <li><a href="#">Ulvinar tincidunt, Mauris id</a></li>
                        <li><a href="#">Lorem ipsum dolor site amet</a></li>
                        <li><a href="#">Proin tempor erat sit tene</a></li>
                    </ul>
                </div>
                <div id="contributors">
                    <h3>Contributors</h3>
                    <ul>
                        <li><a href="#">John Smith, freelance writer</a></li>
                        <li><a href="#">Jack McCoy, designer</a></li>
                        <li><a href="#">Lenny Briscoe, editor</a></li>
                        <li><a href="#">John Smith, martketing</a></li>
                    </ul>
                    <a href="#">Join Our Team</a> 
                </div>
            </div><!--end sidebar-->

Footer

We may as well put the footer in before checking it in the browser, it should only take a second. Worth noting is that any symbols you want to use in your text have special codes in html, for example, the copyright symbol is coded as ©

<div id="footer">
        <div class="container">
            <p>Copyright © 2009  MySite <br />
            All Rights Reserved</p>
        </div><!--end footer container--> 
    </div><!--end footer-->

And that's about it for the markup, let's take a look:

19b

looks pretty good, no? Well, no, not yet. But it does contain all the information we need, and is ready for styling.

Part Four - CSS

Step 20 - Adding CSS

Now, this is where the magic happens. Create a new file in our site folder, and call it "style.css". Now we need a way to tell the browser that this css file belongs to our index.html file, so we link to it with the "link href" tag. Put this line of code into your <head> section, beneath the title.

<link href="style.css" rel="stylesheet" type="text/css" media="screen" />
Now our html file can access our css file, so whatever changes we make to the css will affect the html file.

Step 21 - Basic Cleanup

There are a couple ugly things about our site that we can fix right away: we want to change the default font, we want the content to be 800px wide and centered, and we want to get rid of all those spaces between the elements.

First, we're going to pick a font for all text within the body of the page, which will be displayed unless otherwise specified:

body { font-family: Arial, Helvetica, sans-serif; }

Next, let's define the width and margins of our "container" class divs.

.container {
    width: 800px;
    margin: 0 auto; 
}

the margin: 0 auto property is shorthand meaning that there is no margin at the top, and that it will be automatically centered horizontally. Let's take a look.

21a

Much better. The next step is going to make things look much worse, but stick with me.

CSS reset

All browsers use default padding and margin values for each element, which makes unstyled pages look nice, but for us they just get in the way of our own styles.

To get rid of all these messy margins, we're going to use a very simple css reset, which is just a rule that gets rid of the default padding and margins on the elements we're using. Put this at the top of your css file:

'
body, div, h1, h2, h3, h4, h5, h6, p, ul, img {margin:0px; padding:0px; }

now let's look:

21b

Step 22 - Header

Okay, so everything's all squished up and ready for us to manipulate! Now we get to start adding our own styles, again, from top to bottom. Let's get the tricky part out of the way first: setting the background images for the header.

We'll star with the repeating slice we took of the header. The repeating image is going to be within the "main" div, which has an undefined width. We need to let the browser know where the image is, and what to do with it (repeat, no-repeat) to set a background image, we use the property "background" and specify the location of the image or 'url': in our case, the image is in our images folder, so we specify the location like this:

 
url (images/header_slice.jpg)

then specify that we want it to repeat along the x-axis:

#main {
    background: url(images/header_slice.jpg) repeat-x; 
}

Check it out:

22a

awesome, right? Try stretching out your browser, it just goes on and on and on... But we're still missing the highlight on the blue bar, and since we cut out an 800px part of our header, we can put it inside our "container" div. Problem is, we have two of those (one for the main div, one for the footer) so we need to specify that we want the div with the class "container" that lies within the div with the id "main" set the image the same way as before, but this time we need to specify "no-repeat":

#main .container {
    background: url(images/header.jpg) no-repeat; 
}

Take a look:

22b

great! the highlight is sitting just where we want it, and blending in to the repeating sides.

Step 23 - Logo Image Replacement

Our logo is pretty complicated, right? we're using an image background, and a non-html font with an inner shadow. We can't do that in css, so we have to replace the text with an image. "why not just put the image in place of the <h1> line?" you may ask. Well, on the internet, the <h1> header is basically the 'name' of your page, and important, powerful robots (google) scan for this property when searching for keywords. If you don't have an <h1> header, your site could be called kalamazoo, but it wouldn't turn up in a search for that exact word. There are various other techniques which have their advantages over this one, (see here, especially technique #8) but this is the simplest and the most appropriate technique for this situation.

So, to fix this problem, we use a devious little technique called "image replacement" to use the image that we want, while keeping the <h1> header in our markup. First, let's add the image as a background to the #logo div.

#logo {
    background: url(images/logo.png) no-repeat;
}

if you look at your browser, you'll see that our logo has been chopped in half. This is because we haven't given it any room, we can solve this by specifying the dimensions of the image:

#logo {
    background: url(images/logo.png) no-repeat;
    height: 84px;
    width: 235px; 
}
23a

Better, but we still have the original <h1> text in our way, but we can fix it! All we're going to do is set the text-indent value to something ridiculous, like -9999px, way off the page, so no one will ever see it, except the search engine robots.

#logo h1 {
    text-indent: -9999px; 
}

now take a look, and our logo image is happily sitting where our <h1> text used to be. But it still looks pretty bad, all cramped up at the top there. When we want to move an item from its original position on the page, we can use both the padding and the margin properties. We're going to try both to see the difference

First, let's try adding a margin to the top of the h1 tag. We can find out how big to make it with the ruler tool in Photoshop.

#logo h1 {
    text-indent: -9999px;
    margin-top: 40px; 
}
23b

Oops! We managed to move the logo, but it took the whole page with it! Let's try adjusting the padding instead:

#logo h1 {
    text-indent: -9999px;
    padding-top: 40px; 
}

Now take a look, and the damn thing went back to where it started! This is because the margin property moves the whole element, but the padding only moves the content of the element, leaving the background where it is. So, if our screen was, say , 19999px wide, we would see our outcast <h1> header move down 40px, but this is not what we were going for.

So, to move the background image of the logo, we need to move the div above it, because the whole logo div is the "content" of the header div. let's try it out:

#logo h1 {
    text-indent: -9999px;
}

#header {
    padding-top: 40px; 
}
23c

Much better! Now our logo looks just like it does in our psd, in exactly the right spot. If only we could fix that tagline...

Step 24 - Floating the Tagline

So now we need to find a way to get that tagline out beside the logo. Problem is, html elements naturally stack vertically, pushing eachother up and down the page. We have a few options to fix this, but I'm going to use floats, which are a little tricky, but seriously useful once you get the hang of them.

Okay, so what's a float? Well, that's complicated. Basically, when you tell an element to 'float', it sticks it to the side of a page or element, and also takes it out of the normal "flow" of the page. Confused? Let me demonstrate.

#logo {
    background: url(images/logo.png) no-repeat;
    height: 84px;
    width: 235px;
    float: left; 
}
24a

Well, as you can see, we managed to get our tagline out to the side, but it took the navigation menu with it. I think of it this way: a normal element (for example, a div, or an h1 header, or an image), even if it's really small, invisibly occupies all the space to the side of it, like one big long horizontal bar.

24b

This is why all the other elements stay beneath it, instead of cozying up beside. When you float an element, You take away all the extra space to the side, and restrict it to only the space it directly takes up, allowing other elements to wrap around it. Now that you know how floats work, how can we fix our present situation? First, we have to isolate the tagline into a float of its own, so it too lies outside the normal "flow" of the page:

#tagline {
    float: left; 
}

Take a peek in the browser, and look at that, we made it worse. Now the menu items are wrapping around our tagline! What we need here is to restore the normal flow of the document after the floated elements. There are a couple ways to do this, but we're using the most straight-forward method. Go back to your index.html file, and add in a new div beneath our floated divs. Instead of adding a class or id to this div, we're going to give it a style (yes it's an inline style, but only a teeny little one) clear: both.

<div id="header">
    <div id="logo">
    	<h1>Logo</h1>
    </div>
    <div id="tagline">
    	<h3>And a little tagline, too.</h3>
    </div>

<div style="clear:both"></div>

Resave your html file and check in your browser: you should see the tagline out beside the logo, with the menu below. Now all we have to do is get that tagline into shape, and put it where it belongs. Let's start by copying the font styles over from Photoshop:

#tagline h3 {font-size: 30px; color: #e4dfdf; }

and then add a bit of padding at the top and left:

#tagline {
    float: left;
    padding-top: 20px;
    padding-left: 20px; 
}

take a look: now we're getting somewhere!

24c

Step 25 - Navigation Bar

now we need to get our navigation menu in a straight line. First things first, though, we're going to style the font so we can space things out accordingly. When you style the font of a list of anchor tags, you need to specify not only that you are referring to list items, but to the anchors within them. We're specifying our specific unordered list, so that we can deal with the other ones separately. We also need to get rid of the underlines and the bullet points.

ul#menu {
    list-style: none; 
}

ul#menu li a {
    font-size: 30px;
    color: #676666;
    text-decoration: none; 
}

Great, now, we need to find a way to get all our links in a row. How? More Floats! We're going to set the list-items to float left, so that each item sticks to the one beside it.

ul#menu li {
    float: left; 
}

If you look in your browser, you'll notice the same problem we had before with floated items: other elements are wrapping around it. Just like before, we can insert our clearing div right after the unordered list.

<ul id="menu">
	<li><a href="#">Home</a></li>
	<li><a href="#">About</a></li>
	<li><a href="#">Portfolio</a></li>
	<li><a href="#">Contact</a></li>
</ul>
<div style="clear:both"></div>
</div><!--end header -->

All our list items should be in a line now, we just have to space them out and move the menu down a bit. So first measure the distance from the bottom of our logo to the top of the menu text, and we get about 55px. the first item is about 30px left of our guide, so let's set the list item padding to 30px left.

ul#menu {
    list-style: none;
    padding-top: 55px; 
}

ul#menu li {
    float: left;
    padding-left: 30px; 
}

We still need to put more space between each item, if we measure the space in our psd, it's about 105px, but since we already have 30px padding between each, we only need to add 75px padding to the right of each item.

ul#menu li {
    float: left;
    padding-left: 30px;
    padding-right: 75px; 
}

And finally, admire our work:

25

Perfect! Our menu is just like the psd. On to the content!

Step 26 - Content

Top area

The first thing we're going to do here is set all the fonts, so we can see the spacing we have to work with. just plug in the font info from Photoshop:

#content h2 {
    font-size: 36px;
    color: #015878; 
}

#content h3 {
    font-size: 24px;
    color: #444444;
}

#content h4 {
    font-size: 18px;
    color: #373737;
    font-weight: normal; 
}

#content p {
    font-size: 14px;
    color: #595858; 
}

#content small {
    font-size: 12px;
    color: #373737; 
}

#content a {
    color: #0f6c8d;
    font-weight: bold;
    text-decoration: none; 
}

We get something like this:

26a

At this point you may notice that we haven't set a background color for the content area yet. This is because... I forgot. So let's just do that now, shall we?

body {
    font-family: Arial, Helvetica, sans-serif;
    background: #ebe8e8; 
}

Alright, now we're ready to add some padding to space everything out. first, the distance from the bottom of the nav menu to the top of the h2 heading is about 25px:

#content h2 {
    font-size: 36px;
    color: #015878;
    padding-top: 25px; 
}

Next, the distance from the bottom of the h2 heading to the top of the h3 heading is also around 25px, so repeat basically the same code:

#content h3 {
    font-size: 24px;
    color: #444444;
    padding-top: 20px; 
}

Now, the distance from the bottom of the h3 heading to the top of the first paragraph is about 45px, but if we set the padding-top to 40px, we will also end up with 40px of padding between the two paragraphs. Since the paragraphs are only about 20px apart, we need to split the padding into top and bottom: add 20px of padding to the bottom of the h3 heading, and 20px of padding to the top of the paragraph.

#content h3 {
    font-size: 24px;
    color: #444444;
    padding-top: 20px;
    padding-bottom: 20px; 
}

#content p {
    font-size: 14px;
    color: #595858;
    padding-top: 20px; 
}

Check out the results:

26b

News section

The spacing is a little different in the news section, first of all, we need to push it down the page a bit. There's also too much padding beneath the h3 heading, so we're going to remove a bit. We also need to reduce the padding above the paragraphs, and add some padding between the two news items.

#news {
    padding-top: 10px; 
}

#news h3 {
    padding-bottom: 10px; 
}

#news p {
    padding-top: 10px;
    padding-bottom: 14px; 
}

Which looks like this:

26c

There, now all we need to do is get the sidebar out to the side, and we're done the main content.

Step 27 - Floating the Sidebar

first, we need to set the width for the content section:

#content {
    width: 510px; 
}

Now, to get the sidebar out there, we will once again be using floats, setting both the content area and sidebar to float left.

#content {
    width: 510px;
    float: left; 
}

#sidebar {
    float: left; 
}

If you take a look in your browser, you will notice that our footer text has wrapped around the sidebar. We know how to deal with this problem by now: we just need to add our little clearing div to the markup:

<div id="contributors">
	<h3>Contributors</h3>
	<ul>
		<li><a href="#">John Smith, freelance writer</a></li>
		<li><a href="#">Jack McCoy, designer</a></li>
		<li><a href="#">Lenny Briscoe, editor</a></li>
		<li><a href="#">John Smith, martketing</a></li>
	</ul>
	<a href="#">Join Our Team</a> 
</div>
</div><!--end sidebar-->
<div style="clear:both"></div>

</div><!--end main container--> 

</div><!--end main-->

Alright, next step is to just copy over the font styles from our psd for the sidebar:

#sidebar h3 {
    font-size: 24px;
    color: #044055;
    font-weight: normal;
}

#sidebar ul li a {
    font-size: 14px;
    color: #393838; 
}

Remember that to style the font of the links in an unordered list, we need to refer to the anchor tag, rather than the list item itself. Now, if we look over at our psd again, we'll notice that the text for the list items in the "subscribe" widget is slightly larger than in the rest of the sidebar. To fix this, we need to target the specific unordered list, so we need to add an id value to the subscribe ul in our markup:

<ul id="subscribe">
	<li><a href="#">Subscribe via RSS</a></li>
	<li><a href="#">Get Email Updates</a></li>
	<li><a href="#">Follow us on Twitter</a></li>
</ul>

Then we can refer to it in our css:

ul#subscribe li a {
    font-size: 18px; 
}
27a

Now we need to style our sidebar: add padding, margins, backgrounds and borders. First let's get rid of the bullets:

#sidebar ul {
    list-style: none; 
}

OK so it's still way in the wrong spot, so let's fix that by adding margins to the top and left. When measuring in your psd, measure to where the border of the sidebar begins.

#sidebar {
    float: left;
    margin-left: 55px;
    margin-top: 35px;
}

Now for the background: underneath the margin-top property, add the background and border properties:

background: #d4d6d3;
border: 1px solid #BEBDBD; 

Next we'll add 15 px of padding on all sides:

padding: 15px; 

And then add the padding to our text styles to space out our menu:

#sidebar h3 {
    font-size: 24px;
    color: #044055;
    font-weight: normal;
    padding-bottom: 20px;
    padding-left: 15px;
}

#sidebar ul {
    list-style: none;
    padding-bottom: 25px;
}

#sidebar ul li a {
    font-size: 14px;
    color: #393838; 
}

ul#subscribe li {
    padding-bottom: 5px; 
}

ul#subscribe li a {
    font-size: 18px; 
}
27b

Our sidebar already looks almost perfect, we just need to add in the icons in the subscribe section, and style that "join us" anchor tag.

Okay, so let's get those icons working. Adding images to an unordered list can seem confusing, but if you take things step by step, it makes perfect sense. But it is a bit tedious. To start, we're going to have to make some room for the icons. We're going to set them as background images, so if we use the padding property to move our list items over a bit, the images won't be affected. The icons are about 26px wide, so we'll add some padding to the left of the list items:

ul#subscribe li {
    padding-bottom: 5px;
    padding-left: 30px; 
}

Now we need a way to target each separate list item, so we'll add some id's in the markup:

<ul id="subscribe">
	<li id="rss"><a href="#">Subscribe via RSS</a></li>
	<li id="email"><a href="#">Get Email Updates</a></li>
	<li id="twitter"><a href="#">Follow us on Twitter</a></li>
</ul>

Now we add background images to each list item:

li#rss {
    background: url(images/rss_icon.png) no-repeat; 
}

li#email {
    background: url(images/email_icon.png) no-repeat; 
}

li#twitter {
    background: url(images/twitter_icon.png) no-repeat; 
}

At this point it occurred to me that perhaps 18px was a bit too big for the links here, so I reduced it to a less dramatic 16px, which allowed me to add in a teeny bit more padding on the left without stretching the sidebar out.

ul#subscribe li {
    padding-bottom: 5px;
    padding-left: 35px; 
}
27c

Our spartan little sidebar is almost complete! Now to style our button:

We need to target the button, so let's add a class to the markup: (im using a class instead of an id this time, which is common practice, as we could hypothetically add more buttons later)

<a href="#" class="button">Join Our Team</a>

So let's just fix up the text style and add in our repeating background slice:

a.button {
    color: #393838;
    text-decoration: none;
    background: url(images/button_slice.jpg) repeat-x; 
}
27d

as you can see, our background image is there, but it only appears directly behind the text, we need to give it space to spread out. First, let's give it a margin to get it into the centre of the sidebar:

  margin-left: 30px;

and some padding on each side so our button spreads out:

 padding: 13px 23px; 

This is a short-hand way to write the padding properties, and is entirely acceptable, and even encouraged, since it saves space. In this case, it specifies 13px of padding on the top AND bottom, and 23px of padding on the left and right.

27e

the button looks great, but oops! it moved to the right 23px, so let's reduce our margin a bit to compensate:

margin-left: 14px; 

Now let's just give it some space underneath by adding padding to the entire sidebar div:

#sidebar {
    float: left;
    margin-left: 55px;
    margin-top: 35px;
    background: #d4d6d3;
    border: 1px solid #BEBDBD;
    padding: 15px 15px 30px 15px;  
}

here's that shorthand property again: it goes in this order: top, left, bottom, right. So here it says 15px on all sides except the bottom, which should be 30px.

finally, we just need to add that 1px border to the button class:

 border: 1px solid #c7c7c7; 
27f

And there we have it, one sidebar!

Step 28 - The Footer

Last but not least, our simple little footer. We'll set the footer the same way as we set the header: Using a repeating slice within an div of unspecified width, and then adding the content inside a fixed-width, centred div. This is where our .container div comes in handy, because we don't need to specify the 800px or margin:auto this time, because it's already done. Let's start with the repeating slice:

#footer {
    background: url(images/footer_slice.jpg) repeat-x; 
}
28a

It's a start, but it's really tiny. let's add some padding, and make the text white:

#footer {
    background: url(images/footer_slice.jpg) repeat-x;
    padding-top: 20px;
    padding-bottom:60px;
    margin-top: 40px;
    color: #fff; 
}
28b

and the whole thing:

28c

Step 29 - Little Changes

In a browser, stuff looks a bit different than in Photoshop, so we might want to make some minor changes. For example, I'd like a bit more padding above the main content and sidebar. We'll add it to the bottom of the menu.

ul#menu {padding-bottom: 50px} 

I also decided that I wanted the menu to align to the left, so I'm going to remove the padding-left. Now the items are closer together, because we had padding of 75px on the right and 30px on the left, for a total of 105. Now that we've taken away the left padding, we need to add it to the right to make up the difference:

ul#menu li {
    float: left;
    padding-right: 105px;
    width: 95px; 
}

And the grand finale:

29

So next... wait? what? we're done? We're done!

Now just some housekeeping to worry about: Validation.

Step 30 - Validation

Now validation is a crucial step in website design, I'm not going to go into the endless reasons here because this article does it for me. Here I'm just going to walk through the process:

HTML Validation

Go to the w3.org Validation Service, select validate by file upload, and select your index.html file, and click "check." Next... The moment of truth:

RED (Red is bad!)

Don't worry, it's not so bad; let's review what went wrong: looks like I only have one error:

30a

They caught me using the same id tag twice, which could cause serious confusion. Since we have lots of styles defined for the ul with the id "subscribe", we're just going to change the name of the div instead: let's call it "feeds" Now we need to check that we haven't defined any styles for #subscribe, and we haven't! To be safe, let's reload our page to make sure there were no unintentional changes. Looks good! Now let's run the validation again:

Success! Our page is now valid XHTML. You can even download an icon if you want to brag.

Note: I was pleasantly surprised to find only one error, if you're not so lucky, read the suggested info at w3 shcools, or check out this article by Glen Stansberry.

It seems we're done! Ah, but if only it were that easy. We still have to validate our CSS!

CSS Validation

Head over to The w3 CSS Validator and go through the same process as with the html, only this time select your style.css file. Checking...

We're Valid!

However, we did get a couple warnings. To stay within the good graces of the church, we should certainly pay attention to them:

30b

It's just a few little problems: we should have declared widths for all our floated items. Again, these suggestions are optional, but it's best to listen to constructive criticisms. Cleaning Up: our tagline, menu unordered list items, and sidebar all need to have widths declared. We also want to do this without changing the appearance of the page. First up, the tagline. We can just make a rough guess on this one, it's about 400px wide.

#tagline {
    float: left;
    padding-top: 20px;
    padding-left: 20px;
    width: 400px; 
}

And reload: no change, excellent. Next, the menu list items. this is a little trickier: Our page is 800px wide, so that's the maximum total width of all the list items together. If we divide by the four list items, and set the width to 200px, the items get mixed up and list vertically. This is because we have padding on either side of each list items: 30px on the left and 75px on the right. Subtract that 105 from 200, and the remaining width is 95px.

ul#menu li {
    float: left;
    padding-left: 30px;
    padding-right: 75px;
    width: 95px; 
}

Same idea with the sidebar: let's first take a look at the width of the content area: 510px. The remainder in our 800px page is 290px, but first we need to subtract all the padding on the left and right: 290-30=260. Next subtract the left margin, and we're left with 205px. One last problem: our 1px border, so let's subtract another 2px, and set the width of the sidebar to 203px. Check it again, no change.

Excellent, if we validate again, no errors, not even a warning! Our webpage, as far as w3c standards are concerned, is perfect.

Conclusion

So there you have it, one very simple, well-coded website. Throughout this tutorial, my hope is that you picked up some valuable skills to apply to your own designs, and are now ready to get started coding your own sites.


Related Posts

Check out some more great tutorials and articles that you might like

Enjoy this Post?

Your vote will help us grow this site and provide even more awesomeness

Plus Members

Source Files, Bonus Tutorials and
More for $9 a month for all TUTS+
sites in one subscription.

Join Now

User Comments

( ADD YOURS )
  1. PG

    Andrew August 3rd

    Nice tutorial, very helpful for beginners.

    ( Reply )
  2. PG

    Edgar Valdés August 3rd

    Thanks a lot.

    ( Reply )
  3. PG

    mnowluck August 3rd

    simply awesome!!

    To really know what’s going and what you are doing.. you just need the basic then you can move on ..

    Thanks a lot for this

    ( Reply )
  4. PG

    Drazen Mokic August 3rd

    So many pictures, nice :D

    ( Reply )
  5. PG

    akkis August 3rd

    you deserve too many thanks :)

    This is real work!

    ( Reply )
  6. PG

    adrusi August 3rd

    Nice tutorial, but I can’t really see anyone who would need so many details on how to write html deciding to buy komodo edit for $250, why not start out with something free like textwrangler or aptana, or even something cheap textMate.

    ( Reply )
    1. PG

      Tessa August 3rd

      Sorry if you misudnerstood, there is a free version of komodo called Komodo Edit. The pay version is called Komodo IDE. The page I linked to has options to download both. For a free application I found Komodo Edit excellent.

      ( Reply )
    2. PG

      kjnsdav August 7th

      get coda.

      ( Reply )
  7. Wish this had been around when I started out!

    ( Reply )
  8. PG

    BroOf August 3rd

    Hehe! It’s a very nice written tutorial! The first picture looks like the most templates on themeforest.net :D But anyway a good tutorial for beginners!

    ( Reply )
    1. PG

      Jeffrey Way August 3rd

      I disagree. The templates on ThemeForest are for more advanced.

      ( Reply )
      1. PG

        Thomas August 3rd

        I agree with Jeff. There are some really advanced themes on Themeforest.

      2. PG

        Yoosuf August 3rd

        i am agree, so far 10 templates of mine wer rejected :)

      3. PG

        Suciu Vlad August 3rd

        Jeff is right. Templates on themeforest.net are more advanced :)

    2. PG

      BroOf August 21st

      It was only a joke ;) I mean the structure not the design itself.

      ( Reply )
  9. PG

    Rohan August 3rd

    Its a nice, simple tut. Next time I find someone who wants to learn how to code, I’ll direct them here :-)

    ( Reply )
  10. PG

    Peter Shine August 3rd

    Thank you for the almost perfect tutorial for a new web developer. I’ve been looking the standard initiation like this.

    ( Reply )
  11. PG

    Al August 3rd

    I don’t have Photoshop so maybe this is a stupid question.

    When you create something like a logo, button or background slice, why wouldn’t you just create the image to be used on the web page at the same time instead of creating the logo, button, etc, in the PSD, then later slicing it up into images for the web and then using it?

    I have never understood why this is not usually done.

    Al

    ( Reply )
    1. PG

      Simon August 3rd

      One reason is because this way you can see how the logo looks on the actual page, and your design can take it into consideration.

      However, often you don’t have this luxury, so yeah, you’ll have to have stick it on separately. You should still put it in your PSD though, just to make sure that it doesn’t look out of place.

      ( Reply )
      1. PG

        Thomas August 3rd

        Many web developers also user their PSD to show to their clients and get acceptance from them before they start coding. That way you can root out promlems in your design early on and you won’t have to spend time changing your code.

    2. PG

      r_jake August 4th

      As Simon states – it allows the designer to have an overview of how all the elements in the page work in context with one another. If you make things in isolation then when they are put together they won’t work as well visually. This is a fundamental of ‘Gestalt’ principles.

      ( Reply )
  12. PG

    Harnish August 3rd

    Excellent Article…

    ( Reply )
  13. PG

    108Bits August 3rd

    Indepth coverage for someone who is starting up. Very nicely done. Great for novices and even good refreshing clean way for people with a little experience.

    ( Reply )
  14. PG

    Silvio August 3rd

    Well done!

    I am a beginner so I’ve bought a couple of books for begginers. I learned far more from this very instructive tutorial than I did from the books that I bought. THANK YOU!

    ( Reply )
  15. PG

    Stanley Parrish August 3rd

    Great refresher! Just what I needed to get me back up to speed.

    ( Reply )
  16. PG

    Tom Karels August 3rd

    I questiong when and where to use the . I read that it should be the most important content on the page, agree/disagree?

    Based on the tut above you are showing it as teh logo. To me that would seem redundant for every page to have the same , being that its in the header.

    Thoughts?

    ( Reply )
    1. PG

      Tessa August 3rd

      I’m sorry, I don’t quite understand your question!

      ( Reply )
  17. PG

    Simon August 3rd

    The article linked to in the validation section of the tutorial doesn’t link to anything (well it does, just back to this page). I’m quite interested in reading it, and other people probably should as well.

    For the rest, this is a pretty good tutorial.

    ( Reply )
    1. PG

      Simon August 3rd

      This is actually the case for both articles linked there.

      ( Reply )
      1. PG

        Tessa August 3rd

        Sorry about that! I forgot to fill in some blanks before submitting, I’ve sent corrections to Jeffrey Way, hopefully it will be fixed soon, but the articles are:
        CSS-tricks article for image replacement: http://css-tricks.com/css-image-replacement/
        Glen Stansberry’s article on why your code won’t validate: http://net.tutsplus.com/articles/web-roundups/10-reasons-why-your-code-wont-validate-and-how-to-fix-it/
        And another nettuts article on windows IDE’s: http://net.tutsplus.com/articles/web-roundups/22-neat-code-editors-for-windows/

        Sorry again!

      2. PG

        Simon Vansintjan August 6th

        No worries, just as long as I can read them in the end :)

  18. PG

    Steve August 3rd

    Great tutorial. Would love to see an extension for about us page, maybe a contact form, etc. Thanks in advance for all that you do Envato!!!!

    ( Reply )
  19. PG

    DoktorThomas August 3rd

    This is awesome. Thanks ever so much.

    As much as it costs, I do not know why the help section/manual for Photoshop isn’t written in English instead of Adobe-speak. I suppose they want to sell everyone a license for the dictionary/translator….

    ( Reply )
  20. PG

    Shane August 3rd

    Fantastic tutorial for beginners!

    It seems that $150 dollars for an article of this length and quality is a little unfair, particularly when up against something like ‘10 top tutorials to learn Rails’ or whatever, which takes the author about half an hour to throw together.

    This sound like a dig at some of the stuff that appears on here – it’s not at all, there must be a varied range of articles, and the amount of work will vary between them, but surely stuff like this deserves a little more cash!

    What do you think Jeff?

    ( Reply )
    1. PG

      James August 3rd

      I agree. I think articles of this caliber should be individually considered when it comes to payment. But then, the author is not ONLY getting money; the author now has Jeffrey’s (and the community’s) respect and trust; I imagine he will summon Tessa for more articles like this! :)

      ( Reply )
      1. PG

        Jeffrey Way August 3rd

        Exactly.

  21. PG

    mazzjoe August 3rd

    Best Tutorial EVER!

    Tnx you

    ( Reply )
  22. PG

    Al August 3rd

    nice tutorial Tessa, lot of good work

    one thing that should be re-iterated in these tutorials is that multi-browser testing is needed, not all beginners would consider this

    Al

    ( Reply )
    1. PG

      Tessa August 3rd

      Very good point, cross-browser compatibility is important, but I don’t want to scare any beginners, and there are plenty of resources around the web about how to deal with browser issues.

      ( Reply )
  23. PG

    Myfacefriends August 3rd

    Another Awesome tuts! thanks

    ( Reply )
  24. PG

    Seed August 3rd

    This tutorial is so huge, and all I can say – is the best tut out there! Nice, lot of thanks!

    ( Reply )
  25. PG

    Chris August 3rd

    The problem with a tutorial like this (no offense to the author) is that it makes several beginner mistakes and doesn’t really cover the entire workflow of web development.

    Aside from the design, there are several unneeded elements which contribute to the larger problem of lacking semanticity. Among others which I don’t have time to get into.

    Now, props to the author for writing a detailed article, but I’m not sure it’s best for beginners =/

    ( Reply )
    1. PG

      James August 3rd

      “semanticity” – is that a word? (Sounds cool, regardless)

      Remember, beginners really don’t care about semantics; even if you try teaching it they just don’t care. I’m afraid that’s just the nature of this job. Beginners really don’t care about any of the “rules”; they just want to create stuff!

      ( Reply )
      1. PG

        Laneth August 3rd

        As a beginner and someone who wants to learn right out of the gate the rules of the industry, and with Chris’ comment and James’ follow up, I’m wondering where I might be going wrong.

        With this in mind, I will go a-Googling for articles on semantics – I’ve read it in a good number of tutorials and comments therein, and I feel it will be my next area of development.

        Sad is the day that a beginner, looking to create a name for themselves, would shirk the responsibility to do something “right” and instead just “do”…

  26. PG

    DataMouse August 3rd

    Great article for beginners.
    Could I suggest doing the next step in this article – cross-browser compatibility (specifically with IE6 and 7)?

    ( Reply )
    1. PG

      saurabh shah August 3rd

      @datamouse yeah ! i agree with your point … nice point you have raised …

      ( Reply )
    2. PG

      fesh August 3rd

      let IE die

      ( Reply )
  27. PG

    Håvard Pedersen August 3rd

    If someone really is making their first website, I for one would not write a tutorial for a $630 graphics package. AFAIK there are no other image editors that actually support layer styles (I’ve searched).

    ( Reply )
  28. PG

    IQWebdev August 3rd

    I hope some of the non-beginner articles in the future will be this detailed :)

    ( Reply )
  29. PG

    Meshach August 3rd

    @DataMouse: If you’re running a business site then support IE6+

    If you’re running a blog/portfolio/small organization then support IE7+ and notify IE6 users to upgrade.

    ( Reply )
    1. PG

      r_jake August 4th

      I disagree. Unless the large majority of your audience are web designers/developers or trendy media types then a significant percentage of visitors to your site will still be using IE6.

      For a small business, telling visitors that they have to change to their software before they can view your website is commercial suicide – they’ll just go elsewhere.

      ( Reply )
  30. PG

    saurabh shah August 3rd

    Hey Tessa .. A very nice article for beginner ! once there was a time when i was knowing nothing n was looking for something like this post .. never found though…
    Beginners you got the sandwich now … grab it ! :)

    ( Reply )
  31. PG

    Mat August 3rd

    The heading structure jumps from a H1 to a H3 in the header and then is followed by a H2 in the body. This should be avoided especially in accesibility terms. The H2 should be a H2 and the page title should go back to H1 and follow that principle.

    ( Reply )
  32. PG

    florian August 3rd

    very nice tutorial. thanks

    ( Reply )
  33. PG

    Jeremy August 3rd

    Love this tutorial, great work. The only question I have is about the clearing statements used to clear the css style in the actual html code.

    #

    Wouldn’t you run into problems when you wanted to change the site to a new theme? Would there be a better way to go about clearing this and staying in the css file so that a new style would not have to edit the html code? I know this tutorial is meant to be very simple, just wondering what you could do to keep it in the css file only.

    Thanks again! Awesome job.

    ( Reply )
    1. PG

      Jeremy August 3rd

      It looks like my last post was stripped of the html. After the # I had the html for the code in question. It is the html where clear:both was added.
      Thanks

      ( Reply )
  34. PG

    dyrnade August 3rd

    really good 4 begginers ty ;)

    ( Reply )
  35. PG

    Clinton Montague August 3rd

    Simple, but very effective. I learnt CSS lead design (rather than tables) the hard way – by myself. I didn’t see the point, or why it was useful (quite naive, huh?!)

    This tutorial answers both, and I hope will allow beginner developers to get to the level that I and many of the other devs here are at :)

    ( Reply )
  36. PG

    Scott August 3rd

    [div style="clear:both"] is a filthy habit, adding overflow:hidden to the container will do the same 99% of the time.

    ( Reply )
  37. PG

    DemoGeek August 3rd

    Very detailed…lately I’ve been noticing that the posts are getting lengthier and more detailed…of course, that goes with the quality of the content as well…great job!

    ( Reply )
  38. PG

    Scott Strawbridge August 3rd

    Nice work Tessa!
    your cousin-in-law, Scott

    ( Reply )
  39. PG

    sreenidhibs August 3rd

    simple and easy to follow.thanks a ton.

    ( Reply )
  40. PG

    Michael August 3rd

    Great job! It definitely makes the job seem pretty long when you write it out like that.

    ( Reply )
  41. PG

    MorDog August 3rd

    well done, very impressed with the quality of this tutorial.

    ( Reply )
  42. PG

    Jakes Lamure August 3rd

    Thanks for the tut. Just a quick question…

    When you’re using CSS you do, say, “#main h3″ to style the h3 in the main div. But when you’re doing an UL it’s “ul#menu”.

    What’s up with this different naming convention?
    Is this just because a list is fundamentally a different element than a header?

    ( Reply )
    1. PG

      Maree Cassidy September 16th

      I can see your question seems to have been overlooked. The answer is that the h3 is inside the div identified as main …. so “#main h3″, or more correctly “#tagline h3″, where as the ul is identified as menu “ul#menu”.

      It could have just as easily been “#header ul” instead of “ul#menu”. It just makes it easier to know exactly what you mean…. “the unordered list that is a menu” is more explicit than “the unordered list in the header”

      Hope that clears it up a little.

      ( Reply )
  43. PG

    Laneth August 3rd

    Tessa, as a beginner I thank you.
    You article here has been bookmarked and saved off-site for my personal notes as I grow and develop my skills.
    Much Kudos to you for bringing this article to light for us all :)

    ( Reply )
  44. PG

    enatom August 3rd

    I wouldnt use photoshop to create websites, its far too time consuming, but I liked that a non-comuter student did this, I just graduated with an Architecture degree, and I love computing. kudos.

    ( Reply )
    1. PG

      Rasmus August 4th

      What would you use then? Fireworks of bug? :)

      ( Reply )
  45. PG

    Ruly Aperta August 3rd

    Yeaah.., nice…

    ( Reply )
  46. PG

    george August 3rd

    Just the best people to help others, many thanks for your efforts to educate begginers.

    ( Reply )
  47. PG

    St0iK August 3rd

    Amazing Tutorial.thanx a lot

    ( Reply )
  48. PG

    Dj August 3rd

    ERROR – the order for shorthand is: top, RIGHT, bottom, LEFT – not as you stated it.

    ( Reply )
    1. PG

      Jonathan August 4th

      Good catch.
      The author needs to fix this quick!

      ( Reply )
    2. PG

      Jake August 4th

      Yeah, although i think it’s easier to remember as North, East, South, West. But you are right, it should be changed, where she’s used it though, it doesn’t make any difference.

      She could have even shortened it to

      padding:15px 15px 30px;

      ( Reply )
  49. PG

    liquid666 August 3rd

    Great tutorial!! Happy to see some simple tutorials for all the begginers out there.. Thanks!!

    ( Reply )
  50. PG

    Islander August 3rd

    Thank you. Thank you.

    ( Reply )
  51. PG

    jlapitan August 3rd

    this is so cool.. thanks for this one.. im going to use this on my class..

    ( Reply )
  52. PG

    Nikhil August 3rd

    Excellent Tut….Well Explained..

    ( Reply )
  53. Good work ..these tips helps me a lot as i am a designer in php…thanks a lot

    ( Reply )
  54. PG

    Emmanuel Medina August 3rd

    Excellent resource for beginners congratulations I would like to watch this tutorial when I start coding with CSS,,,,,,,,long time ago

    ( Reply )
  55. PG

    Deepak August 3rd

    amazing tut .. really so very helpful got noobs like me .. thanks a lot for the incredible effort that you have put in to compile such a lenghty and complete tutorial…

    ( Reply )
  56. PG

    Srinivasa Prasad August 3rd

    Hi,
    This is awesome tutorial that you have put Tessa. It really helped me alot as a beginner, struggling to establish a name. I just want to thank you for putting up this great effort. I would love to see more from you in the future too.

    Kudos!

    ( Reply )
  57. PG

    Dzinepress August 3rd

    really helping steps with informative tips and tricks. thanks

    ( Reply )
  58. PG

    Christopher Rees August 3rd

    Excellent tutorial, I haven’t really found too many that really take the time to explain designing a site with photoshop.

    I’d love to to see this expanded and using a framework like 960 incorporated, to show how to create the images, drop them in the existing 960 CSS framework, adding perhaps some drop-down navigation.

    That’s obviously a lot of extra work, but a multi-part series going from the basics to some more advanced elements would be great.

    Either way, thanks again for an excellent article!

    ( Reply )
  59. PG

    DominixZ August 3rd

    Very Nice Tutorial for Beginner to Advance

    ( Reply )
  60. PG

    mani G August 3rd

    Really useful. Such a nice narration. Thanks a lot

    ( Reply )
  61. PG

    Al August 3rd

    Great Tut, however, seeing the design like that, it would be much faster and more flexible, to design it in Illustrator (which I prefer for all designs). Perhaps a good Vector Tut about designing a site in Illustrator?!

    ( Reply )
    1. PG

      Kiran August 4th

      Love to see how its done in Illustrator.

      ( Reply )
  62. PG

    Karansinh August 4th

    i think an pngfix script is needed to be added in the coding just in case for compatibility issue.

    anyone having any solution

    ( Reply )
  63. PG

    sebasong August 4th

    thx. answer lots of my questions.

    ( Reply )
  64. PG

    Kiran August 4th

    Just wanted to say a great tut and have learned something new!

    ( Reply )
  65. PG

    r_jake August 4th

    I teach website design/development at degree level and will be directing new students to this post as a starting point. I also appreciate the amount of time and effort that must have been spent putting this together.

    The only comments I would make to newcomers using this post as a basis to create their first site are the following:

    There are a couple of elements in the HTML that I would change due to semantics, one being the use of an additional DIV to clear the floated columns (use overflow:hidden on the containing DIV instead). Secondly, Header elements are supposed to run in order, so I would swap the H3 and H2 around, so the H2 is associated with the tagline (which is part of the site header block anyways) and H3 is used for the page/post titles.

    Secondly, I think for newcomers, some reference needs to be made to browser testing. This layout will definitely break in Internet Explorer 6, and should be also checked in IE7+8, Safari, Chrome, Opera, etc. Although there perhaps wasn’t room in this post to include detailed solutions to the IE6 CSS bugs and it’s lack of support for alpha-transparent PNGs, some acknowledgement of these issues could have been made.

    ( Reply )
    1. PG

      SohoInteractive August 4th

      useful additions. thank you

      ( Reply )
    2. PG

      Chris Wastell August 4th

      Great comment. All things which bug anyone no matter what level of experience. After all we are all human

      ( Reply )
  66. PG

    Sam August 4th

    Just far too basic. I really expect better from Nettuts. There are plenty of tutorials of this ilk floating around and other than being easy to follow there’s nothing that separates this tut from countless others.

    I can see a lot of work has gone in to it and I’m appreciative that there are authors willing to dedicate the time and effort to creating articles and tuts for the benefit of others.

    However it’s rare to read a tutorial on Nettuts and not pick up even one helpful tip.

    A bit disappointing really.

    ( Reply )
  67. PG

    Adam Webster August 4th

    Nice tutorial! It will help people just starting out with website design and coding.

    ( Reply )
  68. PG

    Martyn Web August 4th

    Great little tutorial for those who are beginning to learn web design. Covers all the basics to get you started really… I do agree with some of the points r_jake has brought up however. As much as you want to you can’t ignore IE6.

    ( Reply )
    1. PG

      Caroline Schnapp September 1st

      You can’t ignore IE6? Oh yes you can. With IE8 out, with Microsoft feeding 6 hungry people a meal whenever someone upgrades from IE6, caring about IE6 in 95% of situations has become anal.

      ( Reply )
  69. PG

    Andy August 4th

    Fantastic little tutorial, great for beginners :)

    ( Reply )
  70. PG

    Rob August 4th

    Insanely long post, but surely bookmarked.

    ( Reply )
  71. PG

    dhh August 4th

    dear web design & ‘development’ community:

    code is not a verb. stop using it like one.

    sincerely,

    the rest of the development community

    ( Reply )
    1. PG

      IgnacioRV August 4th

      Last time I checked it was a noun as well as transitive verb =P

      ( Reply )
  72. PG

         August 4th

    Excellent beginner’s tutorial! I know I would’ve appreciated someone taking the time out to post such a detailed tutorial, when I was just starting out.

    Dear “dhh”,

    Stop being an asshole.

    Sincerely,

    Humanity minus “dhh”

    ( Reply )
    1. PG

      dhh August 5th

      grow some balls

      ( Reply )
  73. PG

    Dasani August 4th

    Wow! This is really good tut. Thank you for this tut.

    ( Reply )
  74. PG

    Brian Temecula August 4th

    Although I wouldn’t ever need a tutorial like this, I am very impressed with the amount of work it must have taken to put this tutorial together. Nettuts+ is awesome!

    ( Reply )
  75. PG

    Jeraldo August 4th

    wow.. ill definitely go and take a read and try this one out when i get back home tonight. ill be a software developer by day at work and a web developer at night as a freelancer. too bad its hard to find clients since i dont have any portfolios yet. :(

    ( Reply )
  76. PG

    ibura August 4th

    this is great…thanks

    ( Reply )
  77. PG

    AbuZiyad August 5th

    Amazing and helpful topic, Thanks a lot!

    ( Reply )
  78. PG

    christopher August 5th

    This is awesome. As everyone said, “Thank you!” I’m gonna have to give this a whirl today.

    ( Reply )
  79. PG

    Graham August 5th

    It may be that I’m a complete idiot (which I think is not the case) but all I have is GIMP and I cannot figure this crap out for the life of me.

    Anyone have a suggestions for alternatives to Photoshop for those of us who don’t want to spend hundreds of dollars when we’re new at this?

    It strikes me, from what everyone has said, that this is a pretty awesome tutorial, but I’m a real beginner, so when you say to “create a clipping mask,” I dont have a clue what you mean. Then, when I create the header and top bar, I can’t seem to get them to fill with color. what the heck

    ( Reply )
  80. PG

    hari August 5th

    Great work!!! I am really enjoying the tuts.

    ( Reply )
  81. PG

    Dennis August 6th

    Ugh. I know it’s difficult to put out good content every day but these kind of by-noobs for-noobs tutorials littered with bad practices are really disappointing. I’m sure a lot of work went into this but I think beginners would benefit more from half the quantity and double the quality.

    ( Reply )
  82. Hey, its really very very helpful for me, Bcoz nowadays I am searching like this types of Information..

    Thanks..

    ( Reply )
  83. PG

    tonier August 6th

    Just like what I’m looking for :) Thanks Tessa …

    ( Reply )
  84. PG

    Jean-Philippe August 7th

    Some people pay a fortune on courses to learn this kind of stuff.

    I am a web developer, and I was looking for some kind of course to learn the basics of how to template your site in Photoshop, and then cut up images to use them in your site.

    This tutorial just saved me a lot of money and time.

    Please keep up the good work. If anyone can recommend a similar article for PHP, let me know.

    Regards,

    Jean-Philippe

    ( Reply )
  85. PG

    dj August 7th

    I agree with the comment. Quality vs Quantity. And Best Practices always. Stuff – good and bad – on the Net gets propagated real fast.

    As far as the comment on GIMP. I too use GIMP. My suggestions are: read the Gimp Manual – it’s free online or installed on your machine, buy a book like Akkana Peck’s, join the mailing list or one of the many forums, and do lots of searches on Google. Search for tutorials and things you don’t understand. Depending on your likes, there are text tutorials even youtube videos. Learn as much as possible about layers, channels, and paths. I actually used our libraries PS books to help in learning GIMP. Clipping masks don’t exist today, but I just added another layer and created a radial gradient. The text inner gradient is on Layer > Layer effects.

    I wish the user could view the tutorial with or without comments. It takes forever for these pages to load, plus it messes up scrolling/paging.

    ( Reply )
  86. I am so angry because I must to finish with layot tables & learn XHTML & CSS. I have lot of video tutorials, books, but I relly can not start to learn because I heat CSS…
    Until I found this site…
    This is first time that I have learned something of CSS, with smile…
    Thanks you for that, you must be wonderfull person…

    Can you tell me in which editors you did things in tutorials?

    ( Reply )
  87. PG

    fajarfaqih August 9th

    nice tut !!! i love it because it`s very simple, clear, and easy to understand

    ( Reply )
  88. PG

    nuc_lear August 9th

    thanks for that..

    ( Reply )
  89. PG

    Shayne August 9th

    thank you so much for the tutorial! it helps me a lot~

    ( Reply )
  90. PG

    koko August 12th

    Very good tutorial.
    can not find the Img folder in the source file.
    Where Can I get it?

    regards,
    koko

    ( Reply )
  91. PG

    #Vendetta August 13th

    I’m so thankful for this tutorial, it really helped me ^^ !
    Keep up the good work,

    Greetings from Belgium !

    ( Reply )
  92. PG

    Jose August 13th

    This is an awesome. Tutorial. Whats your recommendation on using dreamweaver?

    ( Reply )
  93. PG

    James August 14th

    Excellent tutorial – well explained and easy to follow – a must have for any junior web designer learning the ropes and a useful catch up tool for those of us who need a refresher course !

    ( Reply )
  94. PG

    Spice August 15th

    This is absolutly fantastic. I recently have taken up web design and followed this tutorial start to finish, and now i have a decent template to base all my web sites around.

    Good question from Jose above there, I am coding all my sites from scratch at the minute using Komodo, as am incorporating things like javascript, php, mysql,ajax etc and would like to know if you recommend the actual purchase of software such as dreamweaver etc or if these programs can be restricting?

    Thanks again! :)

    ( Reply )
  95. PG

    Rich Smith August 15th

    Brilliant! Being an *a’hem!* intermediate rather than a beginner (I cobbled together one site 2-weeks ago!) I thought what can I learn from this? Answer – lots! Great article, well written, extemeley informative – I learned tonnes!!!

    …Except, can you demystify the Photoshop steps for me, all I can use is erase and smudge!

    ( Reply )
  96. PG

    Dave August 16th

    Hi,

    This is a great tutorial, but I have found a little problem with the css reset tag, once added to the style file it doesn’t condense the text, is there missing tag?. I was wondering is it me doing something stupid as normal or I have missed something out. If someone could possibly stick up a copy of the text in the css style file that would be really appreciated as I have found this very useful and would like to finish my template off. Cheers

    ( Reply )
  97. PG

    Anthony August 17th

    Thank you, I am a beginner and this was HUGE help.

    ( Reply )
  98. PG

    shiek e August 17th

    how do i make the links in the navigation rollover with css. I try to add hover tag to the ul in the style sheet but no dice and i dont want to add a global rule to my otherwise clean html! SOMEONE HELP ME!

    btw this article is great for a struggling print designer like me who really needs to adapt to the web to stay relevant. i did my first paid web job via this article. hand coded with my own style; also Kimodo is freakin awesome. THX SO MUCH!

    ( Reply )
  99. PG

    Theo August 19th

    Awesome tut! Just what I need to know as a beginner in HTML/CSS. Thank you very much for sharing!

    ( Reply )
  100. PG

    Alexandre August 19th

    Very, very much. The best tutorial of Web 2.0 already seen.
    Excellent.
    A big hug from Brazil.

    ( Reply )
  101. PG

    G deep August 19th

    Nicely structured tutorial man

    ( Reply )
  102. PG

    mbardak August 19th

    that a Nice useful sharing for beginners .. thanx !

    ( Reply )
  103. PG

    anyshpm August 22nd

    Cool, What a great article it is.

    ( Reply )
  104. PG

    Arxi August 23rd

    Tnx for realy big effort to help noobs like me. I bought LOT of books for web designing and i am bored reading it. But when i see so nice tutorial like this i suddenly get inspiration and start learning again. TNX!

    ( Reply )
  105. PG

    webby August 24th

    nice job.. thanks

    ( Reply )
  106. PG

    LP August 26th

    this tutorial was exactly what I was looking for as I am a complete noob in this. I followed it through and my website came out to me almost the same as yours haha which is great success for me as this is my first time trying to code a website. Congrats and Big thanx for this!

    ( Reply )
  107. PG

    Christopher August 27th

    thanks for the great tutorial?

    A little help for a noob would be greatly appreciated.

    i’m following the tutorial and everything went fine until Step 21. I’ve defined the width and margins of the “container” class divs. as stated in my css, yet when i preview the page nothing has changed.

    (i’m using Dreamweaver CS4 if that makes any difference)

    ( Reply )
  108. PG

    Chunk August 28th

    This is just what I need – spot on!

    ( Reply )
  109. PG

    RHD August 30th

    I have a question with Step 5 – Highlight. I am unable to match this step. I added a clipping mask to the layer and made a lighter circle then used screen mode. But its not matching your screenshot.

    Is there another way of using highlights?

    Thank you, Tessa, for taking the time to write a great tutorial.

    ( Reply )
  110. PG

    KP August 30th

    Great refresher article for the intermediate and getting to know Joe. Quality

    ( Reply )
    1. PG

      Moiz October 13th

      Goooood !!

      ( Reply )
  111. PG

    Caroline Schnapp September 7th

    Regarding Step 5 – Highlight I am wondering if there’s another way to add a highlight that makes it easy to edit the colors later on.

    All we’re doing is ‘lightening up’ an area there, can we use a simple shade-of-gray mask?

    ( Reply )
    1. PG

      Caroline Schnapp September 7th

      I added a blending mode to the layer. That way it no longer matters what color I use for my brush. I add a ‘color overlay’, mode:Ligthen, color:White and adjust the opacity until I get the desired highlight strength.

      ( Reply )
  112. PG

    Kishore Mylavarapu September 9th

    Excellent tutorial..It helped me alot.Thank you very much.
    But i have a doubt.
    How to create pages like sidebar.php,functions.php,page.php..like that..
    Can you please help us in this one also..then we will be very happy..

    ( Reply )
  113. PG

    kjnsdav September 13th

    good web tutorial – but bad design tutorial.

    ( Reply )
  114. PG

    Jeff@J&L Bamboo September 14th

    This’s my first time coding a website with css instead of tables, I can’t tell you how much I appreciate your great tutorial.

    ( Reply )
  115. PG

    Ryksz September 16th

    Great tut, but tell me, how do you display the contents of About, Portfolio and Contact? do you target the main content DIV as a frame, re-do the index file for each one of them? See I used to do all this in html tables with php include function (I know… it’s been a while) so… can you help me or point me to some nice tut regarding this?

    tnx alot

    ( Reply )
  116. PG

    GX September 21st

    Excellent will help me a lot. :)

    ( Reply )
  117. PG

    Esom September 24th

    Great tutorial..but i tried doing this but mine didn’t work. i got stuck in step 22…pls some1 help me plssss

    ( Reply )
  118. PG

    Fredy Martins September 24th

    I´d came just to thank you a lot. Really.

    You´re certainly a great teacher.

    God bless you!

    ( Reply )
  119. PG

    Jeff Allen September 28th

    I noticed one small snafu in the presentation.

    In step 19 the picture shows you going from H2 to an H4 but when you look at the code and explanation it goes from H2 to H3, this might confuse somebody.

    Otherwise this looks solid.

    ( Reply )
  120. PG

    Alexandros September 28th

    Amazing step-by-step tutorial.

    Over-simplified and exactly what I needed.

    Thank you!!

    ( Reply )
  121. PG

    John Cardozo September 28th

    Awesome… very very helpful!!
    Thanks for such en excellent tutorial.

    ( Reply )
  122. PG

    Tylor September 28th

    Where exactly are the icons from? There doesn’t seem to be a link in the Tutorial.

    ( Reply )
    1. PG

      Victoria October 6th

      I know what you mean.
      I just made 3 different colored squares in my photoshop file.
      Victoria

      ( Reply )
  123. PG

    Victoria October 6th

    Step 20 and 21 are not working for me. Could you please show me exactly how the css file should look? I am using Firefox browser.

    ( Reply )
  124. PG

    Victoria October 6th

    Is this an external, internal, or inline css style sheet?

    ( Reply )
  125. PG

    Plaid October 7th

    I am also stuck at step 21. Nothing is happening when i set the width for containers… could someone help out?

    ( Reply )
  126. PG

    nel October 10th

    wow,, nice tutorial,,, can u help me start to make a simple php website????,,,

    i dont have any knowledge about php but i wanted to start to a simple one so that i can understand it,,,,,

    thnx,,,

    ( Reply )
  127. PG

    sonnydesign October 11th

    I bookmark this tutorial and i will try it later. It seems easy to follow and understand. Thank you

    ( Reply )
  128. PG

    Ann October 17th

    Thank you so much for a well planned and well organised tutorial.
    You’ve managed to enable me to understand basic CSS/html far better than the books i paid money for.
    Also the photoshop element of the tutorial has been very useful for my professional work.

    thanks again!

    ( Reply )
  129. PG

    Helen October 18th

    Great but even greater if you could hve put in the css and html code in one piece too

    ( Reply )
  130. PG

    Techwizo October 20th

    I was really confused in CSS ! but when I have started to learn via this web, I got command on CSS I want to say Thanks Gradually from my heart…

    ( Reply )
  131. PG

    Eddie October 24th

    great great great!..

    ( Reply )
  132. PG

    Roberto October 24th

    I learn about Css in 5 minuts. Thank so much!!!. Were my last point in web design!!!.

    ( Reply )
  133. PG

    Zach October 26th

    Great Tutorial!

    One question here, I’m a newbie to the coding end of website stuff. I need to create a whole site, how do i make several pages have the same header and footer, or sidebar?

    Thanks!

    ( Reply )
  134. PG

    designfollow October 28th

    thanks for this great tutorial.

    ( Reply )
  135. PG

    john October 28th

    I’ve got a question..part 2 @ step 14 where you slice the header between the 2 guides, why is the logo, text, etc. not appear on the image there?

    ( Reply )
  136. PG

    Darren October 29th

    Helped me alot

    ( Reply )
  137. PG

    Elias November 5th

    Hm, i followed the whole tutorial and came to the step were you should preview your site, and mine is all white, nothing on it. On the title it says”

    Please help me, i found this tutorial really helpful for a beginner like me.

    ( Reply )
    1. PG

      Elias November 5th

      On the title it says

      ( Reply )
      1. PG

        Elias November 5th

        I cant see the text, well. On the title it says !–insert your title here–

        And with on the side of the text.

  138. PG

    nick November 5th

    Great job

    ( Reply )
  139. PG

    Jim November 17th

    Simply awful.

    ( Reply )
  1. Arrow
    Gravatar

    Your Name
    November 17th