[CSS]01

2020. 12. 20. 16:45FRONT-END/CSS

CSS : Cascade Style Sheet 

  • Cascade : 여러 곳에서 연쇄적으로 적용 
  • HTML Elements 의 모양을 디자인하고 위치를 조정 
  • 사용법 
    • External Style Sheet : 독자적인 css 파일을 만들고 HTML 에서 import. Linking Style Sheet 라고도 한다. 
      • HTML 의 head 부분에 다음 라인을 추가 
      • <link rel="stylesheet" href=" URL "> 
        • URL 은 css 파일 위치 
    • Internal Style Sheet : 하나의 HTML 문서에서 style 영역을 따로 생성해서 사용. 주로 head 부분에 생성 
    • Inline Style Sheet : HTML 문서내에서 적용하고자 하는 Element 에 바로 적용하는 방법 

 

선택자 

  • 태그 선택자 : HTML 태그 중 특정 태그를 선택 
    • div { ~ } 
      • HTML 문서내의 div 태그 전체를 선택 
  • ID 선택자 : 태그에 id 값을 줘서 해당 id 로 선택 
    • #name { ~ }  
      • 식별자이기 때문에 같은 id를 쓰면 안된다. 
      • HTML 은 Java 처럼 논리적 언어가 아니기 때문에 문법적 에러를 미리 잡아내지 못한다. 
  • Class 선택자 : 태그에 class 값을 줘서 해당 class 로 선택 
    • .fruits { ~ } 
      • 하나에 여러 개의 class 를 줄 수 있다. 
  • 속성 선택자 
    • #pId[type="text"] 
  • 자손 선택자 : 해당하는 선택자 바로 밑에 있는 자손을 선택한다. 
    • .contentsWrap>h4 
      • class 명이 contentsWrap 인 태그의 바로 밑에 있는 h4 만 선택된다. 
    • .contentsWrap h4 
      • class 명이 contentsWrap 인 태그 밑에 있는 모든 h4 들이 선택된다. 
  • 구조 선택자 
    • :nth-child( ? ), :last-child, first-child 등등 
      • 자손 중 특정 위치의 자손을 선택 
    • #fruits>li:nth-child(2) : id 가 fruits 인 태그 바로 밑에 li 중 2번째 자손 선택 
  • 상태 선택자 
    • hover 
      • 마우스가 올려졌을때 
      • #food > li : hover    : id가 food 인 태그의 바로 밑에 li에 마우스를 올렸을때 

 

 

display 

  • div 과 span 의 경우 display 속성을 서로 바꿔주면 완벽하게 동일하게 작용한다. 
  • 우리가 보는 화면의 구성 
    • Normal Flow Area : 한 라인에 하나씩 올 수 있다. 
    • View Port : block 속성이 사라지지만 넓이와 높이를 조정하는 속성은 살아있다. 
      • 개발자의 의도는 아니지만 layout을 잡는 방법을 강구하다가 view port 를 이용하기 시작했다.

block 속성인 태그를 오른쪽으로 나열 하고 싶다면?? 

  • 넓이와 높이가 필요없다면 display : inline 을 준다. 
  • 넓이와 높이가 필요하다면 float : left / right 로 view port로 띄운다. 
    • display block 속성은 사라지고 넓이와 높이는 그대로 남는다. 
  • position 을 조절해준다. 

 

