2022.04.15

img 아래쪽에 여백이 있는 이유

  • img는 inline요소. 글자를 취급하는 요소
  • baseline이라는 기준선이 존재하게 됨
  • 또한 inline요소는 margin, padding의 top, bottom 여백 값을 제대로 줄 수 없다
    해결방법
    display: block;
    vertical-align: bottom;

position

position: absolute, position:fixed

  • display: block;의 값을 갖고 있기때문에 해당css영역에 display: block;이 있으면 생략가능
  • viewport에 영향을 받아 width: auto; 가로너비가 줄어들려고 시도하기 때문에 width: 100%로 줄것

정렬방법

수직정렬

  1. 부모요소에 position: relative;를 주고 정렬을 시도하려는 영역에 position: absolute;
  2. 기준을 잡아줘야 하기 때문에 top: 0;, bottom: 0;으로 수직정렬
  3. margin: auto; 해주면 수직정렬완성(실제 이미지 크기아 같은 사이즈로 정확한 height값을 줘야함)

수평정렬

  1. 부모요소에 position: relative;를 주고 정렬을 시도하려는 영역에 position: absolute;
  2. 기준을 잡아줘야 하기 때문에 left: 0;, right: 0;으로 수직정렬
  3. margin: auto; 해주면 수직정렬완성(실제 이미지 크기아 같은 사이즈로 정확한 width값을 줘야함)

가운데정렬은 left, right, top, bottom값을 모두 0으로 주면 가능

<body>
  <div class="header">
    <div class="logo"></div>
  </div>
</body>
.header {
  background-color: pink;
  width: 600px;
  height: 600px;
  position: relative;
}

.header .logo {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  margin: auto;
  width: 50%;
  height: 50%;
  background-color: tomato;
}

CSS 메뉴 구분선

  • 가상요소 ::before, ::after사용
  • content: ""; 를 꼭 넣어줘야함
  • ::before, ::after은 inline요소
    <body>
    <ul class="menu">
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
    </ul>
    </body>
    .menu  {
    display: flex;
    list-style: none;
    }
    .menu li {
      padding: 0 20px;
      position: relative;
    }
    .menu li::before {
    content: "";
    width: 1px;
    height: 15px;
    background-color: black;
    top:0;
    bottom:0;
    left:0;
    position: absolute;
    margin: auto;
    }
    .menu li:first-child::before {
    display:none;
    }

CSS calc()

  • calc() 함수는 매개변수로 표현식 하나를 받고, 표현식의 겨로가가 최종값이 됨
  • 표현식은 단순 계산식은 무엇이든 가능
  • 표준 연산자 우선순위를 따름
  • +(덧셈), -(뺄셈)연사자는 좌우에 공백이 있어야함
  • *(곱셈), /(나눗셈)은 좌우 공백 필요없음

FHD = 1920 x 1080

비율 16 : 9 = 100% : 56.25%

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

CSS Grid속성  (0) 2022.04.13
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

2022.04.12

CSS Grid

  • 1차원 레이아웃 flex속성(수직, 수평중 택1)와 다르게 grid는 2차원 레이아웃(수직, 수평 둘다 가능)
    grid는 두 방향으로 레이아웃 할 수 있음
  • grid는 flex와 같이 container(부모요소)와 item(자식요소)으로 구분이 됨

용어정리

  • Grid Track(그리드 트랙): grid의 행(row) 또는 열(column)
  • Grid Line(그리드 라인): 행과 열 사이사이에 있는 너비. gutter라고도 함
  • Grid Cell(그리드 셀): grid 하나의 칸. 아이템들이 들어갈 수 있는 하나의 공간
  • Grid Area(그리드 여역): 셀로 이루어진 영역(셀들의 집합)
  • Grid Gap(그리드 갭): grid 셀 사이의 간격

