퀴즈1~2

1. 12/quiz-1.html에는 이미지가 삽입되어 있습니다. 다음 조건에 맞게 이미지 위로 마우스 포인터를 올려놓았을 때의 스타일을 정의하세요.

조건
1. 웹 문서에는 여러 이미지가 있을 수 있으므로 이미지에 적용된 class 속성 값을 확인하고
그 이름에 맞는 클래스 선택자 스타일을 작성합니다
2. 이미지 위로 마우스 포인터를 올려놓았을 때 검정색 5px짜리 실선이 표시되도록 합니다.
<!DOCTYPE HTML>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <title>CSS 선택자</title>  
</head>
<body>
  <p>이미지 위로 마우스 포인터를 올려보세요</p>
  <img src="images/tangerines.jpg" class="top-img">
</body>
</html>

<!DOCTYPE HTML>
<html lang="ko">
  <style>
    [class="top-img"]:hover {
      border: 5px solid black;
    }
  </style>
<head>
  <meta charset="utf-8">
  <title>CSS 선택자</title> 
</head>
<body>
  <p>이미지 위로 마우스 포인터를 올려보세요</p>
  <img src="images/tangerines.jpg" class="top-img">
</body>
</html>

 

2. 12/quiz-2.html문서에 있는 내비게이션 링크에는 아무 스타일도 적용되어 있지 않기 때문에 파란색 밑줄이 있는 텍스트로 표시됩니다. 가상 클래스 선택자르 ㄹ사용해 다음 조건에 맞게 링크 스타일을 수정하세요

조건
1. 웹 문서에는 내비게이션 링크 외에도 다른 링크가 있을 수 있으므로 내비게이션 요소에 있는 링크에만 적용합니다
(내비게이션의 하위 선택자로 적용해야 합니다.)
2. 링크의 글자 색을 '검정(black)'으로 지정하고 밑줄을 없앱니다.
3. 방문했던 링크의 글자 색을 원래 링크 색상인 '검정(black)'으로 지정합니다.
4. 링크를 클릭하는 순간의 글자 색을 '파랑(blue)'으로 지정합니다.
<!DOCTYPE HTML>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <title>CSS 선택자</title>  
  <style>
    .main-menu {
      margin:50px auto;
      height:60px;
      border:1px solid black;
    }
    .main-menu ul {
      margin:0;
      list-style:none;
    }
    .main-menu ul li{
      display:inline-block;
      padding:10px 30px;      
      line-height:40px;
    }
  </style>
</head>
<body>
  <nav class="main-menu">
    <ul>
      <li><a href="#">메뉴1</a></li>
      <li><a href="#">메뉴2</a></li>
      <li><a href="#">메뉴3</a></li>
    </ul>
   </nav>
</body>
</html>

<!DOCTYPE HTML>
<html lang="ko">
<head>
  <meta charset="utf-8">
  <title>CSS 선택자</title>  
  <style>
    .main-menu {
      margin:50px auto;
      height:60px;
      border:1px solid black;
    }
    .main-menu ul {
      margin:0;
      list-style:none;
    }
    .main-menu ul li{
      display:inline-block;
      padding:10px 30px;      
      line-height:40px;
    }
    .main-menu ul li :link, :visited, :hover {
      color: black;
      text-decoration: none;
    }
    .main-menu ul li :active {
      color: blue;
    }
  </style>
</head>
<body>
  <nav class="main-menu">
    <ul>
      <li><a href="#">메뉴1</a></li>
      <li><a href="#">메뉴2</a></li>
      <li><a href="#">메뉴3</a></li>
    </ul>
   </nav>
</body>
</html>

'HTML > 다재다능한 CSS3 선택자' 카테고리의 다른 글

다재다능한CSS3선택자  (0) 2021.08.15

앞에서 배웠던 주요 선택자(selector) 외에도 CSS3에는 매우 다양한 선택자들이 있습니다.

 

연결 선택자

연결 선택자는 '콤비네이션 선택자', '콤비네이션 실렉터(combination selector)'라고도 합니다.

 

하위 선택자 

지정한 모든 하위 요소에 스타일 적용하기

하위 선택자(descendant selector, 디센던트 셀렉터)는 부모 요소에 포함된 하위 요소 모두에 스타일이 적용되는 것으로 '자손 선택자'라고도 합니다. 

기본형 설명
상위요소 하위요소(section {color:blue;}) 모든 하위요소에 적용

 

자식 선택자

자식 요소에만 스타일 적용하기

하위 요소에 전체 스타일을 적용하는 것이 아니라 자식 요소에만 스타일을 적용할 수도 있습니다. 자식 선택자(child selector)는 자식 요소에 스타일을 적용하는 선택자로 두 요소 사이에 '>(gt)'를 표시해 부모 요소와 자식 요소를 구분합니다. 하위 선택자에서는 자식 요소뿐만 아니라 그 자손까지 적용되는 반면, 자식 선택자에서는 바로 아래 요소, 즉 자식 요소에만 스타일이 적용됩니다.

 

인접 형제 선택자

가장 가까운 형제 요소에 스타일 적용하기

기본형 설명
요소 1 + 요소 2 요소1다음에 오는 요소2에 적용(한번만)

먼저 나오는 '형 요소', 나중에 나오는 요소를 '동생 요소'라고 합니다. 인접 형제 선택자(adjacent selector)는 문서 구조상 같은 부모를 가진 형제 요소 중 첫 번째 동생요소에만 스타일이 적용됩니다.

형제 선택자

형제 요소에 스타일 적용하기

기본형 설명
요소 1 ~ 요소 2 요소 1 다음에 오는 요소2에 적용한다.

인접 형제 선택자와 달리 모든 형제 요소에 적용됩니다. 첫 번째 요소와 두 번째 요소 사이에 '~(틸드)'를 표시합니다.

 

속성 선택자

attribute 태그에 붙어있는 추가적인 값이며 J-querry에서도 사용가능하다. 

태그 안에서  
   

사용하는 속성들의 값에 따라 스타일을 지정한다. 지정한 속성을 가진 요소를 찾아 스타일을 적용합니다.

[속성 = 값] 선택자

특정 값을 갖는 속성에 스타일 적용하기

기본형 설명
[속성 = 값] 속성과 속성 값이 일치하는 요소를 찾아 스타일을 적용한다.

[속성 ~= 값] 선택자

여러 값 중 특정 값이 포함된 속성에 스타일 적용하기

기본형 설명
[속성 ~= 값] 여러 속성 값 중에 해당 값이 포함되어 있는 요소를 선택합니다.

하나의 속성 값이 여러 개일 때 특정 속성 값을 찾는데 편리합니다.

[속성 |= 값]

기본형 설명
[속성 |= 값] 특정 값이 포함된 속성에 스타일을 적용합니다.("값-"으로 시작하면 스타일을 적용)

특정 값이 포함된 속성에 스타일 적용하기

[속성 ^= 값]

특정 값으로 시작하는 속성에 스타일 적용하기

기본형 설명
[속성 ^= 값] 지정한 문자로 시작하는 속성 값에 대해서만 스타일을 적용합니다.

[속성 $= 값]

특정 값으로 끝나는 속성에 스타일 적용하기

기본형 설명
[속성 $= 값] 지정한 값으로 끝나는 요소를 찾아 스타일을 적용합니다.

[속성 *= 값]

값의 일부가 일치하는 속성에 스타일 적용하기

기본형 설명
[속성 *= 값] 값이 포함되어 있으면 스타일을 적용합니다.

속성 정리

기본형 스타일 적용 경우 예시 - 선택자 예시 - 적용되는 요소
[속성] 지정한 '속성'일 때 [href] <a href="#">메뉴 1</a>
[속성 = 값] '값'에 일치할 때 [target="_blank"] <a href="......" target="_blank">HTML</a>
[속성 ~= 값] 여러 값들 중 특정 '값'이 포함 [class~="button"] <a href="#" class="flat button">메뉴 4</a>
[속성 |= 값] '값'이 포함
(하이픈 포함 단어별)
[title="us"] <a href="#" title="us">영어</a>
<a href="#" title="us-english">영어</a>
[속성 ^= 값] '값'으로 시작 [title^="eng"] <a href="#" title="english">영어</a>
[속성 $= 값] '값'으로 끝남 [href $="xls"] <a href="intro.xls">엑셀 파일</a>
[속성 *= 값] '값'이 속성 값의 일부 일 때 [href *= "w3"] <a href="http://www.w3c.org/TR/html">HTML 사이트</a>

 

 

가상 클래스와 가상 요소

클래스 이름 앞에 콜론(;)을 붙여 표시하는 가상 클래스와 클래스 이름 앞에 콜론 두 개(;;)를 붙여 표시하는 가상 요소를 사용합니다.

 

사용자 동작에 반응하는 가상 클래스

