CSS를 사용해서 중앙정렬을 하려면 여러 팁들이 있습니다. 

제가 사용하는 방법은 크게 두 가지 입니다. 

1. 고정된 width, height 값을 가지는 element 의 정렬. 
2. 가변폭을 가지는 element 의 정렬. 

1번의 경우는 아주 쉽습니다. 

.element{ 
  width: 100px; 
  height: 100px; 
  position: absolute; 
  left: 50%; 
  top: 50%; 
  margin-left: -50px; 
  margin-top: -50px; 


쉽게 이해되시죠? 
마이너스 마진값을 가지고, 결국 자신의 폭의 절반을 빼주는 겁니다. 
이렇게 하면, 언제나 화면 중앙에 요소배치가 가능합니다. 

2번의 경우는 좀 더 복잡합니다. 마컵이 여러 단계로 필요한데요. 

<!-- HTML MARKUP --> 
<div class="to_this"> 
  <div> 
      <div> 
        <div class="align_me"></div> 
      </div> 
  </div> 
</div> 

무려 네 단계의 마컵을 거칩니다. 

CSS 를 less.css 기준으로 보여드리면 이렇습니다. (이해하기 쉬우시라고) 

.to_this{ 
  position:absolute; 
  top:0; left:0; bottom:0; right:0; 
  z-index:10; 
  >div{      
      display:table; 
      width:100%; 
      height:100%; 
      >div{ 
          display:table-cell; 
          vertical-align: middle;          
          .align_me{          
          padding:10px; 
          } 
      } 
  } 


1) 결국 window 를 기준하려면 기준점이 필요하기 때문에, div.to_this 가 절대포지셔닝으로 전체화면을 채웁니다. 
2) 그 바로밑의 div 는 table 역할을 해야하기 때문에 역시 전체화면을 꽉 채우는 table 로서의 역할 
3) 그 바로 아래가 table-cell 로서 중앙정렬자 역할을 해주고요. 
4) 마지막 div.align_me 가 가변폭을 가지는 그 무엇이 될 수 있습니다. 


쉽게말해, table / table-cell 관계를 가지고 중앙정렬을 하는 것인데, 늘 화면 중앙에 두기 위해서 여러 꼼수를 쓴 겁니다. 

AND