본문 바로가기
Front-End/HTML , CSS

display: table , table-cell

by 어렵다어려웡 2021. 3. 19.

프로젝트 제작 겸 특정 사이트를 모방해서 따라만들면서 연습하는 도중에 발견한 CSS이다..

 

 

* 특정 사이트에서 만들어져 있는 화면.

 

클론코딩 중에 위의 표를 만드려고 했을 때 우선 간단하게 따라서만드는 것에 의미를 두고 있기 떄문에

우선적으로 기억난 것은 display: flex 를 이용해서 해당 div박스의 레이아웃을 잡으려고 했다.

 

그렇지만 개발자도구를 통해 확인해본 결과 display: table이라는 속성을 사용하고 있었다.

 

display: table 속성을 사용하기 위해서는 다음과 같은 방법으로 진행해야한다.

1. 부모 태그가 display: table 을 사용한다.

2. 자식 태그가 display: table-cell 을 사용한다.

 

* 굳이 <table> 이 아니라 해당 CSS를 사용하는 이유는 vertical-align이 블록요소에는 적용되지 않지만

인라인과 테이블요소에만 적용되기 떄문에 사용한다.

 

주의 할 점은 vertical-align을 적용하려면 display: table-cell 이 있어야 된다는 것이다.

없으면 적용할 수 없다.

 

display: table

: 기존에 있는 <table> 과 같은 역할을 하게 해준다.

 

display : table-cell 

: 기존의 <td> 역할을 한다.

 

1. 처음에 display: flex를 사용해보려고 잠깐 잡았던 HTML

	<h2> 상품등록 </h2>
		<fieldset>
			<ul>
				<li>
					<p >카테고리 등록</p>
				</li>
				<li>
					<p >카테고리 등록</p>
				</li>
				<li>
					<p >카테고리 등록</p>
				</li>
				<li>
					<p>카테고리 등록</p>
				</li>
			</ul>
		</fieldset>

 

결과가 이런식으로 나왔다가..

아래의 html코드처럼 부모에 table, 자식에 table-cell 을 주고 

내용은 가운데로 오게끔 해서 맞췄다.

table-layout: fixed -> 해당 박스안의 내용이 길어지면 레이아웃 길이에 변화가 일어나는데

그것을 고정시켜서 레이아웃의 크기를 일치시키기 위함이다.

<ul  style="display: table; width: 100%; border-bottom: 2px solid #999; table-layout: fixed;">
    <li class="tabTitle">
   	 	<p >카테고리 등록</p>
    </li>
    <li class="tabTitle">
    	<p >카테고리 등록</p>
    </li>
    <li class="tabTitle">
    	<p >카테고리 등록</p>
    </li>
    <li class="tabTitle">
    	<p>카테고리 등록</p>
    </li>
  </ul>
  
  .tablTitle {
  		display: table-cell;
        vertical-align: middle;
        text-align: center;
        font-size: 12px;
        height: 100%
  }

 

 

 

 

'Front-End > HTML , CSS' 카테고리의 다른 글

this, $(this) 의 차이  (0) 2021.03.22
<select>태그의 option의 value 값  (0) 2021.03.22