1. :link 가상 클래스 선택자

방문하지 않은 링크 스타일에 적용

사용자가 아직 방문하지 않은 링크에 스타일을 적용합니다. 택스트 링크는 기본적으로 파란색(blue) 글자와 밑줄로 표시되는데 링크의 밑줄을 없애거나 색상을 바꾸려고 할 때 :link선택자를 사용합니다.

 

2. :visited 가상 클래스 선택자

방문한 링크에 스타일 적용

문서의 링크 중에서 한 번 이상 방문한 링크에 대한 스타일을 적용합니다. 방문한 텍스트 링크는 기본적으로 자주색(purple)으로 표시되는데 사용자가 방문했던 링크도 일반 텍스트 링크와 색상이 달라지지 않게 하려면 :visited선택자를 사용해 조절합니다.

 

3. :hover 가상 클래스 선택자

웹 요소에 마우스 커서를 올려놓을 때의 스타일 적용

웹 요소 위로 마우스 커서를 올려놓을 때의 스타일을 지정합니다. 이 가상 클래스 선택자를 응용하면 이미지 위로 마우스 커서를 올려놓으면 다른 이미지로 바뀌었다가 마우스 커서를 치우면 원래 이미지로 돌아오는 롤오버 효과(rollover)를 만들 수 있습니다.

 

4. :active 가상 클래스 선택자

웹 요소를 활성화했을 때의 스타일 적용

링크나 이미지 등 웹 요소를 활성화했을 때(누르고 있을 때)의 스타일을 지정합니다. 예를 들어 링크를 클릭했을 때의 스타일을 지정합니다.

 

5. :focus 가상 클래스 선택자

웹 요소에 초점이 맞추어 졌을 때의 스타일 적용

웹 요소에 초점이 맞추어졌을 때의 스타일을 지정합니다. 예를 들어 아이디를 입력하기 위해 텍스트 필드 안에 마우스 커서를 갖다 놓거나 Tab을 눌러 초점을 이동했을 때의 스타일을 지정합니다.

 

가상 선택자를 링크와 관련해 사용할 때는 선택자 순서에 주의해야 합니다. 앞에서 살펴본 1~4 모두 정의한다면 :link 선택 자부터 정의하고 :visited, :hover, :active 순서대로 정의합니다. 이 순서가 바뀌면 스타일을 정의하더라도 제대로 적용되지 않습니다. 

 

 

UI 요소 상태에 따른 가상 클래스

사용자의 동작뿐만 아니라 웹 요소의 상태에 따라 스타일을 지정할 때도 가상 클래스 선택자를 사용합니다. 그중에서도 UI(User Interface) 요소의 상태에 따른 가상 클래스는 웹 사이트나 앱 화면을 디자인할 때 웹 요소의 상태에 따라 스타일을 지정하기 위해 사용합니다.

 

1. :enabled와 :disabled 가상 클래스 선택자

요소를 사용할 수 있을 때와 없을 때의 스타일 지정

해당 요소가 사용 가능한 상태일 때의 스타일을 지정하려면 :enabled클래스를 사용하고 해당 요소가 사용 불가능한 상태일 때의 스타일을 :disabled클래스를 사용합니다. 텍스트 영역 필드(textarea)를 게시판 입력으로 사용할 때는 :enabled, 약관으로 보여줄 때는 :disabled로 사용합니다.

 

2. :checked가상 클래스 선택자

라디오 박스나 체크 박스에서 해당 항목을 선택했을 때의 스타일 지정

라디오 박스나 체크 박스에서 사용자가 해당 항목을 선택했을 때(체크했을 때)의 스타일을 지정합니다.

 

 

구조 가상 클래스

웹 문서 구조를 기준으로 특정 위치에 있는 요소를 찾아 스타일을 지정할 때 사용하는 가상 클래스 선택자입니다.

 

1. :root 가상 클래스 선택자

문서 전체에 적용하기

HTML문서에서는 루트 요소가 HTML이므로 HTML요소에 스타일이 적용됩니다.

 

2. :nth-child(n)와 :nth-last-child(n) 가상 클래스 선택자

자식 요소의 위치에 따라 스타일 적용하기

여러 개의 항목이 일렬(가로 or 세로)로 나열되어 있는 경우, calss나 id를 사용하지 않고 스타일을 지정할 항목이 몇 번째에 있는지를 따져 스타일을 적용할 수 있습니다. 주로 메뉴 항목에 이 선택자를 사용합니다. 세 번째에 있는 메뉴 항목이든 끝에 있는 메뉴 항목이든 원하는 위치에 따라 요소를 찾아 스타일을 지정할 수 있기 때문입니다.

:nth-child(n)는 앞에서부터 n번째 자식 요소에 스타일을 적용하고 :nth-last-child(n)는 끝에서부터 n번째인 자식 요소에 스타일을 적용합니다. an+b처럼 수식을 사용할 수도 있는데 n값은 0부터 차례대로 정수를 대입해 계산합니다.

다만, 위치에 따라 스타일을 적용하는 선택자는 해당 요소들이 모두 한 부모요소를 갖고 있어야만 합니다. 즉, 문서 구조로 표시했을 때 모두 같은 레벨의 요소여야 합니다.

 

 

3. :nth-of-type(n), nth-last-of-type(n) 가상 클래스 선택자

특정 태그 위치에 스타일 적용하기

<p>태그나 <li> 태그가 여러 개 나열되어 있고 각 태그에 id나 class를 사용하지 않은 상태에서 몇 번째에 잇는 <p> 태그 또는 몇 번째에 있는 <li> 태그처럼 태그에 따라 몇 번째에 있는 항목인지를 지정해 스타일을 적용할 때 이 가상 클래스 선택자를 사용합니다.

:nth-of-type(n)은 앞에서부터 세어 n번째 요소이고 :nth-last-of-type(n)은 끝에서부터 세어 n 번째 요소에 스타일을 지정합니다.

 

4. :first-child, :last-child 가상 클래스 선택자

첫 번째, 마지막 요소에 스타일 적용하기

:first-chiuld는 첫 번째 자식 요소를 선택해 스타일을 적용하고 :last-child는 마지막 자식요소에 스타일을 적용합니다.

예를 들어 section p:first-child는 section의 p 자식 요소들 중 첫번째 p 자식 요소를 가리킵니다.

 

5. :first-of-type, :last-of-type 가상 클래스 선택자

형제 관계 요소의 위치에 따라 스타일 적용하기

형제 관계인 요소 중에서 :first-of-type은 첫 번째 요소, :last-of-type은 마지막 요소에 스타일을 적용합니다.

 

6. :only-child, :only-of-type 가상 클래스 선택자

하나뿐인 자식 요소에 스타일 적용하기

:only-child는 부모 요소 안의 자식 요소가 유일하게 하나일 때 스타일을 적용하며 :only-of-type은 :only-child와 비슷한데 해당 요소가 유일한 요소일 때 스타일을 적용합니다.

 

 

그 외 가상 클래스

1. :target가상 클래스 선택자

앵커 목적지에 스타일 적용하기

같은 문서 안에서 다른 위치로 이동할 때는 앵커(anchor)를 이용합니다. 이때 :target 선택자를 이용하면 앵커로 연결된 부분, 즉 앵커의 목적지가 되는 부분의 스타일을 지정할 수 있습니다.

 

2. :not 가상 클래스 선택자

특정 요소가 아닐 때 스타일 적용하기

:not 선택자는 이름에서도 알 수 있듯이 부정의 의미가 있습니다. 여기서 not은'괄호 안에 있는 요소를 제외한'이라는 의미입니다.

 

 

가상 요소

가상 요소는 가상 클래스와 구별하기 위해 클래스 이름 앞에 콜론 두 개(;;)를 붙여 표시합니다.

 

1. ::first-line요소와 ::first-letter요소

첫 번째 줄, 첫 번째 글자에 스타일 적용하기

이 요소들을 사용하면 지정한 요소의 첫 번째 줄(::first-line)이나 첫 번째 글자(::first-letter)에 스타일을 쉽게 적용할 수 있습니다. ::first-letter 요소는 해당 요소의 첫 번째 글자를 가리키는데 첫 번째 글자는 반드시 첫 번째 줄에 있어야 합니다. 만약 <p>태그 안에<br>태그가 있어 첫 번째 글자가 첫 번째 줄에 없을경우, 적용할 수 없습니다.

 

2. ::before, ::after요소 

내용의 앞뒤에 콘텐츠 추가하기

이 요소를 사용하면 특정 내용 앞(::before)이나 뒤(::after)에 지정한 내용을 넣을 수 있습니다. 다시 말해 요소의 앞뒤에 텍스트나 이미지 등을 추가할 수 있습니다. 

'HTML > 다재다능한 CSS3 선택자' 카테고리의 다른 글