Position 

  • 요소의 위치를 조정할 때, 내부에 margin을 주거나 외부에 padding 주게되면 해당 크기만큼 공간이 생긴다. 
    • 정해진 외부 공간의 크기를 벗어나는 요소는 다음줄로 밀려나게 된다. 
  • 다른 요소에 영향을 주지 않고 단순히 배치만 변경하고 싶을때 사용한다. 
  • 종류 
    • static ( default ) : Normal Flow 흐름에 따라서 배치되고, 위치를 바꿀 수 없다. (margin/padding으로 조절) 
    • relative : 상대적인 위치 
      • 특별한 설정을 주지 않으면 static 처럼 움직인다. 
      • top, left, right, bottom 으로 이동 시킬 수 있다. 
      • normal flow 상 원래 위치를 기준으로 이동한다. 
      • 나중에 만들어 진 것이 위로 올라온다 = z-index 값이 나중에 만들어진게 더 크다. 
    • absolute : 절대 위치 
      • 가장 근접한 parent 요소중 static 아닌 요소를 기준으로 움직인다. 
      • parent 중 아무데도 static이 아닌 요소가 없다면 body = browser 를 기준으로 움직인다. 
    • fixed : view port에 고정시킨다. 
      • 스크롤이 생겨서 화면을 내릴때 항상 동일한 곳에 위치한다.

중앙에 정렬 

  • Horizontal center 
    • text 
      • 단순히 text-align : center 만 주면 된다. 
    • box 
      • margin : auto 로 좌우 margin을 동일하게 준다. 
      • box 자체를 50% 만큼 이동시키고 자신의 크기의 50%만큼 반대로 이동시킨다. 
        • transform : translate 를 활용 
        • 직접 계산해서 px 값으로 이동 
    • text 와 box 의 이동은 명확하게 구분 되지는 않는다. 
    • 이동방법은 다양하고, 각각 장단점이 있다. ( ex. cross browsing 문제 ) 
  • Vertical center 
    • text 
      • padding 으로 조절한다. 
      • line-height 을 박스 사이즈와 동일하게 한다. 
    • position을 준경우  
      • 50% 만큼 이동시키고, 자신의 크기의 50%만큼 당긴다. 
        • translate 
        • 직접 계산해서 px 값으로 이동  

margin / padding 

  • padding : 영역의 안쪽을 밀어내 공간을 만든다. 
  • margin: 영역의 바깥을 밀어내 공간을 만든다. 
  • 배치할때 사용되며, 다른 요소에 영향을 줘야 하거나 상관이 없을때 사용한다. 
  • 예상하지 못한 필요없는 margin / padding 이 있다면 margin / padding : 0 으로 없앤다. 
    • 중앙 정렬을 할때 margin: auto 대신 margin : 0 auto 

 

transform / animation 

  • transform : 형태를 변화 시킬때 사용된다. 
    • translate, translateX, translateY 
      • 해당하는 만큼 이동 
      • top, left, right, bottom 은 % 값을 줄수 없을 수 있지만 translate 는 줄 수 있다. 
        • 자신의 크기를 기준으로 % 만큼 이동된다. 
        • left : 50% 는 parent size를 기준으로 가능하다. 
        • top : 50% 는 parent의 높이가 정해져 있을때에만 가능하다. 
          • 기본적으로 높이는 한계가 없다. 
    • rotate, rotateZ (default), rotateX (X축으로 회전), rotateY(Y 축으로 회전) 
      • rotate(20deg) 로 사용 
    • scale : 크기를 배수로 증가 / 감소 
  • animation 
    • animate.style 사이트에서 CDN 방식으로 외부 style sheet 을 가져와서 사용한다. 

네비게이션 바를 만들때 

  • ul > li 로 만드는 경우 float 으로 li 들을 띄워서 가로로 배열한다. 
    • 이때 view port로 뜬 li 자손을 ul은 인식하지 못한다. 
    • ul에 overflow : visible 을 준다. 

 

overflow 

  • 자신의 내용물(자손)이 자신의 영역을 벗어날때 벗어난 내용물을 어떻게 처리할것인가 
  • 종류 
    • auto 
      • overflow 가 발생했을때 스크롤을 자동으로 만들어준다. 
    • hidden 
      • overflow가 발생했을때 해당 부분들을 숨긴다. 
      • 단, 해당 구역은 여전히 존재한 상태. 
        • display : none 과는 다르다. 
    • scroll 
      • overflow가 발생하지 않았을때에도 스크롤을 만든다. 
    • visible 
      • 항상 보여준다