가상클래스 선택자(pseudo-Classes Selectors)

  말 그대로 가짜, 가상의 클래스 선택자를 의미한다.

  가상 클래스 선택자는 앞에 콜론( : )이 붙는다. 콜론이 붙는다고 해서 모두 가상 클래스 선택자라고 볼수는 없지만

  대체로 그렇다고 볼 수 있다.

  콜론이 두개가 붙는 경우( :: )도 있는데 이 경우 가상요소 선택자라고 부른다.

 

HOVER

  hover는 E에 마우스(포인터)가 올라가있는 동안에만 E를 선택한다. 흔히 마우스오버라고 부르는 것과 같다.

  사용은 e:hover { } 형태로 사용한다.

 

<div class="box">

</div>



<!-- CSS -->
.box{
  width: 100px;
  height: 100px;
  background-color: red;
  transition: 0.4s;
}

.box:hover{
  width: 200px;
  background-color: yellowgreen;
}

 이렇게 작성하고 생성된 네모난 박스 모양 위에 마우스 포인터를 올리면 박스가 가로로 늘어나며 색이 변하는것을

  확인할 수 있다.

  transition 속성을 사용하는 경우도 있는데 transition: 0.4s  이런 형태로 사용하면 좀 더 부드럽게 변하는것을 

  확인할 수 있다. 시간을 의미하며 변하는 시간을 0.4초로 설정하는 것이다.

  transition을 지우고 확인해보면 그냥 바로 바뀌는 것을 확인할 수 있다.

 

ACTIVE

  active는 E를 마우스로 클릭하는 동안에만 E를 선택한다.

  e:active { } 형태로 사용한다.

  active의 경우도 transition을 사용해 좀 더 움직임을 줄 수 있으며 클릭한 상태에서만 변화가 생긴다.

  마우스 버튼을 누르고 있을때만 변화가 생기고 손을 떼면 다시 돌아온다.

<div class="box">

</div>


<!-- CSS -->
.box {
  width: 100px;
  height: 100px;
  background-color: red;
  transition: 0.4s;
}

.box:active {
  width: 200px;
  background-color: yellowgreen;
}

  생성된 박스를 클릭하면 박스가 늘어나며 색이 변하는것을 확인할 수 있고 마우스 버튼에서 손을 떼면 다시

  돌아오는것을 확인할 수 있다.

 

FOCUS

  focus는 e가 포커스 된 동안에만 e를 선택한다.

  포커스는 아무데나 사용가능한것이 아닌 대화형 콘텐츠에서 사용이 가능하다.

  로그인이나 회원가입시에 입력하는 창을 클릭하여 커서를 이동시켜준 상태가 포커스 된 상태라고 볼 수 있다.

  input, img, tabindex에서 사용이 가능하다.

  input 태그를 만들어주고 focus로 설정을 잡아준다면 input에 포커스가 잡힐때마다 변경된다.

 

<input type="text">



<!-- CSS -->
input {
  width: 100px;
  outline: none;
  border: 1px solid;
  padding: 5px 10px;
  transition: 0.4s;
}

.input:focus{
  width:200px;
  border-color: red;
}

  마우스로 input위치에 포커스를 잡게 되면 사이즈가 늘어나면서 테두리 색이 빨간색으로 변하는 것을 확인할수 있다.

 

  hover, active, focus 처럼 사용자가 동작을 했을 때 변화되는 가상 클래스는 이 세가지가 전부라고 볼 수 있다.

  이러한 이벤트 기능은 JavaScript가 더 효과적으로 사용할 수 있다.

 

  선택자는 기본적으로 이벤트라는 개념과는 차이가 있는데 hover, active, focus는 그 중에서 이벤트와 비슷하다고

  볼 수 있는 선택자들이다.

 

FIRST CHILD

  first-child는 e가 형제 요소 중 첫번재 요소라면 선택한다.

  E:first-child { } 형태로 사용한다.

<ul class="ul1">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
</ul>

<ul class="ul2">
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
</ul>


