본문 바로가기
TIL

2024.02.21 2일차 CSS

by Song.dev 2024. 2. 21.

 

1. HTML 문서와 CSS 파일 연결

<link rel="stylesheet" href="index.css" />
<link rel="stylesheet" href="layout.css" />

하나의 HTML 문서에 여러 CSS 파일을 적용할 수 있다

 

2. 텍스트

   테두리

 

border-radius - CSS: Cascading Style Sheets | MDN

The border-radius CSS property rounds the corners of an element's outer border edge. You can set a single radius to make circular corners, or two radii to make elliptical corners.

developer.mozilla.org

  글꼴

  • 글자의 크기: font-size
  • 굵기: font-weight
  • 밑줄, 가로줄: text-decoration
  • 자간: letter-spacing
  • 행간: line-height

    * 웹폰트
      구글폰트 사용 시 html, css 모두 변경해야 함
      https://fonts.google.com/?subset=korean&noto.script=Kore

 

  정렬

  • 가로 정렬: text-align / 값: left, right, center, justify(양쪽 정렬)
  • 세로 정렬: vertical-align 속성 (부모 요소 display 속성이 반드시 table-cell이어야함)

 

 

3. 절대단위 & 상대단위

  • 절대 단위: px, pt 등 ex. 9pt = 12px
  • 상대 단위: %, em, rem, ch, vw, vh 등

   **rem

        - root의 글자 크기, 즉 브라우저의 기본 글자 크기가 1rem
        - 두 배로 크게 하고 싶다면 2rem, 작게 하려면 0.8rem 등으로 조절

        - 사용자가 설정한 기본 글꼴 크기를 따르므로, 접근성에 유리

        - 크롬 기본 글꼴 크기는 16px

     vs. em 은 부모 엘리먼트에 따라 상대적으로 크기가 변경

   * vw, wh : viewport width, viewport height

                     1vw = 1/100 viewport width  → 100vw, 100vh

 

4. 박스 모델

margin > border > padding > content

margin 음수값 : (ex. 카드 겹치는 효과)

박스를 벗어나는 컨텐트 :   https://codepen.io/oyeon-kwon/pen/zYBNxPL

 

  block inline-block inline
줄 바꿈 여부 줄 바꿈이 일어남 줄 바꿈이 일어나지 않음 줄 바꿈이 일어나지 않음
기본 너비 100% 글자가 차지하는 만큼 글자가 차지하는 만큼
width, height 사용 O/X 가능 가능 불가능

 

span(인라인속성) 은 width, height를 지정해도 박스의 크기를 변경할 수 없음

 

강제로 바꾸기 위해서는??

        display: inline-block; (크기만 조정O, 줄바꿈X)

 

 

5. 셀렉터 Selector

header > div { } /* header에 소속된 div 자식 */

header div { } /* header에 소속된 div 후손들 */

section ~ p { }
p ~ section { } /* p태그의 형제인 section을 선택 */

section + p { } /* section과 가장 가까운 형제인 p태그를 1개만 선택 */

 

 

      https://lucky-kor.github.io/css-selector/

 

 * 나중에 공부할 셀렉터

  • 가상 클래스 선택자
  • UI 요소 상태 선택자
  • 구조 가상 클래스 선택자
  • 부정 선택자
  • 정합성 확인 선택자

6. Flexbox

부모 요소에서 사용하는 Flexbox 속성

  • display: flex
  • flex-direction: row / row-reverse / column / column-reverse
  • flex-wrap : 하위 요소 크기 > 상위 요소 크기 → 자동 줄 바꿈 설정 nowrap , wrap , wrap-reverse
  • justify-content : 축 수평방향 정렬 flex-start , flex-end, center, space-between, space-around
                             left vs flex-start → start (flexbox가 2개 이상일 때 권장)
  • align-items : 축 수직 방향 정렬 stretch , flex-start , flex-end , center , baseline

 

 

자식 요소에서 사용하는 Flexbox 속성

flex:   <grow(팽창 지수)>    <shrink(수축 지수)>    <basis(기본 크기)>

#box1 {
    flex: 1 1 auto;
  }
  #box2 {
    flex: 0 1 auto;
  }
  #box3 {
    flex: 0 1 auto;
  } /* 1:0:0 기본크기를 제외하면 box1이 차지함 */

 


Q. 계산기 실습 중 양쪽 하단에 border-radious 속성이 적용되지 않는 현상 발생

A.

         현상 : div.container에서 적용한 border-radious 눈에 보이지 않음
         시도1 : .container 안에 있는 .input에 border-radious 적용

              → 결과 : 여전히 보이지 않음

         시도2 : 최하단 양 끝의 버튼의 모서리에 각각 border-radious 적용
              → 키패드 0, 키패드 = 에게 HTML에서 id를 부여 후 CSS에서 아래 사진과 같이 적용 

             → 결과 : border-radius 적용 완료

 

 

 


+ 궁금한 점 개인 학습

CSS 우선 순위 : 충돌 시 selector가 구체적일수록 우선순위가 높다

  1. 속성 값 + !important 
  2. 인라인 스타일 : HTML에서 태그 자체에 style 속성 지정
  3. 식별자 #id 
  4. 식별자 .클래스, :추상클래스
  5. 태그명
  6. 상위 객체에 의해 상속된 속성 
.checked { color: blue }
.unchecked { color: white !important }

 

  • HTML 에밋 단축키 → div.container>div.output 
  • SASS, SCSS : CSS 전처리기 ($변수, @for @if 등) → 추가 공부해보기