TIL day 03

🐣 이론

CSS

  • class는 grouping, id는 idetification을 하기 위함
  • 사용자가 지정하기 전까지는 user agent stylesheet속성을 적용한다.
    개발자도구의 user agent stylesheet 속성들 => 브라우저에 정의되어 있는 기본 default 속성

Grid layout

  • display: grid;로 선언
  • grid templete이 제공하는 다양한 기능으로 화면을 꾸밀 수 있다.

user agent stylesheet

  • 위에 작성한 것처럼 태그마다 기본적으로 들어가 있는 스타일이 있다.
    이는 다른 태그와 기본적으로 구분하기위해 들어가 있으며 초기화하지 않으면 기본값이 적용된다.

모르는 개념이 있으면 html, css, js의 cheat sheet를 활용하자


🐥 실습

viewport

<meta name="viewport" content="width = device-width, initial-scale=1.0" />
  1. name: viewport를 지정한다는 것을 의미
  2. width: viewport-width를 device-width에 맞춰줌
  3. initial-scale: 초기화면 배율을 1.0(=100%)으로 맞춘다는 뜻

transition

  • 바꾸고 싶은 속성, 애니메이션 시간, [애니메이션 종류]
  • 속성에는 각자 적용하고 싶은 것을 따로 적거나 all을 사용
transition: background-color 1s, color 3s;   /* 따로 적용 */
transition: all 1s;   /* 공통 적용 */

media query

  • 특정 조건에서 적용되는 css코드를 작성하기 위해 사용. 반응형 웹 디자인을 위해 사용한다. (device간 가시성)
  • viewport 정의가 필수적이다.
  • 조건
    - min-width : 최소 너비
    - max-width : 최대 너비
    - min-height : 최소 높이
    - max-height : 최대 높이
    - aspect-ratio : 가로세로비
    - orientation : 방향
@media (조건) and (조건) {
  /* style */
}
  • 그리고 media query에서 외부에서 사용한 css속성을 정의하지 않으면 외부 속성이 적용된다.
    ⭐ 따라서 적용하고 싶지 않은 속성이 있으면 반드시 재정의 해줘야한다.

좌우 중앙 정렬

  • text-align: inline속성을 가지고 있는 태그들을 정렬시킨다. (img, a, span등)
  • margin: 0 auto;: block속성의 태그들을 정렬 할때 사용.

CSS 적용 순서

  • 하나의 content를 꾸미는 여러개의 CSS속성이 존재하면 명시도에 따라서 적용되는 것과 적용되지 않는 것이 있음.
  1. inline style > internal style > id > class > type순으로 적용됌(이것도 명시도와 관련됌)
    example: <h1 id="id" class="class">style</h1>
1. <h1 style="color: blue" id>inline style</h1>
2.	<head>
  		<style>
    		h1 {
    			color:blue;
    		}
  		</style>
	</head>
/* 3 */
#id {
	color: blue;
}
/* 4 */
.class {
	color: blue;
}
/* 5 */
h1 {
	color: blue;
}
  1. 가장 나중에 위치할 수록 적용
/* 빨간색 적용 */
h1 {
	color: black;
}
h1 {
	color: red;
}
  1. 자세히 명시될 수록 적용(명시도)
/* 검은색 적용 */
#id .class h1 {
	color: black;
}
h1 {
	color: red;
}
  • 명시도는 각각 아래의 값으로 계산한다.
    1. id: (1, 0, 0)
    2. class: (0, 1, 0)
    3. tag: (0, 0, 1)
  • 각각의 선택자의 명시도를 계산해서 명시도가 더 높은 선택자의 스타일을 적용
  • 명시도가 같다면 나중에 작성된 스타일을 적용

white space

  • 태그들 사이에 존재하는 미세한 공백
    정확히는 윗줄과 아랫줄사이에 존재하는 enter가 font size만큼 글자폭을 가지고 있어서 발생하는 문제
    margin, padding: 0로 해결이 되지 않는다.
<div>1<div> <!-- 이 부분의 enter때문에 발생 -->
<div>2<div>

해결방법

  1. 꼼수
<div>div1</div
  ><div>div2</div
    ><div>div3></div
      ...

이런 방식으로 이어나가면 enter가 없는 것으로 인식해서 공백이 사라진다.

  1. font-size:0

    • 앞서 설명했던 것처럼 enter가 font-size만큼 글자폭을 가지고 있기 때문에 발생하므로 container의 font-size를 0으로 만들면 공백이 사라진다.
  2. display: flex -> justtify-content

    • 우선 제일 사용하기 좋은 방법이라 생각된다. float로 정렬을 하여 사용하는 방법도 있지만 flex display가 현재 더 많이 사용하는 세련된 방식이기 때문이다.
    .container {
    	display: flex;
        justify-content: /* option */;
    }

좋은 웹페이지 즐겨찾기