2022.04.06

CSS 선택자

  1. 전체 선택자(universal)
    에스터리스크(*)는 페이지에 있는 전체 요소를 대상으로 함

     * { 
     margin: 0; 
     padding: 0; 
     text-decoration: none; 
     } 
     # ul아래 자식 선택자에게 도사용 가능 
     ul * { 
     color: tomato; 
     }
  2. 아이디 선택자(id)
    샵(#)은 id를 대상으로 함. id선택자는 유연성이 없어서 재활용 불가

     #id {
         width: 300px;
     }
  3. 클래스 선택자(class)
    닷(.)은 class 선택자. 여러개의 요소를 대상으로 정할 수 있음

     .class {
         color: aqua;
     }
  4. 타입 선택자(type)
    element(요소)를 선택자로 하는 것
    body, p, span, h1, ol, header등......

     p {
         font-size: 16px;
     }
     span {
         color: tomato;
     }
  5. 하위 선택자(descendant)
    하위 선택자는 공백으로 분리된 두개 이상의 선택자들로 만들어짐
    body안에 있는 span태그 모두 선택됨

     # html문서
         <body>
           <span>tomato1</span>
           <div>
             <span>tomato2</span>
           </div>
           <span>tomato3</span>
         </body>
     # css문서
         body span {
             color: tomato;
         }
  6. 자식 선택자(child)
    '>'로 분리된 두개 이산의 선택자들로 만들어짐
    1depth아래의 자식들만 선택됨

     # html문서
     <body>
       <span>tomato1</span>
       <div>
         <span>tomato2</span>
       </div>
       <span>tomato3</span>
     </body>
     # css문서
     body > span {
       color: aqua;
     }    
  7. 인접 형제 선택자(adjacent sibling)
    '+'를 사용. 둘 다 같은 부모를 가지고 바로 뒤에 오는 요소에 적용됨
    tomato3가 color: tomato;가 적용됨

     # html문서
     <body>
       <span>tomato1</span>
       <div>
         <span>tomato2</span>
       </div>
       <span>tomato3</span>
       <span>tomato4</span>
       <span>tomato5</span>
     </body>
     # css 문서
       div + span {
         color: tomato;
       }
  8. 일반 형제 선택자(general sibling)
    '~(틸드)'를 사용. 둘 다 같은 부모를 가지고 바로 뒤에 오는 모든 요소에 적용됨
    tomato3,tomato4,tomato5에 color: tomato;가 적용됨

     # html문서
     <body>
       <span>tomato1</span>
       <div>
         <span>tomato2</span>
       </div>
       <span>tomato3</span>
       <span>tomato4</span>
       <span>tomato5</span>
     </body>
     # css 문서
       div + span {
         color: tomato;
       }
  9. 속성 선택자 (attribute)
    속성 선택자를 사용하면 특정 속성이나 특정 속성값을 가지고 있는 html요소를 선택할 수 있음

     *속성만 있는 경우
     * selector[attribute]
     # html문서
     <body>
       <span chagne>tomato1</span>
       <div>
         <span>tomato2</span>
       </div>
       <span>tomato3</span>
     </body>
     span[chagne] {
        background: black;
        color: tomato;
       }
     *속성에 값을 지정할 경우
     *selector[attribute value]
     # html문서
     <body>
       <span chagne>tomato1</span>
       <span chagne="banana" >tomato2</span>
       <span chagne>tomato3</span>
       <div>
         <span>tomato4</span>
       </div>
       <span>tomato5</span>
     </body>
     span[chagne="banana"] {
       background: black;
       color: yellow;
     }
  10. 가상 클래스(pseudo class)
    가상 클래스는 스타일이 적용되는 대상이 요소나 속성, 속성값에 따라 분류되는게 아니라 '상황'에 따라 분류된다

    • :first-child
      ul에 첫번째 li에만 color가 적용됨
      <body>
      <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
      </body>
      ul > li:first-child {
      color: cadetblue;
      }
    • :last-child
      ul에 마지막 li에만 color가 적용됨
      <body>
      <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
      </body>
      ul > li:last-child {
      color: cadetblue;
      }
    • :nth-child(n)
      ul에 마지막 3번째에 color가 적용됨
      <body>
      <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
        <li>5</li>
      </ul>
      </body>
      ul > li:nth-child(3) {
      color: cadetblue;
      }
    • :link
      아직 방문한적 없는 링크에 적용됨
      <body>
      <ul>
        <li><a href=#>link<a></li>
      </ul>
      </body>
      a:link {
      color: violet;
      }
    • :hover
      마우스를 올렸을때 적용됨
      <body>
      <ul>
        <li><a href=#>link<a></li>
      </ul>
      </body>
      a:hover {
      color: violet;
      }
    • :active
      마우스를 클릭하고 있을때 적용됨
      <body>
      <ul>
        <li><a href=#>link<a></li>
      </ul>
      </body>
      a:active {
      color: violet;
      }
    • :focus
      입력 양식(대표적으로 input)에 마우스를 클릭하고 입력하는 동안 적용됨
      <body>
      <input>
      </body>
      input:active {
      color: violet;
      }
    • :not
      이미 지정된 css스타일에서 특정한 요소를 제외시킬때 사용(선택을 하지 않기 위해 사용)
      선택할 요소:not(제외시킬요소): {}
      <div>
       <p>tomato</p>
       <p class="disabled">not tomato</p>
      </div>
      div p:not(.disabled) {
       color: tomato;
      }
  11. 가상 요소(pesudo elemnet)
    가상 요소 섵낵자는 앞에 콜론이 두개 붙는게 웹 표준
    항상 content: ""; --> 항상 넣어줘야함
    ::before,::after는 inline 요소기 때문에 display:block;을 해줘야 가로세로값이 적용됨
    ::after

    요소 앞에 내용을 삽입

    ::before

    요소 뒤에 내용을 삽입
    <body>
    <div>
      <p>Hello</p>
    </div>
    </body>
    p {
      color: tomato;
    }
    p::before {
      content:'Hi ';
      color: lime;
    }
    p::after {
      content: ' World';
      color: violet;
    }
  12. 상속(inheritance)
    하위 요소에 어떤 css 속성을 명시하지 않는 경우, 기본적으로 상위 요소에 적용된 스타일이 하위 요소에도 적용되는 것

    <body>
    <div>
      <h3>Hello</h3>
      <p>Hello</p>
    </div>
    </body>
    div {
      color: tomato;
    }
    p {
      color: inherit;
    }

