HTML_CSS_JavaScript

Do it! HTML+CSS+자바스크립트 웹 표준의 정석 - ⑤

민주82 2023. 3. 1. 22:30

 

CSS 고급 선택자

 

간단한 웹 문서는 기본 선택자만으로도 스타일을 적용할 수 있지만, 소스가 길어지면 스타일을 지정할 때마다 id와 class가 계속 늘어나므로 그 이름을 모두 기억하기는 쉽지 않음 !!

 

 

고급 선택자

연결 선택자와 속성 선택자를 사용하여 소스의 위치나 속성값에 따라 특정 요소를 쉽게 선택하는 방법 

 

 

 

▽ 연결 선택자

 

종류 형식 설명
하위 선택자 상위요소 하위요소 상위 요소에 포함된 모든 하위 요소 선택
자식 선택자 부모요소 > 자식요소 부모 요소에 포함된 자식 요소만 선택
인접 형제 선택자 요소 1 + 요소 2 요소1 이후 맨 먼저 오는 형제 요소 선택
형제 선택자 요소 1 ~ 요소 2 요소1과 형제인 모든 요소 선택

 

 

 

 

▽ 속성 선택자

 

종류 선택 요소 예시
[속성] 해당 속성이 있는 요소 [required]
[속성 = 값] 지정한 속성값이 있는 요소 [target = _blank]
[속성 ~= 값] 지정한 속성값이 포함된 요소
(단어별)
[class ~= button]
[속성 |= 값] 지정한 속성값이 포함된 요소
(하이픈 포함, 단어별)
[title |= us]
[속성 ^= 값] 지정한 속성값으로 시작하는 요소 [title ^= eng]
[속성 $= 값] 지정한 속성값으로 끝나는 요소 [href $= xls]
[속성 *= 값] 지정한 속성값의 일부가 일치하는 요소 [href *= w3]

 

 

 

 

▽ 가상 클래스

 

종류 설명
: link 방문하지 않은 링크에 스타일을 적용
: visited 방문했던 링크에 스타일을 적용
: hover 지정한 요소에 마우스 포인터를 올려놓을 때 스타일을 적용
: active 지정한 요소를 활성화했을 때 스타일을 적용
: focus 지정한 요소에 초점이 맞춰졌을 때 스타일을 적용
: target 앵커 대상에 스타일을 적용
: enabled 지정한 요소를 사용할 수 있는 상태일 때 스타일을 적용
: disabled 지정한 요소를 사용할 수 없는 상태일 때 스타일을 적용
: checked 선택한 요소의 스타일을 적용
: not 지정한 요소가 아닐 때 선택해서 스타일을 적용

 

 

 

 

▽ 구조 가상 클래스

 

선택자 설명
: only-child 부모 안에 자식요소가 하나뿐일 때 자식요소 선택
A : only-type-of 부모 안에 A 요소가 하나뿐일 때 선택
: first-child 부모 안에 있는 모든 요소 중에서 첫번째 자식 요소 선택
: last-child 부모 안에 있는 모든 요소 중에서 마지막 자식 요소 선택
A : first-of-type 부모 안에 있는 A 요소 중에서 첫 번째 요소 선택
A : last-of-type 부모 안에 있는 A 요소 중에서 마지막 요소 선택
: nth-child(n) 부모 안에 있는 모든 요소 중에서 n 번째 자식 요소 선택
: nth-last-child(n) 부모 안에 있는 모든 요소 중에서 끝에서
n 번째 자식 요소 선택
A : nth-of -type(n) 부모 안에 있는 A 요소 중에서 n 번째 요소 선택
A : nth-last-of -type(n) 부모 안에 있는 A 요소 중에서 끝에서
n 번째  요소 선택

 

 

 

 

▽ 가상 요소

 

선택자 설명
::first-line 첫 번째 줄을 선택
::first-letter 줄에서 첫 번째 글자 선택
::before 특정 요소의 앞에 내용이나 스타일 추가
::after 특정 요소의 뒤에 내용이나 스타일 추가

 

 

 

 

 

마무리 문제 ♥♡

 

 

 

 

1. 다음 조건에 맞게 첫 번째 이미지의 테두리 스타일만 수정하는 코드를 작성하세요.

 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>연습문제 1</title>  
  <style>
    img {
      margin-right:50px;
      border:1px solid #ccc;
      box-shadow: 2px 2px 5px #ccc;
    }
    img:first-of-type {
      border:2px solid #f00;
      /* border 의 색상과 두께를 따로 지정해도 됩니다.
      border-color:#f00;
      border-width: 2px;       
      */
    }
  </style>
</head>

<body>
  <img src="images/1.jpg" alt="">
  <img src="images/2.jpg" alt="">
  <img src="images/3.jpg" alt="">
</body>
</html>

 

 

 

 

 

 

2. 다음 조선에 맞는 메뉴 스타일을 추가하세요. 

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <title>연습문제 2</title>  
  <style>
    * {
      box-sizing: border-box;
    }
    .top-menu {
      margin:50px auto;
      padding:0;
      list-style:none;
      width:605px;
      height:35px;
      box-shadow:0 3px 4px #8b8b8b;
      background-color:#dadada;
    }
    .top-menu li {
      float:left;
      border-right:1px solid #929292;
    }
    .top-menu li a:link{
      color:black;
      text-decoration:none;
      text-align:center;
      display:block;
      width:100px;
      height:35px;
      line-height: 35px;
    }
    .top-menu li a:visited {
      color:black;
    }    
    .top-menu li:last-child {
      border-right:none;      
    }
    .top-menu li:not(:last-child) a:hover {
      background-color:#555;
      color:#fff;
    }
    .top-menu li:last-child a:hover {
      background-color:#b30000;
      color:#fff;
    }
  </style>
</head>

<body>
  <nav>
    <ul class="top-menu">
      <li><a href="#">메뉴1</a></li>
      <li><a href="#">메뉴2</a></li>
      <li><a href="#">메뉴3</a></li>
      <li><a href="#">메뉴4</a></li>
      <li><a href="#">메뉴5</a></li>
      <li><a href="#">메뉴6</a></li>
    </ul>
  </nav>
</body>
</html>