다재다능한 CSS3 선택자 예제  (0) 2021.08.16

HTML4까지는 웹 브라우저에 멀티미디어 파일을 삽입하더라도 파일을 재생하려면 웹 브라우저가 아닌 별도의 프로그램(plug-in)이 필요했지만 HTML5에서는 웹 브라우저 안에서 멀티미디어를 직접 재생할 수 있습니다.

 

<object>태그와 <embed>태그

플러그인 사용하기

웹 브라우저에서 처리할 수 없는 작업을 위해 웹 문서 안에 포함시킨 외부프로그램 기능을 플러그인이라고 합니다. 이런 플러그인을 웹 브라우저에 적용하려면<object>태그와 <embed>태그를 사용합니다.

<object>태그 - 외부 파일 삽입하기

<object>태그는 웹 브라우저에서 직접 재생할 수 없는 자바 애플릿이나 PDF파일, 플래스무비 같은 콘텐츠를 웹 문서 안에 포함시키기 위해 사용합니다. 또한 다른 HTML문서도 웹 문서에 포함시킬 수 있습니다.

기본형 설명
<object data="경로" type="유형" [name="이름" width="너비" height="높이"]></object> PDF파일, 플래스무비 같은 콘텐츠를 웹 문서 안에 포함시키기 위해 사용합니다.

<object>태그에서 사용할수 있는 속성

속성 설명
data 외부 파일의 경로를 지정합니다.
type 포함시킨 내용의 유형을 지정합니다.
name 다른 요소들과 구분할 수 있는 이름을 지정합니다.
width 포함시킨 내용의 너비 값을 지정합니다.
height 포함시킨 내용의 높이 값을 지정합니다.

 

<embed>태그

외부 파일 삽입하기

기본형 설명
<embed src="경로" type="유형" width="너비" height="높이"> 웹 브라우저에서 재생할 수 없는 콘텐츠를 웹 문서에 삽입할 때 사용합니다.

<object>태그와 달리 닫는 태그가 없는 <embed>태그는 주로 <object>태그를 지원하지 않는 이전 브라우저에서 사용합니다.

 

 

멀티 미디어의 웹 표준화

HTML5는 PC뿐만 아니라 웹 브라우저가 설치된 모든 기기에 적용되는 웹 표준이므로 플러그인 프로그램 없이 웹 브라우저 자체에서 멀티미디어를 재생할 수 있습니다. 웹에서 지원되는 비디오/오디오 파일에는 여러 종류가 있습니다.

종류 확장자 설명
비디오 mp4 고화질 영상을 지원해 많은 사이트에서 사용되고 있습니다. 라이선스가 있지만 웹에서 사용할 경우에는 무료로 사용할 수 있습니다.
webm 화질이 우수하고 무료로 제공되어 최근 많이 사용되고 있습니다.
ogv 화질은 다른 비디오 유형보다 떨어지지만 무료라는 장점 때문에 webm 형식이 등장하기 전에 많이 사용되었습니다.
오디오 mp3 대부분의 음원에서 사용되지만 라이선스 때문에 유료로 사용해야 합니다.
ogg 무료이므로 게임 등에서 많이 사용합니다.

최신 모던 웹 브라우저에서는 비디오 파일의 경우 mp4나 webm, 오디오 파일의 경우 mp3나 ogg파일을 주로 사용합니다.

브라우저 비디오 오디오
mp4 webm ogv mp3 ogg
인터넷 익스플로러 O(9+) X X O(9+) X
크롬 O(all) O(25+) O(all) O(all) O(all)
파이어폭스 O(35+) O(28+) O(3.5+) O(22+) O(3.5+)
사파리 O(3.2+) X X O(+4) X
오페라 O(25+) O O(11.5+) (O15+) O(11.5+)
iOS사파리 O(all) X X O(4.1+) X
안드로이드 브라우저 O(4.4+) X X O(2.3+) O(2.3)

 

HTML5와 비디오 코덱

캠코더나 휴대폰 등 여러 장치를 이용해 비디오를 촬영할 수 있는데 촬영한 비디오 파일이 있더라도 컴퓨터에서 곧바로 사용할 수 는 없고 원본 비디오를 최대한 압축해 컴퓨터에서 사용할 수 있는 비디오 파일로 변환해 합니다. 이 과정을(encoding)이라고 합니다. 반대로 비디오 파일에 저장되어 있는 비디오 정보를 가져와 비디오 플레이어에 보여 주는 과정을 디코딩(decoding)이라고 합니다.

인코딩과 디코딩을 수행하는 것이 비디오 코덱인데 현재 사용할 수 있는 비디오 코덱은 여러종류가 있습니다. 예를 들어 우리가 자주 보는 WMV(Windows Media Video)라는 코덱은 원본 비디오를 윈도우의 '윈도우 미디어 플레이어'로 볼 수 있도록 변환해 줍니다.

비디오 코덱에는 다음과 같은 종류가 있습니다.

H264/AVC, v8, v9, 오그 테오라(Ogg Theora)

HTML5와 오디오코덱

1 MPEG-1 AUDIO Layer3, Ogg Vorbis

 

 

오디오 & 비디오 재생하기

<audio>태그

오디오 파일 삽입하기

일반적으로 대부분의 브라우저에서 가능하면 mp3 파일을 삽입하며 ogg(또는 oga)파일은 함께 지정하지 않는 경우가 많습니다.

기본형 설명
<audio src="오디오 파일 경로" [속성] [속성="속성 값"]></audio> 배경음악이나 효과음을 넣을때 사용한다.

<audio>태그에서 사용되는 속성

속성 설명
autoplay 오디오를 자동 재생합니다.
controls 웹 화면에 컨트롤 막대를 표시합니다. 컨트롤 막대에는 재생/멈춤, 진행 바, 볼륨 등이 표시됩니다.
loop 오디오를 반복 재생합니다.
muted 오디오를 재생해 진행하지만 소리는 끕니다.
preload 재생 버튼을 눌러 재생하기 전에 오디오 파일을 다운로드해 준비해 둡니다.

 

<video>태그

비디오 파일 삽입하기

기본형 설명
<video src="비디오 파일 경로" [속성] [속성="속성 값"]></video> 웹 문서에 비디오를 삽입할때 사용한다. audio와 태그를 공유한다.

 

<audio>태그와 <video>태그의 속성

<audio> 태그와 <video>태그에서 사용할 수 있는 속성은 거의 일치하기 때문에 함께 소개합니다.

속성 설명
width,height 비디오 크기 조절
controls 컨트롤 막대 표시
muted 비디오 재생 시 소리는 끄고 화면만 재생합니다.
autoplay 자동 재생(주요 브라우저에서 muted랑 같이써야 재생됨)
loop 반복 재생
poster 영상을 보기전에 미리보기 이미지
<video src="media/Painting.mp4" controls poster="fireworks.jpg"></video>

 

<source>태그

여러 미디어 파일 한꺼번에 지정하기(멀티미디어)

브라우저에 따라 지원하는 오디오 코덱이나 비디오 코덱이 다르기 때문에 한 가지 파일만 사용했을 경우, 일부 오래된 브라우저에서는 지원하지 않을 수 있습니다.

사용자들의 브라우저 환경을 모두 고려한다면 최신 브라우저와 이전 브라우저에서 모두 재생할 수 있도록 ogv 파일도 함께 지정해주어야 합니다. 최근에는 무료 코덱을 사용하면서 화질도 뛰어난 webm파일까지 함께 사용합니다.

기본형 설명
<source src="video.ogv" type="video/ogg; codecs='theora,vorbis'"> 미디어 파일의 경로를 지정하는 src 속성과 미디어 파일의 형식을 알려주는 type속성을 같이 사용합니다. type만 사용할 수 있고, codecs속성을 이용해 코덱까지 함께 표시할 수 있습니다.
속성 설명
src 미디어 파일의 경로를 지정하는 필수 속성으로 파일 경로를 지정할 때는 경로에 공백이 있으면 안됩니다.
type 웹 브라우저가 해당 미디어 파일을 재생할 수 있는지 여부를 확인할 수 있도록 미디어 파일의 유형을 알려줍니다.
codecs 비디오 코덱을 지정합니다.

<video>태그를 지원하지 않는 이전브라우저를 위해 HTML5지원 브라우저가 필요하다는 대체 텍스트를 표시할 수 있습니다.

<video controls>
	<source src="media/Painting.mp4" type="video/mp4">
	<source src="media/Painting.webm" type="video/webm">
	<source src="media/Painting.ogv" type="video/ogg">
    이 영상을 보기 위해서는 HTML5를 지원하는 브라우저가 필요합니다
</video>

 

<track>태그

비디오 화면에 자막 추가하기

HTML5에서는 비디오 콘텐츠를 웹 페이지에 삽입할 때 청각 장애인용 자막을 표시하는 것이 기본입니다.