<!-- CSS -->
.ul1 li:first-child {
  color: red;
}

  이렇게 작성하게 되면 제일 위에 있는 li태그인 1의 색이 빨갛게 변한다.

  .ul1 li:first-child로 작성했기 때문에 클래스명이 ul1인 태그내에 있는 li태그에만 적용이 된다.

 

LAST CHILD

  last-child는 first-child와 반대로 마지막 요소를 찾는다.

<ul class="ul1">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
</ul>

<ul class="ul2">
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
</ul>


<!-- CSS -->
.ul1 li:last-child {
  color: red;
}

  이렇게 작성하게 되면 ul1 클래스인 ul태그 안에 있는 li태그들 중 가장 마지막에 있는 4만 빨갛게 변한다.

 

NTH CHILD

  nth-child는 e가 형제요소중 n번째 요소라면 선택한다. n키워드를 사용하게 되면 시작은 0부터 해석한다.

  e:nth-child(n) { } 형태로 사용된다.

 

<ul class="number">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
</ul>


<!-- CSS -->
.number li:nth-child(2) {
  color: red;
}

  이렇게 작성하게 되면 2번째 li태그인 2가 빨갛게 변한다.

  

  n이 0부터 시작하는 것이라고 했는데 배열처럼 첫번째 li가 0, 두번째 li가 1 이런 형태가 아니고

  n이라는 키워드 자체가 0부터 시작이다.

 

<ul class="number">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
</ul>


<!-- CSS -->
.number li:nth-child(2n) {
  color: red;
}

  이렇게 작성하게 되면 

  이러한 결과를 볼 수 있다.

  제일 먼저 2 * 0 = 0 이므로 0에 해당하는것이 없이 아무 요소에도 적용되지 않는다.

  그리고 2 * 1 = 2 니까 두번째 li태그인 2에 적용이 되고 그 뒤로 쭉쭉 n이 증가해 4, 6, 8에 적용이 된다.

  n을 사용하면 0부터 시작해서 계속 하나씩 증가해 나간다고 생각하면 될듯 하다.

<ul class="number">
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
  <li>9</li>
</ul>


<!-- CSS -->
.number li:nth-child(n + 3) {
  color: red;
}

  하나 더 보자면 n + 3은 0 + 3이 시작이므로 3번째 li부터 적용되기 시작해 n이 1씩 증가하면서 

  4, 5, 6, 7, 8, 9까지 모두 적용되게 되므로 다음과 같은 결과가 나온다.

  데이터를 쭉 불러오는데 특정 번호 아래로 적용하고 싶으나 총 몇개가 될지 모른다는 가정하에 사용하기 좋을 것 같다.

 

  nth-child에서의 유의사항은 요소가 일치해야 적용이 된다는 점이다.

<div class="number">
  <div>1</div>
  <p>2</p>
  <p>3</p>
  <span>4</span>
</div>


<!-- CSS -->
.number p:nth-child(1) {
  color: red;
}

  이렇게 작성하게 되면 p태그중 첫번째인 2에 적용이 되지 않는다.

  제일 첫 요소에 적용되는 것이기 때문에 div요소를 찾아가게되는데 p가 아닌 div이므로 적용이 되지 않게 된다.

 

  만약 여러 태그가 섞여있는데 그 중에서 p태그에만 적용을 하고 싶다면

<div class="number">
  <div>1</div>
  <p>2</p>
  <p>3</p>
  <span>4</span>
  <p>5</p>
  <p>6</p>
</div>


<!-- CSS -->
.number p:nth-child(n + 1) {
  color: red;
}

  이렇게 작성해주면 p태그에만 적용이 된다.

 

  다른 주의사항으로는 first-child에도 같이 주의해야 하는 사항인데

<div class="number">
  <div>1</div>
  <div>2</div>
  <div>3
    <div>3-1</div>
    <div>3-2</div>
    <div>3-3</div>
  </div>
</div>