'프론트엔드 > CSS' 카테고리의 다른 글

CSS filter속성  (0) 2022.04.13
가상클래스(pesudo class)와 가상요소(pesudo element)  (0) 2022.04.08
CSS초기화 reset.css 및 CSS 말줄임 표시방법  (0) 2022.04.07
CSS 속성  (0) 2022.04.06
CSS 선언방식  (0) 2022.04.06

2022.04.04

프론트엔드

HTML, CSS, JS를 사용해 데이터를 그래픽 사용자 인터페이스(GUI)로 변환하고, 
그것으로 사용자와 상호작용 할 수 있도록 하는 것
즉 웹페이지를 만들어 사용자가에게 보여주는 것

프론트엔드 개발기술

  • HTML(Hyper Text Markup Language 하이퍼텍스트 마크업 언어)
  • 우리가 보는 **웹페이지가 어떻게 구조화**되어 있는지 브라우저로 하여금 알 수 있도록 하는 마크업 언어
  • CSS(Cascading Style Sheets)
  • 실제 화면에 표시되는 방법(색상, 크기, 폰트, 레이아웃 등)을 지정해 콘텐츠를 꾸며주는 **시각적인 표현(정적)**담당
  • JS(JavaScript)
  • 콘텐츠를 바꾸고 움직이는 등 페이지를 동작시키는 **동적 처리** 담당
웹의 동작방식
1. 브라우저(크롬, 엣지, 파이어폭스, 오페라, 스윙, 웨일, 사파리)를 연다
2. 통신 프로토콜(communication protocol)은 원거리 통신 장비 사이에서 메세지를 주고 받는 양식 및 규칙의 체계
    (대표적으로 http, https, ftp, ssl)
3. 최초 요청(request)이 서버로 들어감
4. 최초 응답(response) 기본적인 html이 응답됨
5. 추가요청이 들어오면 추가응답을 해줌 (css, js, jpg ...)
웹 표준
# 웹에서 사용되는 표준 기술이나 규칙
    기술이나 규칙은 누가 정하나? W3C에서 제정한다
# W3C 표준화 제정 단계
    1. 초안
    2. 후보권고안
    3. 제안권고안
    4. 권고안
# Corss Browsing(크로스 브라우징)이란?
    어느 한쪽에 최적화되어 치우치지 않도록 공통 요소를 사용하여 웹 페이지를 제작하는 기법
    지원할 수 없는 다른 웹 브라우저를 위한 장치를 구현하여 모든 웹 브라우저 사용자가 방문했을 때 
    정보로서의 소외감을 느끼지 않도록 하는 방법론적 가이드
웹 이미지
  • 비트맵(Bitmap)

      픽셀들이 모여서 만들어짐 rater(.jpeg, .gif, .png) 
      정교하고 다양한 색상을 자연스럽게 표현 
      확대/축소시 계단현상, 품질 저하
    * jpg(jpeg)
        손실 압축. 저장을 할때마다 이미지 손실이 되기때문에 조심해야함
        표현색상 24비트 약 1600만 색상, 이미지 품질, 용량 쉽게 조절가능
        투명도가 지원되지 않기때문에 흰색 영역이 포함되고 싶지 않으면 png로
    * png
        비손실 압축
        8비트(256색상),24비트(약 1600만 색상)컬러
        Alpha channel 지원(투명도)
    * gif
        이미지 파일 내에 이미지 및 문자열 같은 정보들을 저장(움짤, 애니메이션)
        8비트 색상(256) 다양한 색상표현을 할 수는 없음
    * wepb
        jpg, png, gif를 모두 대체할 수 있는 구글이 개발한 이미지 포맷 
        손실/비손실 압축 동시 지원
        gif 같은 애니메이션 지원
        alpha channel 지원(손실,비손실 모두)
        나온지 별로 안됐기 때문에 하위호환성을 꼭 확인해야함
  • 백터(Vector)

    점, 선, 면 등 수학적 정보의 형태로 이루어진 이미지 
    정교한 이미지를 표현하기 어려우나 수학적인 정보로 이루어져있기 때문에 확대/축소에서 자유로움
    용량 변화가 거의없음 로고, 아이콘 등 material design은 고품질 디지털 경험을 구축할 수 있도록 
    google에서 만든 디자인 시스템(방식) 주로 확장자가 .svg 
    색상이나 일부 영역의 추가/제거 혹은 간단한 형태 생성 정도로 가볍게 사용

+ Recent posts