728x90

 

수업내용 정리 (VSCode - CSS)

 

1. 해당 태그에 직접 설정

<body>
    <!-- 인라인 방식: 다른 것보다 우선순위가 높지만 관리가 힘들다.
        같은 디자인을 입력하고 싶을 때 코드가 길어지고 귀찮음 -->
    <div style="color:rgb(118,118,180); margin: 40px; border: 1px solid rgb(25,25,112);">영역</div>
</body>
</html>
  • 인라인 방식
  • 다른 것보다 우선 순위가 높지만 관리가 힘들다.
  • 같은 디자인을 여러번 입력하고 싶을 때, 코드가 길어지고 귀찮다.

 

2. css 링크로 설정

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/myStyle.css">
    <!-- rel: 링크에 대한 관계 -->
</head>
<body>
    <div>영역2</div>
</body>
</html>
/* css */
div{
    color: rgb(118,118,180);
    margin: 100px;
    padding: 40;
    border: 1px solid rgb(25,25,112);
}
  • 링크를 직접 타이핑해도 되지만 ./ 치면 해당 폴더의 파일들이 뜨니 여기서 선택하는 것이 편하다.

 

 

3. 선택자

<body>
    <div>
        <ul>
            <li>사과</li>
            <li>딸기</li>
            <li id="orange" class="orange">오렌지</li>
        </ul>
        <div>당근</div>
        <p>토마토</p>
        <span class="orange">오렌지</span>
    </div>
</body>

 

 3-1) 기본 선택자

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 전체 선택자 */
        *{color: rgb(118,118,180)}
        /* 태그 선택자 */
        li{color: rgb(25,25,112);}
        /* 클래스 선택자 */
        .orange{color: rgb(0,0,0);}
        /* 아이디 선택자 */
        #orange{color: rgb(255,255,255);}
    </style>
</head>

  • 아이디>클래스>태그>전체 순으로 우선 순위를 가진다.
  • 밑으로 내려가면 동일한 부분은 덮어쓰기한다.

 

 3-2) 복합 선택자

    <style>
        /* 일치 선택자: 순서 바뀌면 안 됨 */
        /* span태그이면서 class가 oragne인것 / 띄어쓰기하면 전혀 다른 의미가 되어버림 */
        span.orange{
            color: rgb(25,25,118);
        }
        /* 자식 선택자 */
        ul>.orange{color: rgb(118,118,180);}
        /* 하위(후손) 선택자: 자식선택자보다 많이 사용 / div >후손< 중 클래스가 orange인 */
        div .orange{color: aliceblue;}
    </style>

  • 띄어쓰기에 주의할 것

 

 3-3) 복합 선택자2

<body>
    <ul>
        <li>딸기</li>
        <li>수박</li>
        <li class="orange">오렌지</li>
        <li>망고</li>
        <li>사과</li>
      </ul>
</body>
    <style>
        /* 인접 형제 선택자: .orange의 다음 형제 요소를 하나 선택 */
        .orange+li{
            color: rgb(118,118,180);
        }
        /* 일반 형제 선택자: .orange의 다음 형제 요소들을 선택 */
        .orange~li{
            color: rgb(25,25,120);
        }
    </style>

 

 

 

4. 선택자

 4-1) 가상클래스

.box{
    width: 100px;
    height: 100px;
    background-color: rgb(118, 118, 180);
    transition: 1s;
}
/* hover: 마우스를 올렸을때 */ /*hover, focus는 외울것*/
.box:hover{
    width: 300px;
    background-color: rgb(210, 222, 240);
}
.box:active{
    width: 300px;
    background-color: aliceblue;
}
.box:focus{
    width: 300px;
    background-color: aquamarine;
}
a:hover{
    color: rgb(118, 118, 180);
}
a:active{
    color: rgb(210, 222, 240);
}
a:active{
    color: aliceblue;
}
input:focus{
    background-color: azure;
}
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="./css/main.css">
</head>

<body>
    <div class="box" tabindex="1">tabindex속성으로 foucs 선택자 사용</div> <!--tabindex -1 : tab키 불가-->
    <a href="https://www.naver.com">네이버</a><br>
    <input type="text" name="id" />