<!-- CSS -->
.number div:nth-child(1){
  color: red;
}

  이렇게 작성하면 1에만 적용이 될것 같지만 3-1에도 적용이 된다.

  nth-child(1) 이나 first-child나 첫번째 자식요소만을 선택하는 것이 아닌 같은 라인의 하위 요소 중 첫번째 요소 역시

  선택하기 때문이다.

  즉, number라는 클래스를 갖고있는 요소의 하위 요소인 1, 2, 3중에서 첫번째 요소인 1을 선택했는데

  3이 하위요소들을 또 갖고 있는것을 확인하고 3-1, 3-2, 3-3 중에서 첫번째 요소를 또 선택한다는 것이다.

  

  그래서 이러한 경우를 방지하기 위해 자식선택자인 >를 사용해야 한다.

  자식선택자가 없는 경우는 계속 내려가며 체크하겠다는 의미이다.

<div class="number">
  <div>1</div>
  <div>2</div>
  <div>3
    <div>3-1</div>
    <div>3-2</div>
    <div>3-3</div>
  </div>
</div>


<!-- CSS -->
.number > div:nth-child(1){
  color: red;
}


.number > div:first-child(1){
  color: red;
}

  이렇게 변경해주게 되면 number의 바로 아래 하위요소중 첫번째인 1에만 적용이 된다.

 

  만약 하위 요소들 중 단계와 상관없이 선택을 해야 하는 상황인데 태그가 다른 상황이라면 선택자를 없애야 한다.

<div class="number">
  <div>1</div>
  <div>2</div>
  <div>3
    <p>3-1</p>
    <p>3-2</p>
    <p>3-3</p>
  </div>
</div>


<!-- CSS -->
.number div:nth-child(1){
  color: red;
}

  이렇게 작성하게 되면 div태그인 1에만 적용이 되지만 3-1에도 적용이 되게 해야 한다면

<div class="number">
  <div>1</div>
  <div>2</div>
  <div>3
    <p>3-1</p>
    <p>3-2</p>
    <p>3-3</p>
  </div>
</div>


<!-- CSS -->
.number :nth-child(1){
  color: red;
}

  이렇게 작성해주면 된다.

  그럼 태그가 다른 3의 하위요소인 p에도 적용이 된다.

 

NTH OF TYPE

  nth-of-type은 e의 타입(태그이름)과 동일한 타입인 형제요소 중 e가 n번째 요소라면 선택한다.

  이것 역시 n의 경우는 0부터 시작한다.

  e:nth-of-type(n) { } 형태로 사용한다.

<div class="number">
  <div>1</div>
  <div>2</div>
  <div>3</div>
  <p>3-1</p>
  <p>3-2</p>
  <p>3-3</p>
</div>


<!-- CSS -->
.number p:nth-of-type(1){
  color: red;
}

  이렇게 작성하게 되면 p가 number의 첫번째 하위요소가 아니더라도 p태그들중 첫번째 요소인 3-1을 찾아

  적용하게 된다.

  태그를 찾는 용도로만 사용되고 클래스로 찾는것은 불가능하다.

 

부정선택자(Negation selector)

  부정선택자는 S가 아닌 E를 선택한다.

  e:not(s) { } 이런 형태로 사용한다.

<div class="number">
  <div class="a">1</div>
  <li class="b">2</li>
  <li class="c">3</li>
  <li class="d">4</li>
  <div class="e">5</div>
</div>


<!-- CSS -->
.number li:not(.b){
  color: red;
}

  이렇게 작성하면 b라는 class를 갖고 있는 2를 제외한 나머지 li태그에 적용된다.

  여기서도 역시 선택자를 제거하면 태그에 상관없이 전체 적용이 된다.

 

 

 

레퍼런스

패스트캠퍼스 올인원패키지 - CSS

'HTML&CSS' 카테고리의 다른 글

CSS 선택자(Selector)  (0) 2021.04.08
CSS란?  (0) 2021.04.07
HTML(Hyper Text Markup Language)  (0) 2021.04.06