기본형 설명
<track kind="자막 종류" src="경로" srclang="언어" label="제목" default> 자막을 추가한다.

<track>태그의 속성

1. kind속성

속성 값 설명
subtitles 자막입니다. 소리를 켤 수 있지만 이해할 수 없는 경우, 다른 언어로 번역한 자막일 경우에 사용하며 비디오 화면에 표시됩니다.
captions 캡션입니다. 청각장애인용 자막이거나 소리를 들을 수 없거나 켤 수 없는 경우에 사용합니다. 비디오 화면에 표시됩니다.
descriptions 비디오 콘텐츠에 대한 설명입니다. 비디오 화면에는 표시되지 않습니다.
chapters 비디오 탐색을 위한 장 제목입니다. 비디오 화면에 표시되지 않습니다.
metadata 비디오 콘텐츠 정보입니다. 비디오 화면에 표시되지 않습니다.

2. src 속성

자막 텍스트의 파일 경로를 지정합니다.

3. srclang 속성

사용한 언어를 지정합니다. kind속성 값이 subtitle이라면 반드시 지정해야하는데 en이나 ko처럼 언어를 약자로 표기합니다.

4. label속성

자막이 여러 개일 경우, 자막을 식별할 수 있도록 제목을 달아줍니다.

5. default 속성

자막 파일이 여러 개일 경우, 기본으로 사용할 자막을 default로 지정할 수 있습니다.

기본형
<track kind="subtitles" src="Wildlife.vtt" srclang"ko" label="korean" default>

 

 

WebVTT자막 파일

HTML5에서는 srt파일을 사용하지만 모든 브라우저에서 공식적으로 지원하는 자막 파일 형식은 WebVTT(Web Video Text Track)형식입니다.

비디오 파일에 자막 파일 연결하기

기본형
<video controls>
    <source src="media/Painting.mp4" type="video/mp4">
    <source src="media/Painting.web" type="video/webm">
    <track src="media/Painting.vtt" srclang="ko" label="korean" default>
</video>

semantic태그란 태그만 보고도 페이지 구조를 쉽게 이해할 수 있도록 정의된 태그를 말합니다.

 

HTML5문서

시맨틱 태그가 사용된 HTML5문서

웹사이트는 주로 사이트 제목이나 로고, 검색 창이 있는 헤더(header), 여러 내용이 있는 본문(contents), 본문 외 내용을 나타내는 사이드바(sidebar)와 푸터(footer)부분이 문서의 주요부분이며 사이트에 따라 한두 영역이 추가되곤 합니다.

이런 분석을 토대로 HTML5에서는 태그 이름만 보고도 문서 구조에서 어떤 역할을 하는지 쉽게 이해할 수 있는 '시맨틱 태그(semantic tag)'를 추가했습니다.

 

시맨틱 태그로 레이아웃을 만들어야 하는 이유

시맨틱 태그를 사용하거나 사용하지 않거나 웹 브라우저에 나타나는 모습은 똑같지만 실제로 웹 브라우저 문서를 처리할때는 차이가 있습니다. HTML5의 시맨틱 태그로 작성한 소스를 보면 어느 부분이 제목, 메뉴, 실제 내용인지 구분이 쉽게가서 사이트 내용을 정확하게 전달합니다.

 

 

문서 구조를 위한 HTML5 시맨틱 태그

<header>태그

머리말 지정하기 <header> 태그는 특정 부분의 머리말(header)에 해당하며 사이트 전체의 헤더는 주로 페이지 맨 위쪽이나 왼쪽에 삽입하며 헤더의 내용으로는 <form>태그를 사용해 검색 창을 넣거나 <nav>태그를 사용해 사이트 메뉴를 넣습니다. 혹인 <header>태그는 본문 중에 사용해 해당 부분의 머리말로 사용할 수도 있습니다.

 

<nav>태그

문서를 연결하는 내비게이션 링크 <nav>태그는 내비게이션 메뉴뿐만 아니라 푸터에 있는 사이트 링크 모음 부분에도 많이 사용됩니다. 즉 사용하는 위치의 영향을 받지 않아 <header>나 <footer>태그 또는 <aside>태그 안에 포함시킬 수 있고 독립해 사용할 수도 있습니다.

 

<section>태그

주제별 콘텐츠 영역 나타내기

<section>태그는 문서에서 콘텐츠 영역을 나타냅니다. 문맥 흐름 중에서 콘텐츠를 주제별로 묶을때 사용하며 그 안에는 섹션 제목을 나타내는 <h1>~<h6> 제목 태그가 함께 사용됩니다.<section>안에 또다른 <section>을 넣을 수 있습니다.

 

<article>태그

콘텐츠 내용 넣기

<section>과 비슷하지만 웹 상의 실제 내용을 넣는 태그입니다. 보통 블로그의 포스트나 웹사이트의 내용, 사용자가 등록한 코멘트, 독립적인 웹 콘텐츠 항목이 해당됩니다. 다시 말해 태그를 적용한 부분을 떼어 내 독립적으로 배포하거나 재사용 하더라도 완전히 하나의 콘텐츠가 된다면 <article>태그를 쓰면 됩니다.<section>은 문맥 흐름 중에서 콘텐츠를 주제별로 묶을 때 사용하고 <article>태그안에 <section>태그를 넣을 수도 있습니다.

 

<aside>태그

본문 이외의 내용 표시하기

사이드바는 광고나 링크 모음 등 문서의 메인 내용에 영향을 미치지 않는 내용들을 넣을 때만 사용합니다. 이처럼 <aside>태그는 본문 내용 외에 주변에 표시되는 기타 내용들을 나타냅니다.

 

<iframe>태그

외부 문서 삽입하기

웹 문서 안에 다른 외부 문서를 삽입할 때 사용합니다. 이렇게 웹 문서 안에 다른 웹 문서를 가져와 표시하는 것을 인라인 프레임(inline frame)이라고 하며, 삽입하는 태그는 <iframe>태그입니다.

기본형 설명
<iframe src="삽입할 문서 주소" [속성 = "속성 값"]> </iframe> 웹 문서 안에 다른 외부 문서를 삽입할 때 사용합니다.
속성 설명
width 인라인 프레임의 너비입니다. 픽셀이나 백분율 값으로 표시합니다.
height 인라인 프레임의 높이입니다. 픽셀이나 백분율 값으로 표시합니다.
name 인라인 프레임의 이름입니다.
src 프레임에 표시할 문서의 주소를 지정합니다.
seamless 프레임의 테두리를 없애 마치 본문의 일부처럼 보이도록 만들며 속성 값 없이 seamless라고 쓰면 됩니다. 브라우저에 따라 지원하지 않을 수 있습니다.

 

 

<fotter>태그

제작 정보와 저작권 정보 표시하기

사이트 제작자의 연락처 정보와 저작권 정보를 표시합니다. 또한 <footer>태그 안에는 <header>태그를 비롯해 <section>, <article> 등 다른 레이아웃 태그들을 모두 사용할 수 있고 이런 태그를 이용해 푸터 안에 다양한 정보를 넣을 수 있습니다.

 

<address>태그

사이트 제작자 정보, 연락처 정보 나타내기

 <address>태그는 주로 <footer>태그 안에 사용되는데 웹 페이지 제작자의 이름이나 제작자의 웹 페이지 또는 피드백을 위한 연락처 정보를 넣는데 사용됩니다. 또한 웹 사이트와 관련된 우편 주소도<address>태그 안에 포함시킵니다. 하지만 단순히 우편 주소를 표기할 용도라면 <address>태그가 아닌 <p>태그를 이용해 표시합니다.

 

<div>태그

HTML5에서는 주로 콘텐츠를 묶어 시각적 효과를 적용할 때 즉 콘텐츠에 CSS를 적용할 때 <div>태그를 사용합니다.

 

IE8이하 버전에서는

HTML5의 새로운 시맨틱 태그는 대부분의 웹 브라우저에서는 사용할 수 있지만 인터넷 익스플로러(IE)8에서는 지원하지 않고 모바일용 브라우저인 오페라 미니에서는 일부만 지원됩니다.

브라우저별 시맨틱 태그 지원 여부를 확인하려면 인터넷 익스플로러(IE)8.0이하 버전은 지원되지 않음을 알 수 있습니다.

그에 따른 방안으로는 몇가지 방법이 있습니다.

CSS에서 블록 레벨로 정의하기

첫 번째 방법은 CSS에서 블록 레벨로 정의하는 방법입니다 브라우저는 자신이 인식하지 못하는 태그를 만나면 인라인 태그로 취급하는데, 이런 태그는 위치값을 가질 수 없으므로 태그를 이용해 레이아웃을 만드는 것이 불가능해서 HTML5시맨틱 태그를 인식하지 못하는 브라우저에서는 소스를 <style> 태그와 </style>사이에 입력해 자신만의 영역을 가질 수 있는 블록 레벨 태그로 바꾸어 주어야 합니다.

