본문 바로가기
제가 쓴 책/HTML5, CSS3 and JavaScript

1.5.2 target pseudo-class

by edupicker(체르니) 2013. 7. 31.

1.5.2 target pseudo-class


target 의사 클래스(pseudo-class)는 참조되는 URI의 대상(target) 요소(Element)를 나타내는데 사용됩니다. 그래서 HTML 문서 내의 특정 위치를 가리킬 수 있도록 할 수 있는데 URL을 이용할 경우 번호 기호를 나타내는 #fragement identifier(혹은 anchor identifier)을 함께 사용하여 나타낼 수 있습니다.


"http://example.com/prog.html#section_2"


위에서 prog.html 문서 안의 fragement identifier“section_2”을 가리킵니다.
이러한 fragement identifier HTML5의 특정 요소(Element) id 속성값이 될 수도 있습니다.
예를 들어 위의 fragement identifier“section_2”인데 이를 HTML5 p 요소에 id 속성을 적용하여 나타낼 경우 <p id=”section_2”>와 같이 나타낼 수 있습니다.
그래서 target 의사 클래스(pseudo-class)에 대상(target) 요소에 대한 스타일은 다음과 같은 형식을 사용할 수 있습니다.


:target { property:value; property:value; …}
selector:target { property:value; property:value; …}


참고로 URI에 대해서 간략히 소개하면 URI(Uniform Resource Identifie)는 자원(resource)나 이름을 구별하기 위해서 사용되는 문자열로 URI는 여러분들에게 친숙한 “http://www.daum.net”, “http://www.naver.com”과 같이 인터넷 자원을 나타내는 URL(Uniform Resource Locator)와 위치에 독립적인 이름을 제공하는데 사용되는 URN(Uniform Resource Name)을 포함하는 개념으로 일반적으로 URI하면 URL로 이해를 하면 큰 무리가 없을 것입니다.
이제 p 요소가 대상(target)이 되는 예제를 하나 해볼까요? 메모장을 열어서 다음과 같이 코드를 작성합니다.


<!DOCTYPE HTML>

<html>

<head>

  <title>target pseudo-class를 간단한 예제</title>

  <style>

    p { font-size:10px; }

 

    p:target {

      font-size: 20px;

      color:red;
  text-decoration: underline;

text-align:center;

    }   

  </style>

</head>

<body>

  <a href="#target1">클릭하세요.</a>

  <p id="target1">CSS3</p>

</body>

</html>


먼저 <body> … </body>블록 부분을 보면 a 요소의 href 속성을 이용하여 URI 대상(target)이 되는 p 요소의 id 속성값으로 fragement identifier“target1”을 설정합니다.
이제 <style> … </style> 블록 부분을 보면 a 요소를 클릭하는 동작을 하지 않은 상태에서 p 요소는 폰트 크기가 10px로 설정합니다.
그리고 a 요소를 클릭하면 target 의사 클래스(pseudo-class)에 의해 p 요소에 대해서 폰트 크기가 20px, 글꼴 색상은 빨강색, p 요소의 내용(content)에 밑줄을 긋고 마지막으로 내용을 가운데 정렬하도록 합니다. “target_pseudo-classEx.html”로 저장하고 Firefox를 통해 보면 다음과 같이 나타납니다.



이제 위에서 클릭하세요.” 부분을 클릭합니다. 그러면 다음과 같이 <style> … </style> 블록에 설정한  스타일이 p 요소에 적용됩니다.



“target_pseudo-classEx.html”에서 <body> … </body> 블록 안의 a 요소 시작 태그 부분을 fragement identifier“target1”을 포함하는 URL 형태로 다음과 같이 설정해도 됩니다.


<a href="http://localhost/target_pseudo-classEx.html#target1">클릭하세요.</a>

다음으로 블로그에 댓글 달기 기능 유사한 것을 하나 만들어볼까요? 메모장을 열어서 다음과 같이 코드를 작성합니다.


<!DOCTYPE HTML>

<html>

<head>

  <title>target pseudo-element를 이용 예제</title>

  <style type="text/css">   

    div{ display: none;  }   

    :target { display: block;  } 

  </style>

</head>

<body>

  <a href="http://localhost/target_pseudo_class_comment.html#newcomment">
댓글 달기</a>

  <div id="newcomment" style="background-color:orange;"><br /> 

    <form name="commentForm"> 

      이름<input type="text" name="userName"/><br />

      비밀번호<input type="password" name="userPasswd" /><br />

      홈페이지<input type="text" name="userHomepage" size="50" /><br />

      내용<br />

      <textarea name="commentTextarea"></textarea><br />

      <button type="submit">댓글 저장</button>

    </form> 

 </div> 

</body>

</html>

<body> … </body> 블록 부분을 먼저 설명하면 div 요소 안에 form 요소와 input, textarea, button 요소 등을 이용하여 사용자가 웹 브라우저를 통해 댓글을 입력하고 웹 서버로 전송할 수 있도록 하는 구조를 만들었습니다.
유심히 볼 부분은 역시 a 요소의 시작 태그 부분과 div 요소의 시작 태그 부분입니다.
<style> … </style>
부분을 보면 처음 웹 페이지가 로드될 때 div 요소 부분이 나타나지 않도록 display 속성을 none으로 설정하였고 a 요소를 클릭하면 target 의사 클래스(pseudo-class)에 의해
id
속성값이 “newcomment” display 속성값을 줄바꿈이 가능한 block으로 설정하여 브라우저에 나타내도록 처리합니다.

위 코드를 “target_pseudo_class_comment.html”로 저장하고 Firefox를 실행하여 다음과 같이 URL 입력창에 “http://localhost/target_pseudo_class_comment.html”로 입력합니다.



이제 위에서 댓글 달기부분을 클릭합니다. 그러면 다음과 같이 <style> … </style> 블록에 설정한 스타일이 div 요소에 적용되어 다음과 같이 나타납니다.



나타난 form 양식에 이름, 비밀번호 등을 입력한 후 맨 하단의 댓글 저장 버튼을 클릭하여 웹 서버로 데이터를 전송할 수 있습니다
이상으로 target 의사 클래스(pseudo-class) 선택자에 대해서 알아보았습니다.



- 본 저작물은 본인이 2011년 상반기부터 2012년 여름 즈음까지 도서 출판을 목적으로 약 470 페이지(A4, 폰트 10)으로 작성한 원본 중 CSS3에 대한 부분을 그대로를 공개하는 것으로 본 저작물에 대한 모든 권리는 본인(원철연)에서 있음을 알립니다.
개인적인 학습 목적으로 사용을 허용하며 온오프라인의 베포나 펌상업적인 용도의 사용은 삼가해주시기 바랍니다. 끝으로 학교나 비영리 단체에서의 경우 본 저작물을 비상업적인 용도로 활용하고자 할 경우 연락처를 비밀댓글로 남겨주시면 연락드리겠습니다.