기본선택자(Basic Selector)

  전체 선택자, 태그 선택자, 클래스 선택자, 아이디 선택자 이렇게 나눌 수 있다.

  전체선택자(Universal Selector)는 요소 내부의 모든 요소를 선택한다.

  사용은 * { } 이러한 형태로 사용한다.

  전체선택자의 경우는 태그 종류와 상관없이 모든 태그에 적용된다.

 

  태그선택자(Type Selector)는 태그 이름이 E인 요소를 선택한다.

  예를들어 div태그에 적용하겠다고 하면 div { } 형태로 사용한다.

  html 내의 모든 div태그에 적용된다.

 

  클래스 선택자(Class Selector)는 태그의 class속성값이 E인 요소를 선택한다.

  <div class="name"> </div>

  이렇게 적혀있다고 할 때 .name { } 형태로 사용한다. 그럼 모든 div에 적용되는것이 아닌

  클래스가 name인 것에만 적용이 된다.

 

  아이디 선택자(Id Selector)는 태그의 id 속성값이 E인 요소를 선택한다.

  <input type="text" id="name"> 이렇게 있다고 했을 때 적용하기 위해서는 #name { } 이렇게 사용한다.

 

 

복합선택자(combinators)

  일치선택자(Basic Combinator)는 E와 F를 동시에 만족하는 요소를 선택한다.

  span.orange { } 형태로 사용하는데 그럼 html안에 있는 span태그에 orange라는 class속성을 갖고 있는 태그만 찾아서

  적용하는 것이다.

  <span class="orange"></span> 이러한 형태의 태그만 찾아서 적용하는 것이다.

 

  자식선택자(Child Selector)는 E의 자식요소 F를 선택한다.

  자식요소를 의미하는 >를 사용해 표현한다.

  ul > .orange { } 형태로 사용하는데 그럼 ul태그 안에 있는 요소들 중 orange라는 class의 값을 갖고 있는 요소들만

  적용하는 것이다.

<ul>
  <li class="apple"></li>
  <li class="orange"></li>
</ul>

  이렇게 있다고 할 때 ul태그 안에 있는 li태그중 apple은 제외하고 orange에만 적용하게 된다.

 

  하위선택자(Descendant Combinator)는 E의 하위요소 F를 선택한다.

  띄어쓰기가 선택자의 기호로 사용된다.

  div .orange { } 형태로 사용된다.

<div>
  <ul>
    <li class="apple"></li>
    <li class="orange"></li>
    <span class="orange"></span>
  </ul>
</div>

  위와 같은 코드에서는 두번째 li태그와 span태그에만 적용이 된다.

 

  이때 같은 위치에 있는 요소는 형제요소라고 부르고 아래로는 하위요소 위로는 상위요소라고 부른다.

<div>
  <ul>
    <li></li>
  </ul>
  <p></p>
  <span></span>
</div>

  이러한 코드의 형태에서 보자면 ul태그와 p, span태그는 형제요소다. ul은 li의 상위요소이며 li는 ul의 하위요소가 된다.

  li에게 ul은 부모요소라고도 표현을 하지만 li에게 div는 상위요소 혹은 조상요소라고 한다.

 

  인접형제선택자(Adjacent sibling Combinator)는 E의 다음 형제요소 F하나만 선택한다.

  .orange + li { } 형태로 사용하는데 +의 경우는 다음에 인접해 있는 형제 요소를 찾는다.

  orange라는 클래스를 갖고 있는 다음 형제요소가 적용된다.

 

<ul>
  <li>1</li>
  <li class="orange">2</li>
  <li>3</li>
  <li>4</li>
</ul>
.orange + li {
  color: red;
}

  이렇게 작성하게되면

 

  이러한 결과를 볼 수 있다. orange라는 class를 갖고 있는 요소의 다음 형제요소인 3에 적용이 되는것이다.

 

<ul>
  <li>1</li>
  <li class="orange">2</li>
  <p>hi</p>
  <li>3</li>
  <li>4</li>
</ul>

  HTML을 이렇게 변경해준다면 p를 넘어가고 다음 li태그인 3에 적용될 것 같았지만 적용되지 않는다.

  li에 해당 하는 바로 다음태그에 적용하는 것이 아닌 바로 다음 태그에 대한 적용을 하는 방법이기 때문에 안된다.

  만약 이러한 방법으로 여기서 hi의 컬러를 바꿔주고 싶다면