시맨틱 태그 직접 정의하기

자바스크립트를 이용해 웹 브라우저에서 시맨틱 태그들을 지원하는 것처럼 태그를 사용할 수도 있습니다.

HTML5 Shiv 사용하기

<script>태그 사이에 태그를 직접 정의하는 과정을 자바스크립트 파일로 만들어 사용할 수 있도록 만든 HTML5 shiv를 사용하면 문제를 해결할수 있습니다.

https://github.com/aFarkas/html5shiv 페이지에서 [latest zip package]링크를 누르고 다운로드된 파일의 압축을 푼 뒤 src폴더 안의 html5shiv.js파일을 원하는 폴더로 복사해 사용하면됩니다.

 

브라우저 사이의 차이를 메꾸어 주는 폴리필(polyfill)

최신 브라우저더라도 HTML5 표준 기능들이 어떤 브라우저에서는 되고 어떤 브라우저에서는 안 됩니다. 이것을 파편화(browser fragmentation)라고 부르는데 이런 브라우저 파편화를 줄이고 비슷하게라도 같은 결과를 만들기 위한 방법을 통틀어 심(shim)또는 폴백(fallback)이라고 부릅니다. 앞에서 설명한 html5shiv도 shim의 일종입니다.

폴리필(polyfill)은 파편화가 생기는 브라우저에 삽입하는 자바스크립트로 브라우저를 소스로 진단해 필요한 shim파일을 자동으로 끼워 넣어 줍니다. 개발되어 있는 폴리필들은 상당히 많은데 HTML5 Cross Browser Pollyfills(https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills)페이지를 참고하면 각 기능별로 폴리필이나 심, 폴백을 한눈에 볼 수 있습니다.

연습문제 1~2

1. quiz-1.html 문서를 다음 조건에 맞도록 수정하세요

1. float속성을 이용해 내비게이션 항목을 왼쪽부터 차례대로 배치합니다.
2. 내비게이션 항목의 오른쪽 마진을 15px로 지정해 각 항목들이 조금씩 떨어지도록 합니다.
3. 기존 margin-bottom값을20px로 수정합니다.
4. float속성 때문에 내비게이션 외의 항목에도 float의 영향을 받으므로 clear 속성을 사용해 '강아지 용품 준비하기'부터는 float의 영향을 받지 않도록 합니다.
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="utf-8">
	<title>HTML5 레이아웃</title>
  <style>
    body{
      font-family:"맑은 고딕", "고딕", "굴림";
    }
    a:link {
      text-decoration:none;
    }
    nav ul{
      list-style-type:none;
      margin:0px;
      padding:0px;
    }
    nav ul li{
      font-size:1.5em;
      padding-left:7px;
      margin-bottom:15px;
      border-left-width:5px;
      border-left-color:#990066;
      border-left-style:solid;
    }
    section article {
      padding-left:10px;
      margin-bottom:10px;
      border-top:1px #a6a6a6 dashed;
      border-bottom: 1px #a6a6a6 dashed;
    }
  </style>
</head>
<body>
  <nav>
    <ul>
      <li><a href="#">애완견 종류</a></li>
      <li><a href="#">입양하기</a></li>
      <li><a href="#">건강돌보기</a></li>
      <li><a href="#">더불어살기</a></li>
    </ul>
  </nav>
<section id="content">
  <h2>강아지 용품 준비하기</h2>
  <article>  
    <h3>강아지 집 </h3>
     <p>강아지가 편히 쉴 수 있는 포근한 집이 필요합니다. 강아지의 집은 강아지가 다 큰 후에도 계속 쓸 수 있는 집으로 구입하세요.집을 구입하실 때는 박음질이 잘 되어 있는지, 세탁이 간편한 제품인지 꼭 확인하시고 고르시는 것이 좋습니다.</p>
  </article>
  <article> 
    <h3>강아지 먹이 </h3>
    <p>강아지의 먹이는 꼭 어린 강아지용으로 나와있는 사료를 선택하세요. 강아지들은 사람에 비해 성장속도가 8배정도 빠르답니다. 따라서 강아지에게는 성장속도에 맞는 사료를 급여하셔야 합니다. 사람이 먹는 음식을 먹게 되면 양념과 향신료에 입맛이 익숙해지고, 비만이 될 가능성이 매우 높아집니다. 강아지용 사료는 생후 12개월까지 급여하셔야 합니다.</p>
   </article>  
 </section>
<footer>
  <p>Copyright 2012 funnycom</p>
</footer>
</body>
</html>

 

 

<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="utf-8">
	<title>HTML5 레이아웃</title>
  <style>
    body{
      font-family:"맑은 고딕", "고딕", "굴림";
    }
    a:link {
      text-decoration:none;
    }
    nav ul{
      float:left;
      list-style-type:none;
      margin:0px;
      padding:0px;
    }
    nav ul li{
      display:inline-block;
      margin-right: 15px;
      font-size:1.5em;
      padding-left:7px;
      margin-bottom:15px;
      border-left-width:5px;
      border-left-color:#990066;
      border-left-style:solid;
    }
    section article {
      padding-left:10px;
      margin-bottom:20px;
      border-top:1px #a6a6a6 dashed;
      border-bottom: 1px #a6a6a6 dashed;
    }
    h2 {
      clear:both;
    }
  </style>
</head>
<body>
  <nav>
    <ul>
      <li><a href="#">애완견 종류</a></li>
      <li><a href="#">입양하기</a></li>
      <li><a href="#">건강돌보기</a></li>
      <li><a href="#">더불어살기</a></li>
    </ul>
  </nav>
<section id="content">
  <h2>강아지 용품 준비하기</h2>
  <article>  
    <h3>강아지 집 </h3>
     <p>강아지가 편히 쉴 수 있는 포근한 집이 필요합니다. 강아지의 집은 강아지가 다 큰 후에도 계속 쓸 수 있는 집으로 구입하세요.집을 구입하실 때는 박음질이 잘 되어 있는지, 세탁이 간편한 제품인지 꼭 확인하시고 고르시는 것이 좋습니다.</p>
  </article>
  <article> 
    <h3>강아지 먹이 </h3>
    <p>강아지의 먹이는 꼭 어린 강아지용으로 나와있는 사료를 선택하세요. 강아지들은 사람에 비해 성장속도가 8배정도 빠르답니다. 따라서 강아지에게는 성장속도에 맞는 사료를 급여하셔야 합니다. 사람이 먹는 음식을 먹게 되면 양념과 향신료에 입맛이 익숙해지고, 비만이 될 가능성이 매우 높아집니다. 강아지용 사료는 생후 12개월까지 급여하셔야 합니다.</p>
   </article>  
 </section>
<footer>
  <p>Copyright 2012 funnycom</p>
</footer>
</body>
</html>

2. quiz-2.html문서에는 기본적인 표를 사용한 내용이 들어 있습니다. 다음 표를 만들기 위해 조건에 맞게 표 스타일을 적용하세요.

1. 표와 셀에 테두리(1px solid black)를 그린 후 한 줄로 합쳐 표시하세요.
2. 표의 설명 글(caption)은 표 아래쪽에 표시하세요.
3. 각 셀에는 padding:10px을 적용해 적절한 여백을 두세요.
4. 배경 색을 #eee로 지정하는 클래스 선택자 .heading을 정의한 후 첫 번째 행과 첫 번째 열에 적용하세요.
<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="utf-8">
	<title>표 스타일</title>
</head>
<body>
  <table border="1">
    <caption>2015 국민 독서실태</caption>
    <thead>
      <tr>
        <th>구분</th>
        <th>성인</th>
        <th>학생</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <th>독서율</th>
        <td>65.3%</td>
        <td>94.9%</td>
      </tr>
      <tr>
        <th>연평균 독서량</th>
        <td>9.1권</td>
        <td>29.8권</td>
      </tr>
      <tr>
        <th>공공도서관 이용률</th>
        <td>28.2%</td>
        <td>64.9%</td>
      </tr>      
    </tbody>
  </table>
</body>
</html>

<!DOCTYPE html>
<html lang="ko">
  <style>
    table {
      border: 1px solid black;
      caption-side:bottom;
      border-collapse: collapse;
    }
    tr td, th{
      border: 1px solid black;
      padding: 10px;
    }
    th {
      background-color: #eee;
    }
  </style>
<head>
	<meta charset="utf-8">
	<title>표 스타일</title>