</body>

 

 4-2) 가상클래스2

<body>
    <div class="fruits">
        <span>딸기</span>
        <span>수박</span>
        <div>오렌지</div>
        <p>망고</p>
        <h3>사과</h3>
      </div>
</body>
        /* .fruits의 후손 중에서 span이 첫 자식이면 선택 */
        .fruits span:first-child{
            color: rgb(118,118,180);
        }
        /* .fruits의 후손 중에서 div가 첫 자식이면 선택 (없음) */
        .fruits div:first-child{
            color: rgb(25,25,112);
        }
        /* .fruits의 후손 중에서 h3이 첫 자식이면 선택 */
        .fruits h3:first-child{
            color: rgb(155, 180, 222);
        }
        /* .fruits의 후손 중에서 두번째 자식을 선택 */
        .fruits *:nth-child(2){
            color: rgb(151, 199, 159);
        }
        /* .fruits의 후손 중에서 짝수번째 자식을 선택 */
        /* n은 0,1,2,....., 짝수번째 선택 */
        .fruits *:nth-child(2n){
            color: rgb(228, 166, 214);
        }
        /* .fruits의 후손 중에서 홀수번째 자식을 선택 / 1+2n 안 됨 */
        .fruits *:nth-child(2n+1){
            color: rgb(228, 166, 214);
        }
        /* .fruits의 후손 중에서 span이 아닌 자식 선택(부정선택자) */
        .fruits *:not(span){
            color: rgb(228, 166, 214);
        }

 

 4-3) 속성

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        /* 속성 선택자 */
        [disabled] {color: red;}

        [type] {color: blue;}

        /*따옴표 쓰는 것을 권장 */
        [type="password"] {color: aqua;}

        /*data속성 선택자 */
        [data-fruit-name] {color: coral;}

        button,
        [type="button"] {color: brown;}
    </style>
</head>

<body>
    <input type="text" value="cha">
    <input type="password" value="1234">
    <input type="text" value="ABCD" disabled>
    <span data-fruit-name="apple">사과</span>
    <button>btn1</button>
    <input type="button" value="btn2">
</body>

 

 4-4) 스타일 상속

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .animal {
      color: red;
    }

    /*강제 상속 css  */
    .parent {
      width: 300px;
      height: 200px;
      background-color: red;
    }

    .child {
      width: 100px;
      height: inherit;
      /*부모크기를 강제 상속함*/
      background-color: inherit;
      /*부모색상을 강제 상속함*/
      position: fixed;
      top: 100px;
      right: 10px;
    }
  </style>
</head>

<body>
  <!-- 상속되는 CSS 속성들
   -모든 글자/문자 관련 속성들!
   (모든 글자/문자 속성은 아님 주의!)
   font-style: 글자 기울기
   font-weight: 글자 두께
   font-size: 글자 크기
   line-height: 줄 높이(간격)
   font-family: 폰트(글꼴)
   color: 글자 색상
   text-align: 정렬
  ... -->
  <div class="ecosystem">생태계
    <div class="animal">동물
      <div class="tiger">호랑이</div>
      <div class="lion">사자</div>
      <div class="elephant">코끼리</div>
    </div>
    <div class="plant">식물</div>
  </div>
  <H3>강제 상속</H3>
  <div class="parent">
    <div class="child"></div>
  </div>
</body>

 

 4-5) 우선순위

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div{color: red !important;  } /* 무한메달*/
    #color_yellow{color:yellow;}  /* 금메달*/
    .color_green{color:green;}   /* 은메달*/
    div{color:blue;}             /* 동메달*/
    *{color:darkblue;}          /* 참가메달*/
    body{color:violet;}         /* 상속은 메달없음*/
  </style>
</head>

<body>
  <!-- 점수가 높은 선언이 우선함
  점수가 같으면 가장 마지막에 해석된 선언이 우선함 -->
  <div id="color_yellow" class="color_green"
    style="color: orange;">  <!--인라인: 특메달-->
    Hello world!
  </div>