.orange + p{
  color: red;
}

  이렇게 작성해주면 가능하다.

 

  일반 형제 선택자(General sibling Combinator)는 E의 다음 형제요소 F를 모두 선택한다.

  기호는 ~를 사용하며 .orange ~ li { } 형태로 사용한다. 그럼 orange라는 class값을 갖고 있는 태그 밑으로 작성되어

  있는 모든 태그들에 적용된다.

<ul>
  <li>1</li>
  <li class="orange">2</li>
  <p>hi</p>
  <li>3</li>
  <li>4</li>
</ul>
.orange ~ li {
  color: red;
}

  이렇게 작성하면 orange밑에 있는 hi, 3, 4 중에서 hi를 제외한 3, 4만 글자색이 변경된다.

 

 

레퍼런스

패스트캠퍼스 올인원패키지 - CSS

 

'HTML&CSS' 카테고리의 다른 글

CSS선택자(가상클래스 선택자)  (0) 2021.04.10
CSS란?  (0) 2021.04.07
HTML(Hyper Text Markup Language)  (0) 2021.04.06

CSS란?

  CSS는 Cascading Style Sheets의 약자로 HTML, XHTML 같은 문서의 스타일을 꾸밀 때 사용하는 스타일 시트

  언어이다.

  HTML문서로 뼈대를 만들어두면 CSS로 디자인을 하는 셈이다.

  글꼴이나 배경색, 너비와 높이, 위치등을 지정하거나 웹 브라우저, 스크린 크기, 장체에 따라 화면을 다르게

  표시할 수 있도록 지정할수도 있다.

 

  CSS는 문서의 내용(content)과 표현(presentation)을 분리하여 CSS파일 하나만 수정하면 스타일에 해당하는

  HTML문서가 한번에 수정되는 장점이 있다.

  

CSS적용 방법

  CSS를 적용하는 방법에는 세가지가 있다.

  첫번째로는 HTML문서안에서 요소에 style속성을 사용하는 것이다.

<body>
  <h1 style="color: red; text-align:center;"> CSS </h1>
</body>

  이러한 형태로 요소에 style속성을 직접 작성해주게 되면 해당 요소에만 스타일이 적용된다.

 

  두번째로는 HTML에서 style태그를 사용하는 방법이 있다.

<html>
<head>
  <title>CSS 예제</title>
  <style>
    h1 {
      color: red;
      text-align: center;
    }
  </style>
</head>
<body>
  <h1> CSS </h1>
  <h2> CSS Exam </h2>
</body>
</html>

  이렇게 head태그 안에 style태그로 작성해준다. 그럼 h1에 해당하는 요소에만 적용이 되고 h2에는 적용이 되지 않는다.

 

  마지막으로는 CSS파일을 별도로 만들어 HTML문서에서 링크로 연결해주는 것이다.

<!-- main.css -->
h1 {
  color: red;
  text-align: center;
}


<!-- HTML파일 -->
<html>
<head>
  <title> CSS 예제 </title>
  <link rel="stylesheet" type="text/css" href="./main.css"/>
</head>
<body>
  <h1> CSS </h1>
  <h2> CSS Exam </h2>
</body>
</html>

  이렇게 main.css처럼 별도의 css파일에 작성해주고 HTML파일에서는 link태그를 이용해 적용해준다.

  그럼 CSS파일의 내용에 따라 h1에만 스타일이 적용되고 h2는 작성된 CSS 코드가 없으므로 적용되지 않는것을

  확인할 수 있다.

 

CSS 구성형태

  CSS는 

  선택자 {

    속성: 속성값;

    속성: 속성값;

  }

  이런 형태이다.

  옆으로 작성하는 형태는 가독성이 떨어지니 아래로 작성하는 형태로 작성하는 것이 좋다.

  선택자는 selector라고 칭한다. 앞에 .이 없다면 태그 자체를 의미하며 .은 클래스를 #은 id를 의미한다.

<body>
  <h1> CSS Exam </h1>
  <div class="first">
    <p>first div</p>
  </div>
  <div id="second">
    <p>second div</p>
  </div>
</body>



