ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 펌 ] HTML 코딩 팁
    Technique/WEB 2016. 9. 19. 16:43
    반응형

    원문 : http://hacks.mozilla.or.kr/2016/09/a-few-html-tips/?utm_content=buffer7544b&utm_medium=social&utm_source=facebook.com&utm_campaign=buffer


    의 글을 퍼왔습니다.


    요즘 HTML을 코딩할 일은 자주 없지만 그래도 알아두면 좋을 것 같아 기록해둘까 합니다.


    Text

    Paragraph

    우리가 만드는 HTML 코드는 대부분 패러그래프로 구성됩니다. HTML 엘리먼트 중에는 패러그래프 태그 (<p> 태그)가 존재합니다. 패러그래프를 나누는 용도로 줄바꾸기 태그 (<br> 태그)를 쓰지 마세요. 줄바꾸기와 패러그래프는 의미가 다르기 때문입니다.


    이렇게 쓰지 마세요:

    1
    2
    3
    4
    5
    6
    7
    Cupcake ipsum dolor sit. Amet chupa chups chupa chups sesame snaps. Ice cream pie jelly
    beans muffin donut marzipan oat cake.
     
    <br>
     
    Gummi bears tart cotton candy icing. Muffin bear claw carrot cake jelly jujubes pudding
    chocolate cake cheesecake toffee.
    cs


    이렇게 쓰세요:

    1
    2
    3
    4
    5
    <p>Cupcake ipsum dolor sit. Amet chupa chups chupa chups sesame snaps. Ice cream
    pie jelly beans muffin donut marzipan oat cake.</p>
     
    <p>Gummi bears tart cotton candy icing. Muffin bear claw carrot cake jelly jujubes
    pudding chocolate cake cheesecake toffee.</p>
    cs


    줄바꾸기 태그의 적합한 용도는, 시 또는 노래 가사의 줄을 나누는 것입니다

    1
    2
    3
    4
    <p>So close, no matter how far<br>
    Couldn’t be much more from the hearth<br>
    Forever trusting who we are<br>
    And nothing else matters</p>
    cs


    Heading

    <h1> 부터 <h6> 에 이르는 헤딩 태그들은 암묵적으로 중요도의 순위를 나타냅니다. 1이 가장 중요하고 6 이 가장 덜 중요합니다.

    이런 의미를 적절히 처리하려면, 헤딩 순위를 브라우저가 표시하는 헤딩 문자의 크기를 기준으로 정하지 말고, 중요도를 기준으로 정하세요. 헤딩의 크기는 CSS 를 이용해서 조정할 수 있으며, 반드시 CSS 를 이용해서 조정해야 합니다! 의미적으로 적절한 순위의 헤딩을 선택하세요.


    이렇게 쓰지 마세요:

    1
    2
    3
    4
    5
    <article>
        <h1>Monkey Island</h1>
        <h4>Look behind you! A three-headed monkey!</h4>
        <!-- ... -->
    </article>
    cs


    이렇게 쓰세요:

    1
    2
    3
    4
    5
    <article>
        <h1>Monkey Island</h1>
        <h2>Look behind you! A three-headed monkey!</h2>
        <!-- ... -->
    </article>
    cs


    한가지 더 고려해야 할 것은 헤딩과 함께 쓸 하위 헤딩 또는 태그 줄을 생성하는 방법입니다. W3C 방식은 순위가 낮은 헤딩을 쓰는 것보다 일반적인 텍스트 마크업을 쓰는 것을 추천합니다.


    이렇게 쓰지 마세요:

    1
    2
    3
    4
    <header>
        <h1>Star Wars VII</h1>
        <h2>The Force Awakens</h2>
    </header>
    cs


    이렇게 쓰세요:

    1
    2
    3
    4
    <header>
        <h1>Star Wars VII</h1>
        <p>The Force Awakens</p>
    </header>
    cs


    Form

    Placeholder

    <input> 엘리먼트의 placeholder 속성은 사용자에게 입력 값 샘플을 보여줍니다. 그리고 사용자가 해당 필드에 값을 입력하는 순간 자동으로 지워집니다. placeholder 는 적합한 입력 필드 값의 형태를 본보기로 보여주기 위한 수단입니다.

    불행히도, 개발 현장에서는 placeholder 를 <label> 엘리먼트의 역할로 쓰는 경우가 굉장히 많습니다. 유효한 입력 값의 본보기를 보여주는 역할이 아니라 필드의 목적을 알려주는 역할 말입니다. 이렇게 쓰는 것은 장애인을 위한 웹 접근성 측면에서 좋지 않기 때문에 피해야 합니다.


    이렇게 쓰지 마세요:


    1
    2
    <input type="email" placeholder="Your e-mail" name="mail">
    cs


    이렇게 쓰세요:

    1
    2
    3
    4
    <label>
        Your e-mail:
        <input type="email" placeholder="darth.vader@empire.gov" name="mail">
    </label>
    cs


    모바일 기기의 키보드 처리

    모바일 기기에서 브라우징 하는 사람들을 위해 타이핑 힌트를 제공하는 것이 중요합니다. <input> 엘리먼트에 적절한 type 속성을 지정하면 됩니다.

    예를 들어, type="number" 라고 지정하면 모바일 폰(phone)은 통상적인 알파벳 키보드 대신 숫자 키패드를 표시할 것입니다. 필요에 따라 type="email"type="tel" 등을 지정하세요.


    이렇게 쓰지 마세요:

    1
    <label>Phone number: <input type="text" name="mobile"></label>
    cs


    이렇게 쓰세요:

    1
    <label>Phone number: <input type="tel" name="mobile"></label>
    cs


    비교해 봅시다. 왼쪽은 type="text" 라고 지정했을 때 표시되는 키보드입니다. 그리고 오른쪽은 type="tel" 라고 지정했을 때 표시되는 키보드입니다.


    Image

    SVG 파일을 반갑게 맞아주세요! 우리는 보통 다음 같은 코드로 벡터 그래픽을 사용합니다.


    1
    <img src="acolyte_cartoon.svg" alt="acolyte">
    cs


    그런데 웹사이트의 벡터 아이콘을 구현할 때도 SVG 스프라이트를 이용할 수 있습니다. 벡터 아이콘은 웹 폰트로도 구현할 수 있습니다. 하지만 그건 편법이고 완벽한 품질을 얻지 못할 때가 있습니다. 왜냐하면 브라우저는 웹 폰트를 이미지가 아니라 문자로 취급하기 때문입니다. 그리고 잠재적인 다른 문제가 있습니다. 광고 블록킹 솔루션(content/ad blockers)들이 웹 폰트 다운로드를 막는 문제입니다. 이에 대해 좀 더 알고 싶다면, 아이콘을 그리는 용도로 웹 폰트보다 SVG 가 좋다는 Sarah Semark 의 이야기를 들어보세요. CSS-Tricks 에서도 관련 기사를 읽을 수 있습니다.

    SVG 스프라이트는 CSS 스프라이트와 아주 비슷한 아이디어입니다. SVG 스프라이트를 구현하려면 모든 SVG 애셋(asset)들을 한개의 이미지 파일로 병합해야 합니다. SVG 의 모든 애셋들은 다음 코드처럼 <symbol> 태그로 묶입니다.


    1
    2
    3
    4
    5
    <svg>
        <symbol id="social-twitter" viewBox="...">
            <!-- actual image data here -->
        </symbol>
    </svg>
    cs


    그다음, 해당 아이콘은 다음 코드처럼 당신의 HTML 안에서 <svg> 태그를 이용해서 쓸 수 있습니다. 즉, 우리는 SVG 파일 안에 있는 symbol ID 를 참조하는 것입니다.


    1
    2
    3
    <svg class="social-icon">
        <use xlink:href="icons.svg#social-twitter" />
    </svg>
    cs


    SVG 스프라이트 쉬트(spritesheet)를 작성하는 것이 번거로와 보이나요? 그래서 준비했습니다. 이를 위해 사용할 수 있는 gulp-svgstore 같은 도구가 있습니다. 이 도구는 각각의 애셋 파일들로부터 스프라이트 쉬트를 만드는 과정을 자동화합니다.

    그리고 기억하세요. 우리가 그림을 표현하기 위해 <img> 태그 대신 <svg> 태그를 쓰고 있기 때문에 우리는 CSS 를 이용해서 스타일을 적용할 수 있습니다. 따라서 웹 폰트를 이용해서 할 수 있는 모든 멋진 일들을 SVG 아이콘으로도 할 수 있습니다!


    1
    2
    3
    4
    5
    6
    7
    8
    .social-icon {
        fill: #000;
        transition: all 0.2s;
    }
    .social-icon:hover {
        fill: #00f;
    }
    cs


    하지만 CSS 적용에 있어 약간의 제약이 있습니다. SVG 를 이런 용도를 쓸 때, <use>코드는 <symbol> 태그를 참조합니다. 그러면 이미지는 Shadow DOM 으로 투입되고 우리는 약간의 CSS 기능을 쓸 수 없게 됩니다. 이런 경우, 우리는 SVG 의 특정 엘리먼트를 선택해서 스타일을 적용할 수 없습니다. 또 어떤 속성들 (예를 들어 fill 속성)은 해당 속성이 정의되지 않은 엘리먼트에만 적용 가능합니다. 하지만 보세요. 이런 일은 웹 폰트로도 할 수 없습니다!


    반응형

    댓글

Designed by Tistory.