</body>

 

 4-6) 우선순위2

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div{ font-size:70px;   }
    div.hello{color:green;}
    .hello{color:red !important;} /*인라인CSS와 함께 권장하지 않음*/
    *{ /*참가상*/   }
    div{ /*동메달*/   }
    .hello{/*은메달*/    }
    #hello{ /*금메달*/   }
  </style>
</head>

<body>
  <div id="hello" class="hello" style="color: orange">Hello World!</div>
</body>

 

 

5. 너비

<body>
 <div>DIV</div>
 <span>SPAN</span>
 <span>SPAN</span>
 <hr>
 <div class="parent">
  <div class="child"></div>
 </div> 
</body>
  <style>
     /* div의 기본값: width:auto; 브라우저 너비만큼 
        div의 기본값: height:auto; 컨텐츠 높이만큼 */
     /* div{
      width: 100px;
      height: 100px;
      background-color: orange; 
    }  */

    /* span의 기본값: width:auto; 컨텐츠(글자) 너비만큼 
       span의 기본값: height:auto; 기본값: 컨텐츠(글자) 높이만큼
       span은 보통 글자를 제어하므로 width, height적용되지 않음*/
    /* span{
       width: 100px; 
      height: 100px;
      background-color: aqua; 
    }*/

    /**** 위의 div css 주석후 실행 ****/
    .parent{
      /* 자식에서 max width 설정시 부모width는 auto 또는 크게 설정할것*/
      width:auto; 
      /* 자식에서 min width 설정시 부모width는 작게 설정할것*/
      /* width: 300px;  */
      height: 200px;
      background-color: blue;
    } 
    /*자식 div가 위로 배치됨*/
    .child{
      /*max(min)-width설정시 삭제 또는 width:auto로 설정*/
      /* width: 300px; */
      /*부모 너비(높이)를 벗어나지 않음, 기본값: none */
      max-width: 500px ;
      /*부모 너비(높이)를 벗어날 수 있음, 기본값: 0 */
      /* min-width: 400px; */
      height: 100px;
      background-color: yellow;
    }
  </style>

 

 

6. CSS 단위

<body>
  <div class="parent">
    <div class="child"></div>
   </div> 
</body>
  <style>
    /* px, %, em(요소글꼴의 크기), rem(root(html)요소 글꼴의 크기), vw,vh)
    0px==0%==0em==0rem==0  따라서 단위를 붙이지 않는다. */
    html{
      /* font-size: 16px; 브라우저 기본값 후손으로 상속됨*/
    }
    .parent{
      width: 300px; 
      height: 200px;
      background-color: blue;
      /* font-size: 10px; */
    }
    .child{
      /* width: 200px; */
      /* width: 50%; */
      /* width: 20em;   글꼴크기*20  */
      width: 20rem;   /*root(html)태그 글꼴크기*20  */
      height: 100px;
      background-color: yellow;
    }
  </style>

 

 

7. 여백

<body>
  <div class="container">
    <div class="item"></div>
    <div class="item"></div>
    <div class="item"></div>
  </div>
</body>

 7-1) 외부

  <style>
    .container .item{
      width: 100px;
      height: 100px;
      background-color:  orange;
      border: 4px solid red;
      /* 브라우저가 여백을 계산, 가로너비가 있을때 가운데 정렬됨 */
      /* margin: 0;  기본값 */
      /* margin: auto;   */
      /* 다른 여백에서도 사용되는 규칙 */
      /* margin-top,margin-bottom,margin-left,margin-right:10px */
      /* margin: 10px;  */
      /*top,bottom:10px, left,right:20px */
      /* margin: 10px 20px ; */
      /* top:10px, left,right:20px, bottom:30px  */
      /* margin: 10px 20px 30px; */
      /* top:10px, right:20px, bottom:30px, right:40px(시계방향) */
      /* margin: 10px 20px 30px 40px; */
      /* 음수값으로 겹치게 할수 있음 */
      /* margin:-20px 10px; */
    }
  </style>

 

 7-2) 내부

  <style>
    .container .item{
      width: 100px;
      height: 100px;
      background-color: orange;
      border: 4px solid red;
    }
    .container .item:first-child{
      /* margin과 같은 방식으로 여백지정 */
      padding: 20px;
    }
  </style>

 


728x90