</head>
<body>
  <table>
    <caption>2015 국민 독서실태</caption>
    <thead>
      <tr>
        <th>구분</th>
        <th>성인</th>
        <th>학생</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <th>독서율</th>
        <td>65.3%</td>
        <td>94.9%</td>
      </tr>
      <tr>
        <th>연평균 독서량</th>
        <td>9.1권</td>
        <td>29.8권</td>
      </tr>
      <tr>
        <th>공공도서관 이용률</th>
        <td>28.2%</td>
        <td>64.9%</td>
      </tr>      
    </tbody>
  </table>
</body>
</html>

'HTML > CSS 레이아웃' 카테고리의 다른 글

CSS 레이아웃  (0) 2021.08.15

CSS포지셔닝과 주요 속성들

box-sizing

콘텐츠 영역의 너비에 패딩과 테두리 크기까지 합쳐서 width 속성을 지정할 수 있습니다.

기본형 설명
box-sizing: content-box width속성 값을 콘텐츠 영역 너비 값으로 사용합니다.(기본값)
box-sizing: border-box width 속성 값을 콘텐츠+테두리까지 포함한 박스 모델 전체 너비 값으로 사용합니다.

 

 

float속성

웹 요소를 문서 위에 떠 있게 만듭니다.

기본형 설명
float: left 해당 요소를 문서의 왼쪽으로 배치합니다.
float: right 해당 요소를 문서의 오른쪽으로 배치합니다.
float: none 좌우 어느 쪽으로도 배치하지 않습니다.

 

clear속성

float 속성 해제하기

float속성을 이용해 웹 페이지 요소를 왼쪽이나 오른쪽에 배치하면 그 다음에 넣는 다른요소들에도 똑같은 속성이 전달되는데, float속성을 해제하기 위해서는 따로 알려줘야한다.

기본형 설명
clear: none clear을 설정하지 않은 것과 같다.
clear: left 왼쪽 float속성을 해제한다
clear: right 오른쪽 float속성을 해제한다
clear: both 왼쪽과 오른쪽 float속성을 해제한다.

 

 

position속성

웹 문서 안의 요소를 자유자재로 배치해 주는 속성으로 HTML과 CSS를 이용해 웹 문서를 만들 때 중요하게 사용하는 속성 중 하나입니다.

기본형 설명
position: static 요소를 문서의 흐름에 맞추어 배치합니다.
position: relative 이전 요소에 자연스럽게 연결해 배치하되 위치를 지정할 수 있습니다.
position: absolute 원하는 위치를 지정해 배치합니다.(절대좌표)
position: fixed 지정한 위치에 고정해 배치합니다. 화면에서 요소가 잘릴 수도 있습니다.

position속성 중 static을 제외한 나머지 속성 값에서는 좌표를 이용해 각 요소의 위치를 조절할 수 있습니다. 이 때 위치는 top, bottom, left, right로 지정합니다.

top은 위쪽으로부터 떨어진거리 bottom은 아래로부터 떨어진거리 left는 왼쪽으로부터 떨어진 거리 right는 오른쪽으로부터 떨어진 거리이며 좌표값은 양수와 음수 모두 사용가능합니다.

 

visibility속성

요소를 보이게 하거나 보이지 않게 하기

기본형 설명
visibility: visible 화면에 요소를 표시합니다.(기본값)
visibility: hidden 화면에서 요소를 감춥니다.
visibility: collapse 표의 행, 열, 행 그룹, 열 그룹 등에서 지정하면 서로 겹치도록 조절합니다. 그 외의 영역에서는 hidden처리합니다.

 

 

z-index속성

기본형 설명
z-index: <숫자> z-index값이 작을수록 아래 쌓이고 높을수록 위에 쌓입니다.(값이 높은게 앞에 표시됨)

 

 

다단으로 편집하기

column-width

단의 너비 고정하고 다단 구성하기

기본형 설명
column-width: <크기> 단 너비를 직접 지정합니다.
column-width: auto 단의 개수(column-count) 같은 다른 속성에 따라 단의 너비가 자동 계산됩니다.

column-coun속성

단의 개수 고정하고 다단 구성하기

기본형 설명
column-count: <숫자> 콘텐츠가 들어갈 단의 개수를 지정합니다. 0보다 큰수를 사용합니다.
column-count: auto 단의 너비(column-width) 같은 다른 속성에 따라 단의 개수가 자동 계산됩니다.

column-gap속성

단과 단 사이 여백 지정하기

기본형 설명
column-gap: <크기> 단과 단 사이의 여백을 숫자로 지정합니다.
column-gap: normal 여백을 자동으로 지정합니다. W3C에서 권장하는 여백은 1em입니다.

column-rule속성

기본형
column-rule-color: <색상>
column-rule-style: none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset
column-rule-width: <크기> | thin | medium | thick
column-rule-: <너비> <스타일> <속성>

break-after속성

다단 위치 지정하기

속성 단 나눌 위치 동작
단 나눔 단 나누지 않음
break-before 특정 요소 앞 column avoid-column
break-after 특정 요소 뒤
break-inside 특정 요소 안

column-span 속성

여러 단을 하나로 합치기

기본값 설명
column-span: 1 단을 하나만 합치는 것 합치지 않은것과 같다.(기본값)
column-span: all 전체 단을 하나로 합쳐 표현합니다. 단의 일부만 합칠 수 없습니다.

 

 

 

 

표 스타일

caption-side 속성

표 제목 위치 정하기

표 제목은 <caption>태그를 이용해 캡션으로 표시합니다. 기본적으로 표의 위쪽에 표시되지만 caption-side속성을 이용하면 캡션의 위치를 표 아래쪽으로 옮길 수 있습니다.

기본형 설명
caption-side: top 캡션을 표의 윗부분에 표시합니다. (기본값)
caption-side: bottom 캡션을 표의 아랫부분에 표시합니다.

border속성

표 테두리 스타일 결정하기

표를 삽입할 때 기본적으로 <table> 태그의 border 속성을 이용해<table border="1">처럼 사용하면 표에 테두리를 그릴 수 있습니다.(표를 완성하기 전까지 표를 표시할 수 있는 쉬운 방법입니다.)

여기에 CSS의 border 속성을 이용해 테두리의 색상이나 형태, 너비 등을 지정할 수 있습니다. 이때 <table>태그에서 border속성을 이용해 <table border="1">처럼 테두리를 표시했을 경우, 표의 바깥 테두리뿐만 아니라 셀의 테두리까지 모두 표시되지만, CSS를 이용해 테두리를 표시할 때는 표의 바깥 테두리와 셀의 테두리를 따로 지정해야 합니다.

 

 

border-collapse속성

테두리 통합, 분리하기

<table>태그와 <td>태그에서 border속성을 사용하면 두 줄로 표시되는데 이때 border-collapse속성을 이용하면 표의 바깥 테두리와 셀의 각 테두리가 떨어져 있는 것을 그대로 둘 것인지, 두 테두리를 하나로 합칠 것인지 결정할 수 있습니다.

기본형 설명
border-collapse: collapse 테두리를 하나로 합쳐 표시합니다.
border-collapse: separate 테두리를 따로 표시합니다. 기본 값입니다.

 

 

 

border-spacing속성

인접한 셀 테두리 사이 거리 지정하기

border-collapse:separate를 사용해 셀들을 분리했을 경우, 인접한 셀 테두리 사이의 거리를 지정합니다.

기본형 설명
border-spacing: <크기> px이나 em등 크기와 단위를 직접 지정합니다.

 

empty-cells속성

빈 셀의 표시 여부 지정하기

기본형 설명
empty-cells: show 빈 셀 주위에 테두리를 그려 빈 셀을 표시합니다.(기본형)
empty-cells: hide 빈 셀에 테두리를 그리지 않고 비워 둡니다.

 

width, height속성

표의 너비와 높이 지정하기

표의 셀들은 <th>태그나 <td>태그를 사용해 구성되는데 이 태그들은 셀을 만들 뿐, 표와 셀의 형태를 꾸미려면 CSS를 이용해야합니다. 맨 먼저 살펴봐야 하는 것은 표와 셀의 너비입니다. 특별히 지정하지 않는다면 셀 안의 내용이 표시될 만큼만 표시됩니다. 특정한 크기로 표시하고 싶다면 다른 웹 요소들의 너비를 지정할 때처럼 width 속성을 이용해 표와 셀의 너비를 지정하면 됩니다. 마찬가지로 height 속성을 이용해 높이도 지정할 수 있습니다. 이때 사용할 수 있는 값은 실제 크기를 나타내는 px이나 부모 요소를 기준으로 한 %입니다.

표의 너비를 지정하고 셀의 너비를 지정하지 않는다면 내용이 없을 경우의 표의 너비를 셀의 개수로 나누어 셀의 너비를 일정하게 지정하고 내용이 잇다면 내용에 따라 동일한 비율로 지정합니다.

 

table-layout속성

콘텐츠에 맞게 셀 너비 지정하기

