category: Dev
tags: [web,html,emmet,zen coding]
reference site :
emmet 공식 홈페이지 가이드 문서

개요

html 태그를 생성하기 위한 방법중 사실상 가장 편한 방법이라고 생각하는 emmet.
기본적인 사용법정도는 익혀두면 좋다. css 에도 사용 가능하다는데 그건 다음에

기본 사용법

  • 태그 생성 : {tab}키
    • grid {tab}

        <grid></grid> 
      
  • 하위(Child) 태그 생성 : “>”
    • grid>button

        <grid><button></button></grid>
      
  • 형제(Sibling) 태그 생성: “+”
    • grid>button+li

        <grid>
            <button></button>
            <li></li>
        </grid>
      
  • 상위(Climb-up) 태그 생성: “^”
    • 굳이 그럴필요 있을까 싶지만 작성중 편의를 위한 것으로 보임.
    • div>grid>li^textbox

        <div>
            <grid>
                <li></li>
            </grid>
            <textbox></textbox>
        </div>
      
    • div>grid>li^^textbox

        <div>
            <grid>
                <li></li>
            </grid>
        </div>
        <textbox></textbox>
      
  • 태그 반복(Multiplication) 생성 : “*”
    • 동일 태그 반복 생성. 표그리기 등    - ul>li*5

        <ul>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
      
  • 그룹(Grouping) 묶기 : “()”
    • 반복작업시에 여러개 태그를 하나의 그룹으로 처리한다.
    • (div>dl>(dt+dd)*3)+footer>p

        <div>
            <dl>
                <dt></dt>
                <dd></dd>
                <dt></dt>
                <dd></dd>
                <dt></dt>
                <dd></dd>
            </dl>
        </div>
        <footer>
            <p></p>
        </footer>
      

속성(attribute) 관리

자주쓰는 속성도 emmet으로 선언할 수 있다.

  • ID, CLSS 선언 : “#”, “.”
    • css셀렉터와 동일함.
    • div#header+div.page+div#footer.class1.class2.class3

        <div id="header"></div>
        <div class="page"></div>
        <div id="footer" class="class1 class2 class3"></div>
      
  • 커스텀 속성 관리 : “[attr=val]”
    • 임의, 그외 속성 관리도 가능.
    • td[title=”Hello world!” colspan=3]

        <td title="Hello world!" colspan="3"></td>
      
  • 넘버링 (descending, ascending): “$” / “$@-“
    • 특정속성의 이름 넘버링 하는 방식.
    • ul>li.item$*5

        <ul>
            <li class="item1"></li>
            <li class="item2"></li>
            <li class="item3"></li>
            <li class="item4"></li>
            <li class="item5"></li>
        </ul>
      
    • ul>li.item$$$*5

        <ul>
            <li class="item001"></li>
            <li class="item002"></li>
            <li class="item003"></li>
            <li class="item004"></li>
            <li class="item005"></li>
        </ul>
      
    • 역순
    • ul>li.item$@-*5

        <ul>
            <li class="item5"></li>
            <li class="item4"></li>
            <li class="item3"></li>
            <li class="item2"></li>
            <li class="item1"></li>
        </ul>
      
    • 시작 번호를 매길 수 있음.
    • ul>li.item$@3*5

        <ul>
            <li class="item3"></li>
            <li class="item4"></li>
            <li class="item5"></li>
            <li class="item6"></li>
            <li class="item7"></li>
        </ul>
      

내용쓰기

  • 내용쓰기 : “{}”
    • button{click me}

        <button>click me</button>
      
  • 복합사용
    • 아래 두 예시에서 a에 대한 텍스트를 참조 하자
    • a{click}+b{here} : a와 b가 형제태그임.

        <a href="">click</a><b>here</b>
      
    • a>{click}+b{here} : a 하위에 텍스트와 b태그가 존재.

        <a href="">click<b>here</b></a>
      

사용 팁

  • 이미 만들어진 html 안에서도 작성 가능하다.

      <grid>
          li   <!--이걸 탭하면 li tag가 생성됨. -->
          .item <!-- 여기서 탭하면 "<div class="item"></div>" 태그가 됨.  -->
      </grid>
    
  • 생략가능한 태그도 존재.

   
.wrap>.content div.wrap>div.content
em>.info em>span.info
ul>.item*3 ul>li.item*3
table>#row$*4>[colspan=2] table>tr#row$*4>td[colspan=2]
  • 하위태그가 자동으로 붙는 것도 있음 (Implicit tag names)
    • ul>.item : ul 아래에 item클래스를 갖는 li 태그
    • tr>.item : tr 아래 item클래스를 갖는 td 태그
    • 최상위에서는 div가 기본 태그가 됨.
  • 맨 뒤에 e 를 붙이면 <> 가 < , > 로 표시됨. (필터)
  • lorem 태그명으로 생성시 흔히 말하는 “Lorem Ipsum” 내용이 복사됨.

예제

표 만들기

  • .table>table>.header>.FirstNm{First Name}+.LastNm{Last Name}+.Point1{Point1}+.point2{Point2}^(.row$>.FirstNm${test$}+.LastNm${data$}+.Point1${ponit$}+.Point2${testing$})*3

      <div class="table">
          <table>
              <tr class="header">
                  <td class="FirstNm">First Name</td>
                  <td class="LastNm">Last Name</td>
                  <td class="Point1">Point1</td>
                  <td class="point2">Point2</td>
              </tr>
              <tr class="row1">
                  <td class="FirstNm1">test1</td>
                  <td class="LastNm1">data1</td>
                  <td class="Point11">ponit1</td>
                  <td class="Point21">testing1</td>
              </tr>
              <tr class="row2">
                  <td class="FirstNm2">test2</td>
                  <td class="LastNm2">data2</td>
                  <td class="Point12">ponit2</td>
                  <td class="Point22">testing2</td>
              </tr>
              <tr class="row3">
                  <td class="FirstNm3">test3</td>
                  <td class="LastNm3">data3</td>
                  <td class="Point13">ponit3</td>
                  <td class="Point23">testing3</td>
              </tr>
          </table>
      </div>
    

리스트 만들기 (원본: 부트스트랩 소스 )

  • ul.nav.nav-pills>.active>a[#]{Home}^li>a[#]{Profile}^.disabled>a[#]{Disabled}^.dropdown>a.dropdown-toggle[data-toggle=dropdown href=#]>{Dropdown}+span.caret^ul.dropdown-menu>li>a[#]{Action}^li>a[#]{Another action}^li>a[#]{Something else here}^.divider+li>a[#]{Separated link}

      <ul class="nav nav-pills">
          <li class="active"><a href="#">Home</a></li>
          <li><a href="#">Profile</a></li>
          <li class="disabled"><a href="#">Disabled</a></li>
          <li class="dropdown">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown<span class="caret"></span></a>
              <ul class="dropdown-menu">
                  <li><a href="#">Action</a></li>
                  <li><a href="#">Another action</a></li>
                  <li><a href="#">Something else here</a></li>
                  <li class="divider"></li>
                  <li><a href="#">Separated link</a></li>
              </ul>
          </li>
      </ul>