<!-- main.css -->

h1 {
  color: red;
}

.first {
  color: blue;
}

#second{
  color: yellowgreen;
}

  이렇게 작성한 코드를 실행시켜보면

  이렇게 적용되는 것을 확인할 수 있다.

  위에서 CSS를 적용하는 방식중에 요소에 style을 직접 입력하는 것은 인라인 방식이며 선택자가 필요없다.

  사용빈도를 떠나서 직접 작성하는것은 피하는것이 좋다고 한다.

 

  내장(embedded)방식은 head태그안에 style태그로 작성하는 방식이고 link방식이 위 예제와 같은 CSS파일을

  가져와 적용하는 방식이다.

  @import 방식도 있는데 link처럼 외부에서 CSS파일을 가져오는 것이다.

  link방식과 @import방식의 차이점을 보자면 link방식은 html에서 CSS파일을 가져오는 방식이고

  @import방식은 css파일내에서 css파일을 가져오는 방식이다.

  예를들어

/* css1.css */
h1 {
  color: red;
}


/* css2.css */
h2 {
  color: blue;
}

  이렇게 두개의 css파일이 존재한다고 했을 때 index.html에 css1.css파일을 적용한 상태지만 css2.css에 있는 코드도

  필요한 상황이라고 하면 css1.css에 모두 작성해주는것보다는 css2.css파일을 css1.css에서 불러와 사용하는것이

  좀 더 효율적이라고 볼 수 있다.

  예제로 본다면 적은 코드량이기 때문에 새로 작성하는것이 낫겠지만 만약 수백줄의 코드를 모두 사용해야 하는

  상황이라면 굳이 css1.css의 양을 늘리기보다는 css2.css를 가져오는것이 더 편하기 때문이다.

  가져올때는

/* css1.css */

@import url("./css2.css");

h1 {
  color: red;
}

  이렇게 작성해준다. 그럼 css2.css파일을 불러와서 사용할 수 있게 된다.

  하지만 import방식은 직렬방식인데 직렬방식은 1번을 부르고 다 부른 뒤에 2번을 부르고, 다 부른 뒤에 3번을 부르는

  형태이기 때문에 아무래도 호출시간이 좀 더 걸릴 수 밖에 없다.

  그래서 왠만하면 link를 사용하고 특수한 경우에만 @import를 사용하는 것이 좋다고 한다.

 

 

 

레퍼런스

● 패스트캠퍼스 올인원패키지 - CSS

aboooks.tistory.com/49

'HTML&CSS' 카테고리의 다른 글

CSS선택자(가상클래스 선택자)  (0) 2021.04.10
CSS 선택자(Selector)  (0) 2021.04.08
HTML(Hyper Text Markup Language)  (0) 2021.04.06

HTML이란?

  HTML(Hyper Text Markup Language)은 페이지에 제목, 문단, 표, 이미지, 동영상 등을 정의하고 그 구조와 의미를

  부여하는 정적언어로 웹의 구조를 담당한다.

 

HTML문법

  HTML의 문법의 기본형태로는 태그를 사용한다.

  <tag></tag>형태로 열리고 닫히는 구조를 갖고 있으며 한쌍으로 태그의 범위를 만들어 준다.

 

  태그의 기능을 확장하기위해 '속성'을 사용할 수 있다.

  <img />는 이미지를 삽입하기 위해 사용하는 태그지만 태그만 사용하게 되면 어떤 이미지를 삽입하려는지 알 수 없다.

  그래서 src(source)라는 속성을 사용해서 삽입할 이미지의 경로를 지정하고 alt(alternative)라는 속성으로 이미지를

  출력하지 못하는 경우에는 이미지대신 보여질 텍스트를 지정해준다.

 

  태그에는 부모와 자식 요소가 존재한다.

<parent>
  <child> </child>
</parent>

  이러한 형태처럼 child태그가 parent태그의 컨텐츠로 사용이 된다면 child태그는 parent태그의 자식요소가 된다.

 

<section>
  <h1></h1>
  <ul>
    <li></li>
    <li></li>
  </ul>
