헤더편에 이어서 HTML+CSS를 복습&공부 하기위해 강의를 보며 만들어 보았다.
✍️ 작성하면서 함께 메모한 것들) 배운 것, 다시 정리한 개념들, 궁금증에 대해
1) 구조 설정
2) :root
전역 CSS 변수 선언하기
:root
는 css 작업을 시작할 때 전반적으로 프로젝트에서 쓰이는 컬러나 사이즈에 대해 변수를 지정해서 유용하게 사용할 수 있다. css에서는 변수를 처음 넣어보았는데, 변수를 이렇게 사용할 수 있으니 편리하다고 생각했다. 😄:root {
/* color */
--white-color: #fff;
--black-color: #140a00;
--blue-color: #3b9bee;
--red-color: #ff2500;
--light-gray-color: #e0e0e0;
--dark-gray-color: #909090;
/* size */
--spacing: 12px;
--spacing-small: 6px;
--avatar-size: 36px;
/* font size */
--font-large: 20px;
--font-regular: 16px;
--font-medium: 14px;
--font-small: 12px;
--font-micro: 10px;
}
background-color: var(--black-color);
이런식으로 넣어주면 된다.3) header .logo i
header .logo i
에서 i
앞에 .
을 넣어서 인식이 안되었다. 반응형 헤더에서도 이런 적이 있었는데, 선택자를 작성할 때 조심해야 겠다. 😓4) header .icons .fa-search
.fa-search
처럼 이렇게 아이콘을 지정해서 css효과를 넣어줄 수도 있다.html▼
<header>
<div class="icons">
<i class="fas fa-search"></i>
<i class="fas fa-ellipsis-v"></i>
</div>
</header>
css▼
header .icons .fa-search {
margin-right: var(--spacing);
}
5) 반응형 size 만들기
아이템을 반응형으로 만들 수 있는 좋은 방법으로는 %
를 이용하는 것이다. width
와 height
를 각각 100%
로 지정해서 컨테이너에 맞게 채워서 보여줄 수 있다.
❗️ 화면에 맞도록 보여지지만, 너무 커지지 않도록 조정하기 위해서 max-width
를 지정한다.
.player video {
width: 100%;
height: 100%;
max-width: 1000px;
}
6) 아이템 중앙배치 두 가지의 차이점
text-align: center
display: flex & justify-content: center
7) position: sticky;
.player {
/* display: flex;
justify-content: center; */
text-align: center;
background-color: var(--black-color);
position: sticky;
top: 0;
}
8) list-style: none;
9) -webkit-line-clamp
10) 버튼속성
height
자체를 꽉차게 함으로써 위로 이동시켜 줄 수 있었다.outline:none
클릭할 때 윤곽선을 제거해준다.background: none;
버튼의 배경 색상을 없애기 위해서 사용했다. background-color: transparent;
이것 또한 동일하게 작용했는데 차이점이 무엇인지 찾아봐야겠다.🤔html▼
<button class="moreBtn">
<i class="fas fa-caret-down"></i>
</button>
css▼
.infoAndUpNext .info .metadata .titleAndBtn .moreBtn {
height: 100%;
}
button,
button:focus {
border: none;
cursor: pointer;
outline: none;
background: none;
/* background-color: transparent; */
}
11) margin: var(--spacing) 0;
margin
넣기. 이때 구분한다고 ,
넣어서 효과가 적용이 안됐었다. 헷갈리지 않게 조심하자. 😓12) margin: 0 auto;
13) 동일한 패턴 내에서 특정 아이콘만 속성값 주기
html▼
<ul class="actions">
<li>
<button>
<i class="good fas fa-thumbs-up"></i><span>3K</span>
</button>
</li>
...
css▼
.infoAndUpNext .info .actions button i.good {
color: var(--blue-color);
}
14) border-radius: 50%;
14) text-transform: uppercase
text-transform
은 문자형태를 대문자 또는 소문자로 바꾸는 속성이다. (한글에서는 의미가 없다.)capitalize
: 단어의 첫번째 글자를 대문자로 바꾼다.uppercase
: 모든 글자를 대문자로 바꾼다.lowercase
: 모든 글자를 소문자로 바꾼다.
15) .upNext > .title
선택자1 > 선택자2 { 속성1:속성값; 속성2:속성값; }
16) flex-basis
width: 100%;
를 부여했더니 잘 작동되었다..infoAndUpNext .upNext ul li .img {
flex-basis: 35%;
}
.infoAndUpNext .upNext ul li .img img {
width: 100%;
}
.infoAndUpNext .upNext ul li .itemInfo {
flex-basis: 60%;
}
.infoAndUpNext .upNext ul li .moreBtn {
flex-basis: 5%;
}
17) object-fit
img
나 video
같은 오브젝트의 사이즈를 컨테이너의 크기에 맞춰 조절할 수 있다. 너비와 높이 값을 입력하고, object-fit
속성만 지정해 주면 된다.object-fit: cover;
값을 쓰면 가로세로 비율은 유지하면서 컨테이너에 꽉 차도록 설정된다. (background-size: cover
와 같다.)18) JavaScript
.title
과 .clamp
사이에 공백을 두면 인식이 되지 않는다.html▼
<span class="title clamp">
css▼
.infoAndUpNext .info .metadata .titleAndBtn .title.clamp {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
}
19) transform
transform: rotateX(180deg);
()
안에는 각의 크기를 입력한다. (단위는 deg, rad, grad, turn 등을 사용한다.).infoAndUpNext .info .metadata .titleAndBtn .moreBtn {
height: 100%;
transition: transform 300ms ease-in-out;
}
.infoAndUpNext .info .metadata .titleAndBtn .moreBtn.clicked {
transform: rotateX(180deg);
}
20) transition
ease-in-out
: cubic-bezier( 0.42, 0, 0.58, 1 )과 같다.cubic-bezier()
cubic-bezier( n, n, n, n )
n에 들어갈 값은 cubic-bezier 에서 찾을 수 있다.✍️ @media 를 이용할 때, 레이아웃의 재배치 포인트를 너무 빈번하게 잡으면 사용자인터페이스에도 좋지않고, 유지보수하기에도 힘드므로 이점을 고려해서 작성해야겠다.