C’est pas compliqué, mais il vaut mieux le savoir, plutot que de perdre du temps à comprendre pourquoi ça marche pas. Pour aligner un texte dans un block, c’est tout simple :

.baliseBlock {
 text-align: center;
}

Par contre, si on veut aligner un block dans un block, ça ne fonctionne pas (enfin, pas avec tous les navigateurs). Pour cela il faut définir la largeur de notre block, et mettre ses margin à auto :

.baliseACentrer {
 margin-left: auto;
 margin-right: auto;
 width:50%;
}

Maintenant, plus compliqué : si on a défini notre block en positionnement absolu, on ne peux pas centrer en utilisant les margin. Dans ce cas, il va falloir ruser. Attention, cette astuce peut poser certains problèmes si on réduit la page (une partie de la page est rognée, avec impossibilité d’y acceder), soyez-en conscient si vous devez l’utiliser, et préférez systématiquement la méthode précédente si vous le pouvez.

Pour centrer notre élément, on va donc le positionner à 50% du bord gauche, puis le décaler vers la gauche de la moitié de la largeur du block.

.baliseACentrer {
 position: absolute;
 width:600px;
 left: 50%;
 margin-left: -300px;
}

Là ça fonctionne, mais il faut connaitre la taille exacte de notre block pour pouvoir le centrer. Je vous donne une dernière astuce pour utiliser des largeurs non connues à l’avance.

Cette fois, on va utiliser deux blocks imbriqués :

<div class="divExterieur">
 <div class="divInterieur">
     Contenu...
 </div>
</div>

Ce qui va permettre au div intérieur de se décaler vers la gauche en tenant compte de la largeur de son div parent :

.divExterieur {
 position: absolute;
 width:40%;
 left: 50%;
}
.divInterieur {
 width: 100%;
 margin-left: -50%;
}