</section>

  HTML태그들을 보면 이러한 형태들을 많이 볼 수 있는데 h1태그와 ul태그는 section태그의 자식요소가 되는것이고

  li태그는 ul태그의 자식요소가 된다. 이처럼 부모와 자식 요소는 상대적인 개념이다.

  이러한 부모와 자식요소로 작성하는것은 선택자를 통해 CSS와 JS로 HTML을 다룰 때 중요하게 사용된다.

 

  태그에는 '빈태그'라고 해서 닫히는 태그가 없는 태그들이 있는데 다음과 같은 형태를 갖는다.

<!-- /가 없는 빈태그 -->

<tag>

<!-- /가 있는 빈태그 -->

</tag>

  이렇게 두가지 형태의 빈 태그가 있고 둘다 사용할 수 있지만 XHTML버전이나 린트(Lint)환경 혹은 프레임워크

  셋팅에 따라 /를 사용하는것이 필수가 될 수 있다.

 

HTML문서의 범위

  웹 개발을 하며 볼 수 있는 index.html 같은 HTML파일을 HTML문서라고 표현할 수 있다.

 

<!DOCTYPE>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="aurthot" content="홍길동">
  <meta name="description" content="샘플 사이트">
  <title>내 사이트</title>
  <link rel="stylesheet" href="./css/main.css">
  <script src="./js/main.js"></script>
</head>
<body>
  <section>
    <h1></h1>
    <div>
      <ul>
        <li></li>
        <li></li>
      </ul>
    </div>
  </section>
</body>
</html>

  <html>태그는 HTML문서의 전체 범위를 지정한다. 웹 브라우저가 해석해야 할 HTML문서가 어디에서 시작하며,

  어디에서 끝나는지 알려주는 역할을 한다.

  <head>태그는 웹 브라우저가 해석해야 할 HTML문서의 정보 범위를 지정한다.

  정보에는 웹 페이지의 제목, 웹 페이지의 문자 인코딩 방식, 연결할 외부 파일의 위치, 구조화 하기 위한 기본셋팅 값

  등을 말한다.

  다르게는 화면을 구성하기 위한 기본 설정이라고 표현할 수 있다.

  <body>태그는 웹 브라우저가 해석해야 할 HTML문서의 구조 범위를 지정한다.

  구조는 사용자가 화면을 통해서 볼 수 있는 내용(컨텐츠)의 형태나 레이아웃등을 의미하며 로고, 헤더, 푸터, 

  네비게이션, 메뉴, 버튼, 입력창, 팝업, 광고 등 보이는 모든 것들이 구조에 해당한다.

  구조는 body 범위 안에서만 생성한다.

  DOCTYPE(DTD, DocumentType Definition)은 마크업 언어에서 문서 형식을 정의한다.

  이는 웹 브라우저에 우리가 제공할 HTML문서를 어떤 HTML버전의 해석 방식으로 구조화하면 되는지를 알려준다.

  HTML은 크게 1, 2, 3, 4, X-, 5 버전이 있고 현재의 표준 모드는 HTML5다.

<!-- HTML5 -->
<!DOCTYPE html>

<!-- XHTML 1.0 Transitional-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml/DTD/xhtml-transitanl.dtd">

 

HTML 문서의 정보

  <head>태그 안에서 사용하는 태그들은 HTML 문서의 정보를 갖고 있다.

  title태그

    <title>은 HTML문서의 제목을 정의한다. 웹 브라우저의 각 사이트 탭에서 이름으로 표시된다.

<head>
  <title>글쓰기</title>
</head>

    우리가 보통 웹페이지에 들어가면 볼 수 있는 탭에 이렇게 표시된다.

  

  meta태그

    <mata>는 HTML문서(웹페이지)에 관한 정보(표시방식, 제작자(소유자), 내용, 키워드 등)를 검색엔진이나

    브라우저에 제공한다. meta태그는 빈태그이다.

    아래코드로 좀 더 편하게 이해할 수 있다.

<head>
  <meta charset="UTF-8">
  <meta name="author" content="홍길동">
  <meta name="description" content="샘플 사이트">
</head>