기본형 설명
table-layout: fixed 셀 너비를 고정합니다. 즉, 셀 내용에 따라 셀의 너비가 달라지지 않습니다.
table-layout: auto 셀 내용에 따라 셀의 너비가 달라집니다. 기본 값입니다.

 

vertical-align 속성 - 셀 안에서 수직 정렬하기

기본형 설명
vertical-align: baseline 인라인 요소의 기준선을 부모 요소의 기준선(baseline)에 맞춥니다.
vertical-align: sub 인라인 요소의 기준선을 부모 요소의 아래 첨자 위치에 맞춥니다.
vertical-align: super 인라인 요소의 기준선을 부모 요소의 위 첨자 위치에 맞춥니다.
vertical-align: top 인라인 요소의 윗부분을 부모 요소의 윗부분에 맞춥니다.
vertical-align: middle 인라인 요소의 중앙 부분을 부모 요소의 기준선에서 x-높이(소문자 x의 높이 값)의 반만큼 올려서 맞춥니다.
vertical-align: bottom 인라인 요소의 아랫부분을 부모 요소의 아랫부분에 맞춥니다.
vertical-align: text-top 인라인 요소의 윗부분을 부모 요소의 윗부분에 맞춥니다.
vertical-align: text-bottom 인라인 요소의 아랫부분을 부모 요소의 아랫부분에 맞춥니다.
vertical-align: <길이 값> 기준선을 0px로 생각하고 길이 값이 양수면 기준선 위로, 음수면 기준선 아래로 지정한 크기만큼 옮깁니다.
vertical-align: <백분율 값> 기준선을 0%로 생각하고 line-height의 몇%인지에 따라 양수면 위로, 음수면 아래로 옮깁니다.

 

표의 셀에서 사용할 경우 기준선이나 위, 아래, 가운데 등으로 정렬할 수 있습니다.

속성 값 설명
baseline 셀의 기준선에 내용의 기준선을 맞춥니다.
top 패딩의 위쪽 가장자리에 내용의 윗부분을 맞춥니다.
middle 패딩 박스의 중앙에 내용을 맞춥니다.
bottom 패딩의 아래쪽 가장자리에 내용의 아랫부분을 맞춥니다.

 

'HTML > CSS 레이아웃' 카테고리의 다른 글

CSS레이아웃 예제  (0) 2021.08.15

퀴즈1~2

1. 박스 모델의 네 방향 테두리 두께를 다르게 지정하기 위해 다음과 같은 CSS 소스를 사용했습니다. 이것을 border-width 속성 하나로 묶어 지정하려면 기존 4개의 값을 어떻게 나열해야 할지 작성하세요.

border-top-width: 5px
border-bottom-width: 10px
border-left-width: 15px
border-right-width: 20px

답: border-width: 5px 20px 10px 15px

 

2. 08/quiz-2.html에는 4개 항목이 있는 순서없는 목록이 삽입되어 있습니다. 여기에 다음 조건에 맞는 CSS를 적용해 가로 내비게이션 메뉴로 만드세요

1. 목록의 불릿을 없앱니다.
2. 목록의 항목을 가로로 배치합니다.
3. 각 항목에 1픽셀짜리 검은색 실선을 표시합니다.
4. 각 항목의 상하 패딩은 10px, 좌우 패딩은 20px로 지정합니다.
5. 각 항목의 네 방향 마진은 10px로 지정합니다.
<!doctype html>
<html lang="ko">
	<head>
		<meta charset="utf-8">
		<title>display 속성</title>
		<style>
			a:link, a:visited {
				color:black;
				text-decoration: none;
			}
		</style>
	</head>
	<body>
		<nav>
			<ul>
				<li><a href="#">메뉴1</a></li>
				<li><a href="#">메뉴2</a></li>
				<li><a href="#">메뉴3</a></li>
				<li><a href="#">메뉴4</a></li>
			</ul>
		</nav>
	</body>
</html>

<!doctype html>
<html lang="ko">
	<head>
		<meta charset="utf-8">
		<title>display 속성</title>
		<style>
			a:link, a:visited {
				border-style: solid;
				border-width: 1px;
				color:black;
				text-decoration: none;
				padding: 10px 20px;
				margin: 10px;
				list-style-type: none;
				display: inline-block;
			}
			ul li {
				list-style-type: none;
				display: inline-block;
			}
		</style>
	</head>
	<body>
		<nav>
			<ul>
				<li><a href="#">메뉴1</a></li>
				<li><a href="#">메뉴2</a></li>
				<li><a href="#">메뉴3</a></li>
				<li><a href="#">메뉴4</a></li>
			</ul>
		</nav>
	</body>
</html>

'HTML > CSS 박스 모델' 카테고리의 다른 글

CSS 박스 모델  (0) 2021.08.14

웹 문서에 내용을 배치할 때는 각 요소를 박스 형태로 구성하고, 이것을 'CSS 박스 모델'이라고 하는데 각 박스 모델은 실제 내용이 들어가는 콘텐츠 영역과 테두리, 여백들로 구성됩니다.

 

블록 레벨 요소와 인라인 레벨 요소

블록레벨(block-level)요소는 태그를 사용해 요소를 삽입했을 때 혼자 한 줄을 차지하는 요소입니다.

너비나 마진, 패딩 등을 이용해 크기나 위치를 지정하려면 블록 레벨 요소여야 합니다.

반면, 인라인 레벨(inline-level)요소는 줄을 차지하지 않는 요소입니다. 화면에 표시되는 콘텐츠만큼만 영역을 차지하고 나머지 공간에넌 다른요소가 올 수 있습니다.

종류 해당 태그
블록 레벨 태그 <p>, <h1>~<h2>, <ul>, <div>, <blockquote>, <form>, <hr>, <table>, <fieldset>, <address>
인라인 레벨 태그 <img>, <object>, <br>, <sub>, <span>, <input>, <textarea>, <label>, <button>

이 중 input, textarea, label태그는 display:를 이용해서 넓이와 높이를 블록태그처럼 지정 가능하다.

 

※박스 모델(box model)

박스 형태의 콘텐츠

웹 문서의 블록레벨 요소들은 모두 박스 형태입니다. 스타일시트에서는 박스 형태인 요소를 박스모델(boxmodel)요소라고 부릅니다.

박스 모델은 실제 콘텐츠 영역, 박스와 콘텐츠 영역 사이의 여백인 패딩(padding) 그리고 여러 박스 모델 사이의 여백인 마진(margin) 등의 요소로 구성됩니다. 

테두리, 마진은 각각 상하좌우 네 방향으로 나뉘어져 있어 네 방향의 스타일을 따로 설젛알 수 있습니다.

 

width, height 속성

콘텐츠 영역의 크기

기본형 설명
width: <크기> | <백분율> | auto 너비를 속성값에 따라 지정한다.
height: <크기> | <백분율> | auto 높이를 속성값에 따라 지정한다.
속성 값 설명
<크기> 너비나 높이값을 px(픽셀)이나 cm(센티미터) 같은 단위와 함께 수치로 지정합니다.
<백분율> 박스 모델을 포함하는 부모 요소를 기준으로 너비나 높이 값을 백분율(%)로 지정합니다.
auto 박스 모델의 너비와 높이 값이 콘텐츠 양에 따라 자동으로 결정됩니다. 기본값입니다.

 

실제 콘텐츠 크기 계산하기

내벼유백+테두리값에 따라 증가할 수 있다.

모던 브라우저에서 박스 모델의 전체 너비 = width 값 + 좌우 패딩 + 좌우 테두리
인터넷 익스플로러 6에서 박스 모델의 width 값= 콘텐츠 너비 + 좌우 패딩 + 좌우 테두리

 

display 속성

화면 배치 방법 결정하기

기본형 설명
display: block; 해당 요소를 블럭 레벨로 지정합니다.
display: inline; 블록 레벨 요소를 인라인 레벨로 바꿀 수 있습니다.
display: inline-block; 요소를 인라인 레벨로 배치하면서 내용에는 블록 레벨 속성을 지정하고 싶을 때 사용한다.
display: none; 해당 요소를 화면에 표시하지 않고 공간도 차지하지 않습니다
display: contents;  
display: table;  
display: table-cell;  

display: none;과 visibility:hidden;과 다른점은 visibility:hidden은 공간을 차지합니다.

 

기타 display 속성 값들

속성 값 설명
inherit 상위 요소의 display 속성을 상속받습니다.
table 블록 레벨의 표로 만듭니다.
inline-table 인라인 레벨의 표로 만듭니다
table-row 표의 행으로 만듭니다
table-row-group 표의 행 그룹으로 만듭니다.
table-header-group 표의 제목 영역(header)그룹으로 만듭니다.
table-footer-group 표의 요약 영역(footer)그룹으로 만듭니다.
table-column 표의 열로 만듭니다.
table-column-group 표의 열 그룹으로 만듭니다.
table-cell 표에서 하나의 셀로 만듭니다.
table-caption 표의 캡션을 만듭니다.
list-item 목록의 항목을 표시할 수 있도록 기본적인 블록 박스와 표시자를 만듭니다.

 

 

