메모내용
nav

CSS Attribute ( 속성 )

속성 개요

: 속성은 태그를 꾸미거나 위치를 조정하거나, 영역 및 레이아웃등을 설정하기 위한 값으로
  • <TagName style="속성:값; 속성:값; 속성:값...">
  • <style> 선택자:{속성:값 ; 속성:값 ; 속성:값; ...} </style>
  • <script> element.style.속성 = "값" </script>
  • <link rel="stylesheet" href="./style.css">
이 네가지 방법중 하나를 선택하여 속성을 줄 수 있습니다

왠만하면 class 로 설정하여 <style> 태그 내에서 속성을 주거나 CSS 파일로 빼서 관리하는것이 좋습니다. 왜냐하면 최대한 의존성을 얕게 유지하기 위해서 인데, html 파일을 나중에 React 및 NextJS 로 옮긴다거나 할때 style 태그의 적용방식이 달라질 수 있습니다. 이때 수정해주지 않으면 에러를 발생시킬 수 있습니다. class 를 설정하여 최대한 의존성을 제거하면 다른 환경에서 css 나 js 파일이 없더라도 에러 없이 표시 될 수 있습니다

사이즈 단위

  • px
    • 고정된 길이 단위
    • 기본적으로 16px 이 적용되어 있다.
  • rem
    • root 의 font size 에 대한 상대단위
    • 기본적으로 root 의 fontsize 는 16px 이다
    • 1rem = (root fontsize)*1 px 이다
      • root 의 fontsize 가 16px 일때, 1rem = 16*1 = 16px;
      • root 의 fontsize 가 16px 일때, 1.5rem = 16*1.5 = 24px;
      • root 의 fontsize 가 20px 일때, 1rem = 20*1 = 20px;
      • root 의 fontsize 가 32px 일때, 2rem = 32*2 = 64px;
  • em
    • 현재 태그의 fontsize 에 대한 상대 단위
    • 1em = (현재 태그의 fontsize)*1 px 이다
      • 현재 태그의 폰트사이즈가 16px 일때, 1em = 16*1 = 16px
      • 현재 태그의 폰트사이즈가 16px 일때, 2em = 16*2 = 32px
      • 현재 태그의 폰트사이즈가 16px 일때, 2.5em = 16*2.5 = 40px
    • 보통 패딩값을 조정하는데 많이 사용한다.(권장이지 필수가 아니다. 디자이너의 자유) css 의 단위인 em 은 폰트사이즈를 기준으로 하며, 그렇다면 패딩도 폰트사이즈를 기준으로 설정해야 되지 않을까. 안의 글자에 대한, 여백 비율로서 생각하는것이 좀더 적합하다 생각된다.

position

: 태그(엘리먼트) 의 위치의 기준 을 설정하기 위한 속성입니다.

검증도 필요하다

  • position : static

  • static(정적 : 움직이지 않는) 으로 가장 기본적으로 적용되는 옵션입니다.

  • position : fixed

  • 스크롤바의 이동에 상관없이 화면 기준으로 고정된다.

  • position : absolute

  • 상위 태그 기준으로 절대적인 위치에 위치하게 된다.
    하지만 상위태그가 { position : static, absolute } 이면 무시하고, 더 상위의 태그를 기준으로 한다.
    가장 먼저 찾은 상위태그 { position : relative } 를 기준으로 움직인다

  • position : relative

  • 원래 있어야 했던 자리 기준으로 위치하게 됩니다.

display

: 태그(엘리먼트) 의 영역 을 설정하기 위한 속성
  • display : inline

    • 딱 내용물의 크기 만큼만 영역을 차지하는 옵션
    • 크기를 지정할 수 없다
    • 옆에 다른 태그(엘리먼트) 가 올 수 있다.
    • 예시 : <span> <strong>
  • display : block

    • 한줄 모두 차지하는 옵션
    • 크기를 지정할 수 있으나, 크기를 지정해도 어쨌든 옆에 다른 태그가 위치할 수 없게 혼자 차지합니다.
    • 예시 : <div>, <p>, <section>, <h1>
  • display : inline-block

    • inline 과 block 을 섞어놓은 듯한 옵션
    • 크기를 지정할수 있으면서도 옆에 다른 태그가 올 수 있는 옵션
  • display : flex

    • 내용에 따라 크기가 정해지는 inline-block 상태가 되며; 크기를 설정할 수 있게 됩니다.
    • 안의 내용물을 정렬할 수 있는 속성입니다.
  • display : grid

    • Element 영역을 그리드를 사용해서 영역을 나눈다
    • grid-template-columns 속성을 추가하여 가로 영역을 나눌 수 있으며
    • grid-template-row 속성을 사용하여 세로 영역을 나눌 수 있다
    display: grid;
    grid-template-columns: 50% 50%;
    display: grid;
    grid-template-row: 50% 50%;

CSS 변수 사용법

변수 사용

                        

                            /* :root 에서 선언하면 전역으로 사용할 수 있다  */
                            :root{
                                --전역변수명 : rgba(100,100,100,0.3);
                            }

                            /* div 또는 특정 태그내에서 선언해줄 수 있다 */
                            .div{

                                /* 변수의 선언은 '--변수명:값' 의 형태로 선언하면 된다 */
                                --변수명 : 5px; /* 픽셀값 저장 */

                                --변수명2 : rgba(40, 40, 40, 0.3); /* 색상도 저장할 수 있다 */

                                --변수명3 : clac(4rem + 1px); /* 연산 결과 저장 : 4rem + 1px = 16*4px + 1px  = 64px + 1px = 65px */


                                /* 변수의 사용은 'var(--변수명)' 으로 적어주면 된다 */
                                background-color : var(--변수명2); /* rgba(40,40,40,0.3) 으로 대체된다 */

                                background-color : var(--전역변수명); /* 전역변수도 사용할 수 있다 */
                            }
                        
                    

Grid

Tip

화면 폭이 좁아질 때 문제가 생길 수 있으니 class 로 따로 빼서 mediaQuery 를 체크하여 화면의 길이에 따라 변화하도록 설정하는것이 좋다.

repeating-linear-gradient

.div1
.div2
.div3
끝점의 색상은 , 를 적지 않도록 주의합니다
                        
                            .div1{
                                background: repeating-linear-gradient(
                                    90deg,          /* 90 도 각도*/
                                    red,            /* 빨강으로 시작 */
                                    black           /* 검정으로 끝 */
                                );
                            }

                            .div2{
                                background: repeating-linear-gradient(
                                    90deg, 
                                    red,
                                    black,
                                    red
                                ); */
                            }

                            .div3{
                                background: repeating-linear-gradient(
                                    90deg,
                                    red,                /* 시작점 */
                                    black 25px,        /* 125px 부터 검정 */
                                    black 50px         /* 끝지점은 100px -> 이후 반복*/
                                );
                            }