<문서의 정보범위>
  <정보 문자 인코딩방식="UTF-8">
  <정보 정보종류="사이트제작자" 정보값="홍길동">
  <정보 정보종류="사이트설명" 정보값="샘플 사이트">
</문서의 정보범위>

 

  meta태그에서 사용할 수 있는 속성은 다음과 같다.

속성

의미

charset

문자 인코딩 방식

UTF-8, EUC-KR

name

검색엔진 등에 제공하기 위한 정보의 종류(메타데이터)

author, description, keywords, viewport

content

name이나 http-equiv 속성의 값을 제공

 

   

  link태그

    link태그는 외부 문서를 연결할 때 사용한다.

    특히 HTML 외붕에서 작성된 CSS파일을 불러와 연결할 때 사용하며 link태그도 빈태그이다.

<head>
  <link rel="stylesheet" href="./css/main.css">
  <link rel="icon" href="./favicon.png">
</head>


<문서의 정보범위>
  <외부문서연결 관계="css" 문서경로="./css/main.css">
  <외부문서연결 관계="사이트대표아이콘" 문서경로="./favicon.png">
</문서의 정보범위>

속성

의미

rel

(필수) 현재 문서와 외부 문서와의 관계를 지정

stylesheet, icon

href

외부 문서의 위치를 지정

경로

 

  style태그

    CSS를 외부문서에 작성하여 연결하는 방식이 아닌 HTML내부에 작성할 때 사용한다.

<style>
  img{
    width: 100px;
    height: 200px;
  }
  
  p{
    font-size: 20px;
    font-weight: bold;
  }
</style>



<스타일정의>
  <!-- CSS 코드 -->
</스타일정의>

 

  script태그

    HTML문서에서 CSS는 link로 불러오거나 style태그 안에 작성할 수 있지만 JS는 script태그로 가져오거나

    작성할 수 있다

<!-- 불러오기 -->
<script src="./js/main.js"></script>

<!-- 작성하기 -->
<script>
  function windowOnClickHandler(event) {
    console.log(event);
  }
  
  windos.addEventListner('click', windowOnClickHandler);
</script>



<!--불러오기-->
<자바스크립트 문서경로="./js/main.js"></자바스크립트>

<!-- 작성하기-->
<자바스크립트>
  <!-- JS 코드 -->
</자바스크립트>

 

HTML 문서의 구조

  DIV태그

    <div></div>의 div는 division의 약자로 분할을 뜻하고 문서의 부분이나 섹션을 정의한다.

    명확한 의미를 갖지 않기 때문에 정말 많은 경우 단순히 특정 범위를 묶는(wrap) 용도로 사용한다.

    보통 이렇게 묶인 부분들에 CSS나 JS를 적용하게 된다.

<body>
  <div>
    <p></p>
  </div>
  <div>
    <div>
      <h1></h1>
      <p></p>
    </div>
  </div>
</body>



<body>
  <묶음1>
    <p></p>
  </묶음1>
  <묶음2>
    <묶음2-1>
      <h1></h1>
      <p></p>
    </묶음2-1>
  </묶음2>
</body>

    이런 형태로 볼 수 있다. div태그에는 클래스로 각 div를 구분하도록 할수 있다.

<body>
  <div class="content">
    <p></p>
  </div>
</body>

    이런 형태로 작성하며 class를 이용해 CSS에서 구분할 수 있다.

 

  IMG태그

    <img>는 HTML에 이미지를 삽입할 때 사용한다.

   

<body>
  <img src="./image.png" alt="사진">
</body>



<body>
  <이미지 경로="./image.png" 대체텍스트="사진">
</body>

속성

의미

src

(필수) 이미지의 URL

URL

alt

(필수) 이미지의 대체 텍스트(alternative)를 지정

 

 

 

 

레퍼런스

패스트캠퍼스 올인원패키지 - HTML

'HTML&CSS' 카테고리의 다른 글

CSS선택자(가상클래스 선택자)  (0) 2021.04.10
CSS 선택자(Selector)  (0) 2021.04.08
CSS란?  (0) 2021.04.07

+ Recent posts