Grid Container

  • grid는 컨테이너에 display: grid; 를 주면서 시작됨
      .container {
          display: grid;
          }
  • 그리드 트랙의 크기들을 지정해 주는 속성.
    단위는 px, fr(=fraction으로 숫자 비율대로 트랙의 크기를 나눠줌)
    repeat함수: repeat(개수, 비율)반복되는 값을 자동으로 처리할 수 있음
    minmax함수: 최솟값과 최댓값 지정
    auto-fill, auto-fit: column개수를 정하지 않고 설정된 너비가 허용하는 한 최대한 셀을 채우는것. auto-fit은 그리드 컨테이너 내부에 공간이 남을 경우, 그 공간을 각 셀들이 나눠 갖는다
    grid-template-rows: 그리드 행 배치
    grid-template-columns: 그리드 열 배치
    //고정크기와 가변크기를 섞어 쓸 수 있음
      grid-template-columns: 200px 2fr 1fr;
    //repeat(반복횟수, 반복값)
      grid-template-columns: repeat(5, 1fr);
    //minmax
      grid-template-row: repeat(3, minmax(100px, auto);
      최소100px는 확보하며, 100px넘거나면 auto처리    
  • gap

    그리드 셀 사이의 간격을 설정

      //row 간격 5px
      row-gap: 5px;
      //column 간격 5px
      column-gap: 5px;
      //row-gap:10px, column-gap:5px;
      gap: 10px 5px;
  • grid-auto-colums, grid-auto-rows:트랙의 크기를 지정하지 않고 자동으로 늘려줌

  • gird-column, grid-row

gird-column

<!DOCTYPE html>
<html>
<head>
<style>
.grid-container {
  display: grid;
  grid-template-columns: repeat(4, auto);
  grid-gap: 5px;
  background-color: pink;
  padding: 10px;
}
.grid-container > div {
  background-color: tomato;
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}
.item1 {
  grid-column: 1 / 3;
}
</style>
</head>
<body>
<div class="grid-container">
  <div class="item1">1</div>
  <div class="item2">2</div>
  <div class="item3">3</div>  
  <div class="item4">4</div>
  <div class="item5">5</div>
  <div class="item6">6</div>
  <div class="item7">7</div>
</div>

</body>
</html>

grid-row

<!DOCTYPE html>
<html>
<head>
<style>
.grid-container {
  display: grid;
  grid-template-columns: repeat(4, auto);
  grid-gap: 5px;
  background-color: pink;
  padding: 10px;
}

.grid-container > div {
  background-color: tomato;
  text-align: center;
  padding: 20px 0;
  font-size: 30px;
}

.item1 {
  grid-column: 3 / 5;
  grid-row: 2 / 3;
}
</style>
</head>
<body>



<div class="grid-container">
  <div class="item1">1</div>
  <div class="item2">2</div>
  <div class="item3">3</div>  
  <div class="item4">4</div>
  <div class="item5">5</div>
  <div class="item6">6</div>
  <div class="item7">7</div>
</div>

</body>
</html>

몇 개의 셀을 차지하게 할것인지를 지정해줄수도 있음

    // 1번라인에서 2칸
    grid-column: 1 /span 2;
    // 1번 라인에서 4칸
    grid-row: 1 / span 4;
  • grid-template-areas: 각 영역(grid area)에 이름을 붙이고, 그 이름을 이용해서 배치하는 방법으로 매우 직관적
<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .container {
      width: 500px;
      display: grid;
      grid-template-columns: 2fr 1fr;
      grid-template-rows: 100px 200px 100px;
      border: 4px solid;
      grid-template-areas: 
      "header header" 
      "main nav" 
      "footer footer";
    }

    .item {
      border: 1px solid;
    }

    .item:nth-child(1) {
      grid-area: header;  
    }
    .item:nth-child(2) {
      grid-area: main;
    }
    .item:nth-child(3) {
      grid-area: nav;
    }
    .item:nth-child(4) {
      grid-area: footer;
    }
  </style>
</head>
<body>
  <div class="container">
    <div class="item">1 header</div>
    <div class="item">2 main</div>
    <div class="item">3 nav</div>
    <div class="item">4 footer</div>
  </div>
</body>
</html>

  • grid-auto-flow: 아이템이 자동 배치되는 흐름을 결정하는 속성

    // dense는 남은 셀의 공간을 채우게함. 
    grid-auto-flow:(row생략가능) dense;
    // column dense로 줄 경우 수직으로 남은 셀 공간을 채우게 됨
    grid-auto-flow: column dense;
  • 세로 방향 정렬
    align-items: 아이템을 세로방향으로 정렬

      .container {
          align-items: stretch;
          align-items: start;
          align-items: center;
          align-items: end;
      }
  • 가로 방향 정렬
    justify-items: 아이템을 가로방향으로 정렬

      .container {
          justify-items: stretch;
          justify-items: start;
          justify-items: center;
          justify-items: end;
      }
  • place-items
    align-items와 justify-itms를 같이 쓸 수 있는 단축 속성

      .container {
          place-items: center center;
      }
  • align-content
    grid 아이템들의 높이를 모두 합한 값이 grid 컨테이너의 높이보다 작을 때 아이템들을 통째로 정렬

      .container {
          align-content: stretch;
          align-content: start;
          align-content: center;
          align-content: end;
          align-content: space-between;
          align-content: space-evenly;
      }    
  • justify-content
    gird 아이템들의 너비를 모두 합한 값이 grid 컨테이너의 너비보다 작을 때 아이템들을 통째로 정렬
    ```
    .container {

      justify-content: stretch;
      justify-content: start;
      justify-content: center;
      justify-content: end;
      justify-content: space-between;
      justify-content: space-evenly;

    }

  • place-content
    align-content와 justify-content를 같이 쓸 수 있는 단축 속성

      .container {
          place-content: center center;
      }

Grid Item

gird container의 자식요소들로 grid의 규칙에 의해 배치됨
  • align-self: 해당 아이템을 세로(column)방향으로 정렬
      .item {
          align-self: stretch;
          align-self: start;
          align-self: center;
          align-self: end;
      }
  • justify-self: 해당 아이템을 가로(row)방향으로 정렬
      .item {
          justify-self: stretch;
          justify-self: start;
          justify-self: center;
          justify-self: end;
      }
  • place-self: align-self와 justify-self를 같이 쓸 수 있는 단축 속성
      .item {
          place-self: center center;
      }
  • order: 각각의 아이템을 시각적으로 나열 순서를 결정. 숫자가 작을수록 먼저 배치
  • z-index: 숫자가 클수록 위로 올라옴

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

CSS ...끄적  (0) 2022.04.15
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

2022.04.12

CSS filter

  • filter속성(흐림효과, 색상변형 등)은 요소에 대한 시각적 효과를 지정함
    포토샵에서의 layer style 보정하는 것과 비슷함
종류 설명
blur(px) 이미지에 흐름효과. 값이 클수록 더 흐려짐
brightness(%) 이미지 밝기 조정. 0%는 완전히 검게, 100%(기본값)보다 크면 더 밝게
contrast(%) 이미지 대비 조정. 0%는 완전히 검게, 100%(기본값)보다 크면 더 많은 대비 처리
drop-shadow (x y blur 색상) 이미지에 그림자 효과 지정. x, y그림자 위치지정, blur는 흐림정도, 색상은 그림자 색상
grayscale(%) 이미지를 회색으로 변환. 0%(기본값), 100%는 이미지를 완전 회색 처리
hue-rotate(deg) 이미지 색조 회전을 적용 0deg~360deg
invert(%) 이미지 색상 반전. 0%(기본값), 100%는 이미지 색상 완전 반전
opacity(%) 이미지 투명도. 0%~100%(기본값)
saturate(%) 이미지 채도 지정. 0%는 채도 없애고 100%(기본값)를 초과하면 채도높임
sepia(%) 이미지를 세피아톤으로 변환(오래된사진느낌). 0%(기본값)~100%
backdrop-filter 요소 범위만 blur처리
filter 다중값 지정. 값 처리는 띄어쓰기로

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

CSS ...끄적  (0) 2022.04.15
CSS Grid속성  (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

2022.04.07

가상 클래스(pesudo-class)

가상클래스는 HTML에 이미 존재하는 클래스를 특정 이벤트나 환경에 맞춰 가상으로 클래스를 줘서 css로 제어하는 것
(:)세미클론 한개 사용

* :link
    방문하지 않은 링크에 스타일 적용
* :visited
    방문한 링크에 스타일 적용
* :hover
    특정 요소에 마우스 포인터 올려놓으면 스타일 적용
* :active
    마우스를 클릭했을 때
* :focus
    마우스를 클릭하고 입력하는 동안 적용
* :first-child
    첫번째 자식
* :last-child
    마지막 자식
* :nht-child(2n+1)
    홀수 번째 자식

가상 요소(pesudo-element)

HTML에 존재하지는 않지만 가상의 요소를 생성하여 스타일을 주는 것
(::)세미클론 두개 사용(세미클론이 하나며도 작동은 되지만 이중클론 권장)
content=""; 가 있어야 가상요소가 만들어지므로 필수 속성    

* ::before
    요소의 콘텐츠 시작 부분에 생성된 콘텐츠 추가
* ::after
       요소의 콘텐츠 마지막 부분에 생성된 콘텐츠 추가

위에 두 요소 사용방법은 아래 링크에서 확인해 주세요
끄적:: CSS선택자

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

CSS Grid속성  (0) 2022.04.13
CSS filter속성  (0) 2022.04.13
CSS초기화 reset.css 및 CSS 말줄임 표시방법  (0) 2022.04.07
CSS 속성  (0) 2022.04.06
CSS 선택자  (0) 2022.04.06

2022.04.06

Reset CSS

웹 브라우저마다 다른 default 스타일이 지정되어 있기 때문에 이를 초기화 시켜주고, 
모든 웹 브라우저마다 동일한 스타일이 적용될 수 있도록 하는 설정
  1. reset 하는방법

    1. 오른쪽 링크에 접속을 한다 reset-css
    2. Copy HTML을 한 후, html문서 head부분에 붙여넣는다
      확인해보면 css속성이 reset된걸 확인해 볼 수 있을것이다

CSS 말줄임

  • 말줄임 만들때 쓰는 3가지 속성
    1. white-space(옆으로 길어질거냐?): nowrap; // 감싸지 않는다
    2. overflow: hidden; // 넘친걸 잘라내는 속성
    3. text-overflow: ellipsis; // 를 하면…으로 나온다!! …: 말 줄임표

끄적 😛

overflow-wrap: break-word
줄바꿈 기준을 모를 때 영역에 맞게 잘라주는 속성

word-break: break-all
단어가 아닌 글자단위로 줄바꿈을 하고자 할때 쓰는 속성

이미지 크기를 제어할때는 가로든 세로든 하나만 조절해주면된다!(비율때문에)

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

CSS filter속성  (0) 2022.04.13
가상클래스(pesudo class)와 가상요소(pesudo element)  (0) 2022.04.08
CSS 속성  (0) 2022.04.06
CSS 선택자  (0) 2022.04.06
CSS 선언방식  (0) 2022.04.06

2022.04.06

CSS 단위

  • px: 픽셀 단위
  • %: 상대적 백분율. 부모 요소의 크기의 영향을 받아 크기가 변함
  • em: 상위 요소 크기의 몇 배인지를 정하는 단위
    • 상위 폰트크기가 16px일 경우 하위 폰트크기를 1em 적용시
    • 1em = 16px, 1.5em = 24px(1.5*16)
  • rem: r(root)의 약자로 최상위.
    • 모든 브라우저의 폰트 사이즈는 16px.
    • 가장 상위인 html(or body)태그의 폰트 크기가 16px인경우, 1rem 적용시 1rem = 16px
  • vw(viewport width): 뷰포트 가로 너비의 백분율. 1vw = width의 1%
  • vh(viewport height): 뷰포트 세로 너비의 백분율, 1vh = height의 1%

CSS 자주 사용되는 속성

  • 너비
    • width
      • 요소의 가로 너비
        width default value: auto;
        min-width default value: 0
        max-width default value: none;
        width는 가로로 늘어날려고함
    • height
      • 요소의 세로 너비
        height default value: auto;
        min-height default value: 0
        max-height default value: none;
        inline, block요소 상관없이 최대한 줄어들려고함
  • 여백
    • 내부여백 padding
      • 요소의 내부 여백을 만들어 내는만큼 요소의 크기가 늘어남
    • 외부여백 margin
      • 요소의 외부 여백을 만들어 냄
      • 음수 사용 가능
      • margin: auto;는 가운데 정렬 가능
    • 마진중첩
      • 마진중첩은 좌·우에서는 발생하지 않고 상·하에서만 발생
      • 자식요소에 margin을 줬는데 부모요소의 margin으로 만들어져버리는 현상
      • 부모의 margin-top,bottom과 자식의 margin-top,bottom이 만나면 중첩이 생김
      • 이전형제와 다음형제가 만났을때
        이전형제의 margin-bottom과 다음형제의 margin-top이 만나면 중첩이 생김
        부모요소에 overflow:hidden;을 주면 중첩현상이 사라짐
  • border
    • border-radius(모서리를 둥글게)
    • box-sizing
      • border-box
        content + padding + border로 크기계산이 됨
      • default값은 content-box
  • 요소의 크기가 늘어남
  • overflow
    • visible: default값. 넘칠 경우 상자밖으로 보여짐
    • hidden: 넘치는 부분은 잘려서 보이지 않음
    • scroll: 스크롤바가 추가됨
    • auto: 넘친 영역만 스크롤바가 생김
  • 요소의 크기 이상으로 내용이 넘쳤을 때 보여짐을 제어하는 단축 속성
    부모 요소에 overflow를 작성해 줘야함
  • display
    • none
    • block
    • inline
    • inline-block
  • 요소를 어떻게 보여줄지를 결정
  • opacity
    • opacity default value: 1
      0~1까지 소수점을 표현할 때 앞에 0은 생략가능 ex).3
  • 요소의 투명도 설정
  • line-height
  • line-box의 높이를 지정하며 주로 텍스트간의 줄 간격을 조절할 때 사용
    line-height default value: normal
  • 문자
    • color: 글자 색상 변경
    • text-align
      문자 정렬 방식
      • left: 인라인 콘텐츠를 줄 상자의 왼쪽 모서리로 정렬
      • right: 인라인 콘텐츠를 줄 상자의 오른쪽 모서리로 정렬
      • center: 인라인 콘텐츠를 가운데 정렬
      • justify: 인라인 콘텐츠를 양쪽 정렬
    • text-decoration
      문자의 장식
      • underline: 글자 위에 선
      • overline: 글자 아래에 선
      • none: 선이 없음
      • line-through: 글자 중간에 선
    • text-indent
      들여쓰기(양수), 내여쓰기(음수)
      text-indent: -9999px;
      • Phark Method
        이미지로 대체할 엘리먼트에 배경이미지를 설정하고 글자는 text-indent를 이용하여 화면 바깥으로 빼내어 보이지 않게 하는 방법
  • 배경
    • background-image: url("경로")
      상대경로: index파일을 기준으로 지정하는 바법
      절대경로: http://가 포함되어 있는 경로.이미지 가져올때에는 우클릭 이미지보기를 한 후 '이미지 주소 복사'를 하면 된다
    • background-color
      default value: transparent(투명한)
    • background-size
      default value: auto
      • cover: 비율을 유지, 요소의 더 넓은 너비에 맞춤
      • contain: 비율을 유지. 요소의 더 짧은 너비에 맞춤
    • background-repeat
      배경 이미지의 반복 방법 지정
      가로축이나 세로축을 따라 반복할 수도 있고 반복하지 않을 수도 있음
      • repeat: default value
      • no-repeat: 반복하지 않음
      • repeat-x: x축으로 반복
      • repeat-y: y축으로 반복
    • background-position
      배경 이미지 시작 위치 지정
      기본적으로 왼쪽 상단 꼭지점부터 시작함
      • top left, top center, top right: 왼쪽 상단, 가운데 상단, 오른쪽 상단
      • center left, center center, center right: 왼쪽 중앙, 중앙, 오른쪽 중앙
      • bottom left, bottom center, bottom right: 왼쪽 하단, 가운데 하단, 오른쪽 하단
    • background-attachment
      배경 이미지의 스크롤 여부를 정함
      default value: scroll
      • fixed: 요소가 스크롤 될때 배경 이미지가 뷰포트에 고정되는 속성 값
  • 배치
    • position
      요소의 위치 지정 기준
      default value: static
      • relative: 요소를 원래 위치를 기준으로 상대적으로 배치
      • absolute: 위치 상 부모 요소를 기준으로 잡고 설정(부모요소에 relative를 심어줘야함)
      • fixed: 뷰포트를 기준으로 고정된 위치에 배치
    • 요소의 쌓임 순서(stack order)
      1. 요소에 position 속성의 값이 있는 경우 위에 쌓임
      2. 1번의 조건의 같은 경우, z-index 속성의 숫자 값이 높을 수록 위에 쌓임
      3. 1,2번의 조건까지 같은 경우, html의 다음 구조일 수록 위에 쌓임
    • z-index
      요소의 쌓임 정도를 지정
      default value: auto
      숫자가 높을수록 위에 쌓임
    • position 속성을 사용하면서 요소의 display가 변경됨
      relative, static는 변경되지 않지만
      absolute, fixed는 display가 block요소로 바뀌기 때문에 따로 display: block을 안해줘도 됨
      (inline요소는 가로세로 값을 같지 못하는데 값이 변경됐을 경우 위와같은 상황 잘 살펴보기)
  • 플렉스(flex)
    • flex-container (플렉스 컨테이너)
      • flex-direction: 아이템들이 배치되는 축의 방향을 결정하는 속성
        • row: default값. 가로(행) 방향으로 배치
        • row-reverse: 아이템들이 역순으로 가로 배치
        • column: 세로(열) 방향으로 배치
        • column-reverse: 아이템들이 역숙으로 세로 배치
          • flex-warp: 컨테이너가 더 이상 아이템들을 한 줄에 담을 공간이 없을 때 아이템 줄바꿈 여부
          • wrap: 줄바꿈
          • no-wrap: default값. 줄바꿈을 하지 않음
      • flex-flow: flex-direction과 flex-warp을 한번에 지정할 수 있는 단축 속성. 순서는 direction, warp
      • justify-content: 메인축 방향으로 아이템 (수평)정렬
        • flex-start: default값. 아이템 시작점 정렬
        • flex-end: 아이템 끝점 정렬
        • cneter: 아이템 가운데 정렬
        • space-between: 아이템들 사이에 균일한 간격을 만들어줌
        • space-around: 아이템들 둘레에 균일한 간격을 만들어줌
        • space-evenly: 아이템들의 사이와 양 끝에 균일한 간격을 만들어줌
      • align-content: flex-wrap: wrap; 이 설정된 상태여야 하며, 아이템들의 행이 2줄 이상일때 (수직)정렬
        • stretch: default값. 아이템이 수직축 방향으로 끝까지 늘어남
        • flex-start: 아이템 시작점 정렬
        • flex-end: 아이템 끝점 정렬
        • cneter: 아이템 가운데 정렬
        • baseline: 아이템들이 텍스트 베이스라인 기준으로 정렬
      • align-items: 수직축 방향으로 아이템들을 정렬
        • stretch: default값. 아이템이 수직축 방향으로 끝까지 늘어남
        • flex-start: 아이템 시작점 정렬
        • flex-end: 아이템 끝점 정렬
        • cneter: 아이템 가운데 정렬
        • baseline: 아이템들이 텍스트 베이스라인 기준으로 정렬
    • flex item에 적용하는 속성들
      • flex-basis: flex 아이템의 기본 크기 설정
        • flex-basis: auto(default);, 단위는 %, px, em, rem으로 표현갸능
      • flex-grow
        아이템들의 증가 너비 비율
        default값은 0
        아이템들의 flex-basis를 제외한 여백 부분을 flex-grow에 지정된 숫자의 비율로 나누어 가짐. 즉 여백의 비
      • flex-shrink
        아이템들의 감소 너비 비율
        default값은 1
        감소너비를 적용하고 싶지 않으면 flex-shrink: 0;으로 부여해 주변 적용된 크기 그대로 유지
      • flex
        flex-grow, flex-shrink, flex-basis를 한번에 쓸 수 있는 축약형 속성
      • align-self: align-items의 아이템 버전. 해당 아이템의 수직축 방향 정렬
      • order
        각 아이템들의 시각적 나열 순서를 결정
        숫자가 작을수록 앞에 적용됨
        default값은 0
  • 1차원 레이아웃
    요소의 부모요소에 display: flex를 주면 수평정렬이 됨
    flex-container는 부모요소가 되고 flex item은 자식요소가 됨
    justify-content: center; align-item: center; 를 해주면 한가운데 정렬 가능
  • 전환
    • transition
      transition: <property 속성먕><duration 지속시간><timing-function 타이밍함수><delay 대기시간>
      • transition-proterty(default: all)
      • transition-duration(default: 0)
        property, duration은 쉼표를 통해 여러개 작성 가능
        ex) transition: width: .3s background-color: .5s
      • transition-timing-function(default: ease)
        easings.net
      • transition-delay(default:0s 전환 효과가 몇초뒤에 시작할지 대기시간지정)
  • 변환
    • transform
      transform: rotate(deg(degree의 약어)) scale();
      • 2D 변환 함수
        • translate(x, y) 이동
        • translateX(x) 이동
        • translateY(y) 이동
        • scale(x, y) 크기(배수로 설정)
        • rotate(deg) 회전
        • skewX(x) 기울임
        • skewY(y) 기울임
      • 3D 변환 함수
        • rotateX(x) 회전
        • rotateY(y) 회전
        • backface-visibility
          3D 변환으로 회전된 요소의 뒷면 숨김 여부
          • visible: defualt값. 뒷면보임
          • hidden: 뒷면숨김
        • perspective(n) 원근법(거리)
          transform: perspective(원근법 함수는 제일 앞에 작성해야함 300px) rotateY(45deg);
      • perspective 속성과 함수의 차이
        • perspective: 300px; // perspective-origin 부모요소에 원근 거리를 지정하는게 더 깔끔함
        • transform: perspective(300px); // transform-origin

'프론트엔드 > 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.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.05

  1. 내장방식

     html 파일 안에 <style> 태그로 작성하는 방식
       <style>
       div {
         clor: red;
       }
     </style>
  2. 인라인방식

     요소의 style 속성에 직접 스타일 작성하는 방식으로 우선순위가 너무 높기때문에 권장하지 않음
     <div style="color: red;">
         test
     </div>
  3. 링크방식

     link태그를 이용해 외부에 있는 css를 가져오는 방식
     # Emmet --> link:css
     <link rel="stylesheet" href="style.css">
  4. @import방식

     css의 @import규칙으로 css문서 안에서 또 다른 css문서를 가져와 연결하는방식. 직렬방식
       html문서에 링크연결한 상태
     <link rel="stylesheet" href="style.css">
    
     # style.css 문서입니다
         @import url("./main.css")
    
         div {
             color: red;
         }
     # main.css 문서입니다
    
         div {
             background-color: tomato;
         }

'프론트엔드 > 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

+ Recent posts