본문 바로가기
Front-end

HTML&CSS 작성 치트키, Emmet 에밋 사용법

by softserve 2023. 3. 21.
반응형

Emmet은 HTML, CSS 를 간편하게 작성할 수 있도록 도와주는 툴킷입니다.

 

1. 도구

 

VSCode에 내장되어 있어 별도의 설치없이 Tab 키만 누르면 사용할 수 있습니다.

인텔리제이 역시 에디터에서 기본적으로 Emmet을 지원하며, 에밋을 작성한 뒤 Tab 키를 누르면 HTML로 변환됩니다.

setting > editor > emmet 에서 Tab 대신 다른 키로 변경이 가능합니다.

 

2. 뼈대 만들기

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
</html>

 

! + Tab

!를 입력한 뒤 Tab키를 누르면 위와 같은 html 기본 골격과 메타태그를 만들어줍니다.

 

3. 살 붙이기

 

아래 HTML은 기본적인 웹 페이지의 구조를 나타낸 것입니다. HTML은 기호도 많이 들어가고 양도 많아 직접 타이핑하는 것이 굉장히 귀찮습니다. 하지만 Emmet을 사용하면 축약된 표현을 입력한 다음 HTML로 바로 파싱할 수 있기 때문에 이런 수고를 덜 수 있습니다.

<div class="wrap">
    <header>
        <h1 class="logo"><a href="#"></a></h1>
        <nav>
            <ul class="gnb">
                <li><a href="#">menu1</a></li>
                <li><a href="#">menu2</a></li>
                <li><a href="#">menu3</a></li>
                <li><a href="#">menu4</a></li>
                <li><a href="#">menu5</a></li>
            </ul>
        </nav>
    </header>
    <div class="container">
        <div class="content">hello</div>
    </div>
</div>

 

 

위 내용을 단 한 줄로 표현하면 다음과 같습니다.

div.wrap>header>h1.logo>a[href="#"]^nav>ul.gnb>li*5>a[href="#"]{menu$}^^^^div.container>div.content{hello}

좀 복잡해보이긴 하지만 알고보면 굉장히 쉽고 직관적입니다.

* 주의할 점: 에밋 사이에 공백이 들어가면 안 됩니다.

먼저 위에서 사용된 Emmet 기호를 정리해보겠습니다.

. 클래스 이름
# 아이디
> 자식 요소
[name="value"] 속성명과 값
^ 상위요소
*n n개의 복수요소
$ 1부터 순서대로 숫자를 부여
{} 텍스트 내용

대충 감이 오시나요?

먼저  로는 계층을 표현할 수 있습니다.

div.wrap>header>h1.logo>a
<div class="wrap">
    <header>
        <h1 id="logo"><a href=""></a></h1>
    </header>
</div>

<div> 안에 <header>가 들어있고 그 안에 <h1>이, 그리고 가장 안쪽에 <a>가 있는 HTML이 만들어졌습니다.

요소의 class나 id를 설정해주려면  div.wrap   h1#logo  같은 식으로 넣어주면 됩니다.

그런데 이런 식으로 맨틀까지 계속 파고 들어가기만 할 수는 없습니다.

<a>에 도달한 시점에서 <h1>과 같은 레벨로 다시 올라가려면  를 넣어줍니다. 여러 개를 넣을 수도 있습니다.

div.wrap>header>h1.logo>a[href="#"]^nav

이렇게 하면 <nav>는 h1과 동등한 레벨에 위치하게 됩니다.

만약 <a>가 없었다면 형제를 표현하기 위해서 h1  nav 라고 할 수도 있습니다.

div.wrap>header>h1.logo+nav

이렇게요.

요소에 속성을 넣어줄 때는 태그[속성명="값"] 이런 식으로 하면 됩니다.

즉, div.wrap은  div[class="wrap"]  와 같습니다.

<a>와 </a> 사이에는 링크 텍스트가 들어갑니다.

클릭!

이렇게 태그 안에 텍스트가 들어갈 때에는  {클릭!}  요런 식으로 넣어주면 됩니다.

ul.gnb>li*5>a[href="#"]{menu$}

이 부분은 먼저 gnb 클래스의 <ul> 안에 <li> 5개를 만들어줍니다. 여러 개 만들때는 곱하기  기호를 씁니다.

그리고 그 안에 <a>를 넣어주는데 <a> 안에는 menu$ 라는 텍스트를 넣습니다.  $ 는 1부터 1씩 증가하는 숫자를 넣어주겠다는 의미입니다.

결과는 이렇게 되죠.

<ul class="gnb">
    <li><a href="#">menu1</a></li>
    <li><a href="#">menu2</a></li>
    <li><a href="#">menu3</a></li>
    <li><a href="#">menu4</a></li>
    <li><a href="#">menu5</a></li>
</ul>

사실 개발자가 HTML을 이렇게 본격적으로 작성할 일이 많지는 않겠지만...

Emmet을 이 정도만 알아도 개인 프로젝트를 하거나 웹 디자인 기능사 실기 시험에 응시할 때 굉장히 유용하게 사용할 수 있을 것 같습니다 :)

반응형

댓글