сам блочный элемент по умолчанияю растягивается на всю ширину своего родителя, задаём ему ширину и он по умолчанию прижат влево, а margin: 0px auto; браузер делит разницу от ширины родителя и ширины дочернего блока на левый и правый марджин, вот и получается выравнивание по центру. это нормальный способ выровнить блок по центру (если конечно у него нет float), в старых IE6 и ниже не работает, тут мы дополнительно ставим text-align: center; тому блоку внутри которого выравниваем контейнер, таким образом и в IE6 работает и в нормальных браузерах. Спасибо большое. Очень доходчиво!