테두리 관련 속성들

border-style 속성

테두리 스타일 지정하기

기본형 설명
none 테두리가 나타나지 않습니다.(기본값)
hidden 테두리가 나타나지 않습니다. border-collapse:collpase일 경우, 다른 테두리도 표시되지 않습니다.
dashed 테두리를 짧은 선(직선으로 된 점선)으로 표시합니다.
dotted 테두리를 점선으로 표시합니다.
double 테두리를 이중선(겹선)으로 표시합니다. 두 선 사이의 간격은 border-width 값으로 지정합니다.
groove 테두리를 창에 조각한 것처럼 표시합니다. 홈이 파인듯 입체적으로 보입니다.(기본값)
inset border-collapse:separate일 경우, 전체 박스 테두리가 창에서 튀어나온 것처럼 표시되고 border-collapse:collpase일 경우, ridge와 똑같이 표시됩니다.
outset border-collapse:separate일 경우, 전체 박스 테두리가 창에서 튀어나온 것처럼 표시되고 border-collapse:collpase일 경우, ridge와 똑같이 표시됩니다.
ridge 테두리를 창에서 튀어나온 것처럼 표시합니다.
solid 테두리를 실선으로 표시합니다.

 

border-width속성

테두리 두께 지정하기

기본형 설명
border-top-width: <크기> | thin | medium | thick 위쪽 테두리 속성
border-right-width: <크기> | thin | medium | thick 오른쪽 테두리 속성
border-bottom-width: <크기> | thin | medium | thick 아래쪽 테두리 속성
border-left-width: <크기> | thin | medium | thick 왼쪽 테두리 속성
border-width: <크기> | thin | medium | thick 모든 방향 테두리 속성

 

border-color

테두리 색상 지정하기

기본형 설명
border-top-coor: <색상> 위쪽 테두리 색상
border-right-coor: <색상> 오른쪽 테두리 색상
border-bottom-coor: <색상> 아래쪽 테두리 색상
border-left-coor: <색상> 왼쪽 테두리 색상
border-coor: <색상> 모든 테두리의 색상

 

border 속성

테두리 스타일 묶어 지정하기

기본형 설명
border-top: <두께> <색상> <스타일> 위쪽 테두리 스타일을 묶어서 지정한다.
border-right: <두께> <색상> <스타일> 오른쪽 테두리 스타일을 묶어서 지정한다.
border-bottom: <두께> <색상> <스타일> 아래쪽 테두리 스타일을 묶어서 지정한다.
border-left: <두께> <색상> <스타일> 왼쪽 테두리 스타일을 묶어서 지정한다.
border: <두께> <색상> <스타일> 모든 테두리 스타일을 묶어서 지정한다.

 

border-radius 속성

박스 모서리 둥글게 만들기

기본형 설명
border-top-left-radius: <크기> | <백분율> 왼쪽위의 원의 크기와 백분율을 지정한다.
border-top-right-radius: <크기> | <백분율> 오른쪽위의 크기와 백분율을 지정한다.
border-bottom-right-radius: <크기> | <백분율> 오른쪽아래의 크기와 백분율을 지정한다.
border-bottom-left-radius: <크기> | <백분율> 왼쪽아래의 크기와 백분율을 지정한다.
border-radius: <크기> | <백분율> 모든 모서리의 크기와 백분율을 지절한다.

모서리 원의 반지름이 border-radius 속성값이 됩니다.

속성 값 설명
<크기> 둥글게 처리할 반지름 크기를 px이나 em 같은 단위와 함께 수치로 표시합니다.
<백분율> 현재 요소의 크기를 기준으로 둥글게 처리할 반지름의 크기를 %로 지정합니다.

 

타원 형태로 둥글게 만들기

기본형 설명
border-top-left-radius: <가로 크기> <세로 크기> 왼쪽위모서리의 타원형으로 가로, 세로크기를 지정한다.
border-top-right-radius: <가로 크기> <세로 크기> 오른쪽위모서리의 타원형으로 가로, 세로크기를 지정한다.
border-bottom-right-radius: <가로 크기> <세로 크기> 오른쪽아래모서리의 타원형으로 가로, 세로크기를 지정한다.
border-bottom-left-radius: <가로 크기> <세로 크기> 왼쪽아래모서리의 타원형으로 가로, 세로크기를 지정한다.
border-radius: <가로 크기> <세로 크기> 모든곳모서리의 타원형으로 가로, 세로크기를 지정한다.

 

box-shadow 속성

기본형 설명
box-shadow: none | <그림자 값> [, <그림자 값>];
<그림자값> = <수평 거리> <수직 거리> <흐림 정도> <번짐 정도> <색상> inset
선택한 요소에 그림자 효과를 낼 수 있다.
속성 값 설명
<수평 거리> 그림자의 수평 옵셋 거리(수평으로 얼마나 떨어져 있는지)입니다. 양수 값은 요소의 오른쪽, 음수 값은 요소의 왼쪽에 그림자를 만듭니다. (필수 속성)
<수직 거리> 구림자의 수직 옵셋 거리(세로로 얼마나 떨어져 있는지)입니다. 양수 값은 요소의 아래쪽, 음수 값은 요소의 위쪽에 그림자를 만듭니다.(필수 속성)
<흐림 정도> 그림자의 흐림 정도(blur radius)를 지정합니다. 이 값을 생략하면 0을 기본값으로 해 진한 그림자를 표시합니다.이 값이 커질수록 부드러운 그림자를 표시하며 음수값은 사용할 수 없습니다.
<번짐 정도> 그림자의 번지는 정도를 나타냅니다. 양수 값을 사용하면 그림자가 모든 방향으로 퍼져나가기 때문에 그림자가 박스보다 크게 표시됩니다. 음수 값은 모든 방향으로 축소되어 보입니다. 기본값은 0입니다.
<색상> 그림자의 색상을 지정합니다. 한 가지만 지정할 수도 있고 공백으로 구분해 여러 개의 색상을 지정할 수도 있습니다. 필요한 경우에만 사용하는 옵션 값이며 기본 값은 현재 글자 색입니다.
inset 이 키워드를 함께 표시하면 안쪽 그림자로 그립니다. 필요한 경우에만 사용하는 옵션입니다.

 

 

 

여백을 조절하는 속성들

margin 속성

요소 주변 여백 설정하기 

기본형 설명
margin-top: <크기> | <백분율> | auto 위쪽 한 요소와 다른요소의 여백을 조절한다.
margin-right: <크기> | <백분율> | auto 오른쪽 한 요소와 다른요소의 여백을 조절한다.
margin-bottom: <크기> | <백분율> | auto 아래쪽 한 요소와 다른요소의 여백을 조절한다.
margin-left: <크기> | <백분율> | auto 왼쪽 한 요소와 다른요소의 여백을 조절한다.
margin: <크기> | <백분율> | auto 모든 한 요소와 다른요소의 여백을 조절한다.
속성 값 설명
<크기> 너비나 높이 값을 px(픽셀)이나 cm(센티미터) 같은 단위와 함께 수치로 지정합니다.
<백분율> 박스 모델을 포함하고 있는 부모 요소를 기준으로 너비나 높이 값을 %로 지정합니다.
auto display 속성에서 지정한 값에 맞게 적절한 값을 자동으로 지정합니다.

margin 속성을 이용해 마진 값을 한꺼번에 설정할때는 값의 개수에 따라 어느 방향에 적용될지 결정됩니다.

(한개면 전체 두개면 상하+좌우 세개면 top + (right+left) + bottom)

top > right > bottom > left순으로 지정됩니다.

 

padding속성

콘텐츠 영역과 테두리 사이 여백 설정하기

패딩(padding)이란 콘텐츠 영역과 테두리 사이의 여백을 말합니다.

기본형 설명
padding-top: <크기> | <백분율> | auto 위쪽의 콘텐츠-테두리사이의 여백을 조절한다.
padding-right: <크기> | <백분율> | auto 오른쪽의 콘텐츠-테두리사이의 여백을 조절한다.
padding-bottom: <크기> | <백분율> | auto 아래쪽의 콘텐츠-테두리사이의 여백을 조절한다.
padding-left: <크기> | <백분율> | auto 왼쪽의 콘텐츠-테두리사이의 여백을 조절한다.
padding: <크기> | <백분율> | auto 모든 방향의 콘텐츠-테두리사이의 여백을 조절한다.

 

'HTML > CSS 박스 모델' 카테고리의 다른 글

CSS 박스 모델 예제  (0) 2021.08.15

+ Recent posts