처음 알게 된 개념들이나, 익숙해 보이긴 하지만 깊게 생각해보지 않은 것들을 잘 배운것 같다,
CSS 규칙
CSS 선택자
id 이름은 태그마다 고유해야 한다.
class는 중복될 수 있다.
특정 태그 하나만 스타일링 → id
여러 태그 한번에 스타일링 → class
CSS 파일
link태그로 css파일을 html파일에 불러온다.
link태그 속성 rel: relationship 약자, 불러올 파일이 어떤 관계인가? style로 지정해주면 된다.
href: 불러올 파일의 경로
CSS 색상
CSS는 빛의 삼원색 (R, G, B)를 사용한다.
예시 # 4e 55 ff → R값이 4e, G값이 55, B값이 ff
#ff0000 처럼 쓸 수도 있지만, rgb(255, 0, 0)처럼 써도 된다.
RGBA: RGB에다 Alpha값을 추가한 것. Alpha 값은 불투명도를 표시한다. rgba(255, 0, 0, 0
) 0이면 투명, 1이면 불투명
단위
절대적인 단위: px
상대적인 단위: rem, em, %
%: 부모 태그에 대한 상대적인 크기, 크기를 조절하고 싶으면 부모의 크기만 바꾸면 되어 편리하다.
em: 1em ⇒ 부모태그의 font-size
rem: 1rem ⇒ 최상위 태그(html 태그)의 font-size
line-height: 줄 높이
line-height: 1 / 글자 크기와 줄 높이가 동일 /
line-height: 2 / 줄 높이가 글자 크기의 2배 /
background 관련
**background-image: url("pizza.png");
background-repeat: no-repeat; //배경 반복 안한다
background-position: center; // 배경 위치 중양정렬
background-size: cover; //배경 사이즈 꽉 차게**
- background-size: cover →이미지 비율을 유지하면서 꽉 채우는 것
- background-size: contain →이미지가 잘리지 않는 선에서 꽉 채움
linear-gradient
background-image: linear-gradient(90deg, rgba(0, 0, 0, 1) 40%, rgba(0, 0, 0, 0));
각도, 시작색, 끝 색 순서로 받음
이미지 위에 그라디언트 입히기
background-image: linear_gradient(…), url(”…”);
위와 같이 콤마로 구분하여 배경이미지를 누적시킬 수 있다. 순서가 중요하다.
box-shadow
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.4);
가로, 세로, 흐린 정도(blur), 퍼지는 정도(spread), 그림자 색상
opacity: 투명도
요소 전체를 반투명하게 만든다
배경만 반투명하게 만들고 싶으면 rgba를 사용하면 된다.
box-model
margin
border-radius
box-sizing: border-box
각 박스의 width를 정하고 개발자 도구로 길이를 살펴보면 의문이 든다. width: 400px로 정했음에도 불구하고 다음과 같이 440px로 측정되어 있기 때문이다.
그 이유는 우리가 정한 width는 컨텐츠의 길이이고, 측정할 길이는 padding과 border까지 더한 길이라서 그렇다. 그래서 border까지 포함해서 400px로 만들어 주기 위해 padding과 border 굵기를 빼서 컨텐츠의 width를 360으로 설정해야 한다. 하지만 이런 방식으로는 일일히 계산해야 하는 번거로움이 있다.
그럴때 box-sizing이라는 속성을 border-box로 정해주면, width를 border까지 포함한 하나의 박스로 취급하게 되어 border까지 총 400px로 바로 설정할 수 있어 편리하다.
전체 선택자를 사용하여 미리 모든 요소의 box-sizing을 border-box로 만들어 놓으면 편하다.
* {
box-sizing: border-box;
}
white-space: nowrap
margin 상쇄
block vs in-line
block 태그: 세로로 배치됨, 너비, 높이 지정 가능
in-line태그: 글 쓰는 가로 방향으로 배치됨, 화면에 꽉 차면 다음줄로 넘어감, 너비나 높이 지정 불가(img태그 예외), 여백은 가로 여백만 가능
inline-block
a태그는 inline 태그라서 width, height를 지정할 수 없다. 또한 여백도 가로 여백만 먹히고, 세로 여백은 늘어나는 듯 보이긴 하나 주변 요소들이 아래와 같이 전혀 영향을 받지 않는다.
이런 a태그에 너비와 높이, 여백을 주고 싶을 때는 inline-block 값을 주면 된다. inline-block은 배치는 인라인으로 되지만 block처럼 크기와 너비를 할당할 수 있다.
float
float: right, left 등을 지정하면 해당 요소의 인접한 인라인 요소들이 자리를 비켜주게 된다.
선택자 붙여 쓰기
p.delay.bookinfo {
…
}
#shipping.delay.book-info{
…
}
→ shipping 아이디, delay와 book-info클래스를 모두 가지는 요소
.book-container > .title {
…
}
→ book-container라는 클래스를 가지는 요소의 다이렉트 자식 중 title이라는 클래는 가지는 요소
.book .date {
…
}
→ book이라는 클래스를 가지는 태그 안쪽에 속하면서(자식을 포함한 모든 자손 중) date라는 클래스를 가진 요소
a: hover{
…
}
→ a태그에 마우스를 호버하였을 때 입힐 스타일 지정
가상 클래스 예
active: 클릭했을 때
hover: 마우스 호버 시
visited: 이미 방문한 링크
focus: 입력란 등을 클릭하여 커서가 깜빡이는 상태
css 상속
하루에 다뤄야 할 내용들이 좀 많았던 것 같다. 기록을 세세하게 하려고 하다 보니 시간이 많이 지체되었다.
내일부터는 아는 내용들은 최대한 빠르게 넘기고, 내가 이전에 배우면서도 대충 배웠던 부분들을 위주로 기록해야겠다.