ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CSS] 선택자 심화 - 속성 값으로 선택, 가상 클래스, css 컨텐츠
    웹/CSS 2023. 1. 8. 07:02

    1. 특성 선택자

    👉 특성 선택자 MDN 문서

    /* 속성 값을 기준으로 선택 */
      color: #ff4e00;
      font-weight: bold;
    }

    /* 특정 속성이 있는 요소 선택 */
    input[disabled]+label {
      color: lightgray;
      text-decoration: line-through;
    }

    /* 속성값이 특정 텍스트를 포함하는 요소 */
    span[class*="item"] {
      text-decoration: underline;
    }

    /* 속성값이 특정 텍스트로 시작하는 요소 */
    span[class^="fruit"] {
      color: tomato;
    }
    span[class^="vege"] {
      color: olivedrab;
    }

    /* 속성값이 특정 텍스트로 끝나는 요소 */
    span[class$="-1"] {
      font-weight: bold;
    }

    2. 가상 클래스 

    👉 가상 클래스 MDN 문서

    /* 마우스오버 */
    a:hover {
      background-color: yellow;
    }
    /* 클릭중 */
    a:active {
      background-color: aqua;
    }

    /* 체크된 것 */
    input[type=radio]:checked+label {
      color: tomato;
      font-weight: bold;
    }
    /* 활성화된 것 */
    input[type=radio]:enabled+label {
      text-decoration: underline;
    }
    /* 비활성화된 것 */
    input[type=radio]:disabled+label {
      color: lightgray;
      text-decoration: line-through;
    }

     
     
    /* 인풋 등이 클릭되어 포커스된(입력을 받는) 상태 */
    input[type="text"]:focus {
      /* border 밖의 선 (박스 요소가 아님) */
      outline: 2px solid dodgerblue;
    }
    /* 필수 입력요소 */
    input:required {
      border-color: orangered;
    }
    /* 값이 유효한 입력요소 */
    input[type="email"]:valid {
      border-color: green;
    }
    /* 값이 무효한 입력요소 */
    input[type="email"]:not(:valid) {
      border-color: purple;
    }

    [class*="focus"]:focus {
      outline: 2px solid deeppink;
    }
    .tab-focus:focus,
    .no-focus:focus {
      outline: none;
    }
    /* 탭으로 포커스된 요소에 적용 */
    /* 브라우저 지원 확인 */
    [class*="tab-focus"]:focus-visible {
      outline: 2px solid dodgerblue;
    }

     타이핑 인풋 요소(예: 텍스트 인풋)들은 focus-visible을 사용해도 클릭과 탭 모두에 반응(아웃라인 표시 등)합니다.


    /* 부모 요소 내 첫 번째 ~요소 */
    b:first-of-type {
      text-decoration: overline;
    }
    /* 부모 요소 내 마지막 ~요소 */
    i:last-of-type {
      text-decoration: line-through;
    }
    /* 부모 요소 내 N번째 ~요소 */
    b:nth-of-type(2) {
      text-decoration: underline;
    }

    /* 부모 요소 내 유일한 ~요소 */
    div :only-of-type {
      text-decoration: overline line-through underline;
    }
    /* 부모 요소 내 종류 무관 유일한 요소 (독자) */
    div :only-child {
      text-decoration: wavy underline tomato;
    }

     


    li.later::after {
      content: '다음 강좌';
      margin-left: 0.6em;
      padding: 0.16em 0.36em;
      font-size: 0.72em;
      font-weight: bold;
      color: white;
      background-color: darkmagenta;
      border-radius: 0.2em;
    }

    /* 바로 앞에 가상의 요소 추가 */
    li::before {
      content: '';
      display: inline-block;
      margin: 0 0.4em;
      width: 0.8em;
      height: 0.8em;
      background-image: url(./check.png);
      background-size: contain;
    }

    /* 선택 영역 가상 요소 */
    .orange::selection {
      background-color: orange;
    }
    .dark::selection {
      color: lightgreen;
      background-color: #222;
    }

    /* 플레이스홀더 가상 요소 */
    input:required::placeholder {
      color: darkred;
      background-color: yellow;
    }

     

Designed by Tistory.