Este é um dica de CSS, tão simples e tão prática, que se você não conhecia, vai adorar conhecer. Sabe aquela margem padrão (margin ou padding) que os muitos dos elementos (X)HTML possuem? Vamos remover essas margens!
O que há de errado com a margem padrão?
A questão aqui é muito simples: ela é inconsistente entre alguns navegadores. Alguns elementos aparecem com padding num navegador, outros usam margin, em alguns o valor é X, em outros o valor é Y... Aí já viu, bobeou e é um festival de pequenas diferenças nos seus layouts.
A solução para este problema é bastante simples, para não dizer óbvia:
* {
margin: 0;
padding: 0;
}
Usando o seletor universal "*" zeramos os valores de margin e padding em todos os elementos da página
Desta forma, um elemento só vai ter margem (interna ou externa) se você especificar, o que no final das contas facilita sua vida pois você não vai precisar ficar lembrando onde estão as inconsistências de cada elemento em cada navegador.
Não gostei desse seletor universal aí...
É, nem todo mundo se sente confortável com um seletor universal na página. Se você preferir, o Tantek Çelik tem uma solução alternativa também muito boa. É o undohtml.css. Coloquei abaixo uma cópia do original:
/* undohtml.css */
/* (CC) 2004 Tantek Celik. Some Rights Reserved. */
/* http://creativecommons.org/licenses/by/2.0 */
/* This style sheet is licensed under a Creative Commons License. */
/* Purpose: undo some of the default styling of common (X)HTML browsers */
/* link underlines tend to make hypertext less readable,
because underlines obscure the shapes of the lower halves of words */
:link,:visited { text-decoration:none }
/* no list-markers by default, since lists are used more often for semantics */
ul,ol { list-style:none }
/* avoid browser default inconsistent heading font-sizes */
/* and pre/code too */
h1,h2,h3,h4,h5,h6,pre,code { font-size:1em; }
/* remove the inconsistent (among browsers) default ul,ol padding or margin */
/* the default spacing on headings does not match nor align with
normal interline spacing at all, so let's get rid of it. */
/* zero out the spacing around pre, form, body, html, p, blockquote as well */
/* form elements are oddly inconsistent, and not quite CSS emulatable. */
/* nonetheless strip their margin and padding as well */
ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input
{ margin:0; padding:0 }
/* whoever thought blue linked image borders were a good idea? */
a img,:link img,:visited img { border:none }
/* de-italicize address */
address { font-style:normal }
/* more varnish stripping as necessary... */
Um CSS com seletores básicos, bem fácil de ser entendido.
Faça o teste!
Experimente começar um novo projeto usando umas das duas formas propostas acima. Posso te garantir que você não vai se arrepender!