<style><link rel="stylesheet" href="..."><style>과 <link rel="stylesheet" href="...">의 장, 단점을 모두 사용할 수는 없을까. <link>를 사용하게 되면 재사용성은 매우 높아질 수 있지만 결국 네트워크를 활용하기 때문에 그만큼의 성능 상 문제가 생길 여지가 있다. 그러나 <style>의 경우, 재사용성의 측면에서 매우 비효율적이다. 사실 그렇기 때문에 webpack이라는 것을 사용한다고 볼 수 있다. 굳이 css만 한정된 이야기는 아니다. 코드의 재사용성은 극대화하하면서도 모든 코드를 한 개의 문서로 통합하면서 네트워크 사용을 최소화한다.
각각의 CSS 적용 방식에는 점수가 있어서 그 점수가 높은 순서대로 우선 순위를 가지게 된다.
Inline Style: 1000점
ID: 100점
Class: 10점
속성선택자: 10점
가상클래스속성: 10점
태그선택자: 1점
전체선택(/*): 0점
<div id="foo" class="foo1 foo2 foo3 ... foo20">안녕</div>
#foo {
color: blue;
}
.foo1.foo2.foo3.....foo20 {
color: red;
}
위와 같은 코드가 있다고 가정해보자. 위의 div의 "안녕"은 빨간색이 될까, 파란색이 될까.
점수 상으로는 빨간색이 되어야 맞다. 그러나 정답은 파란색.
점수는 개념 상의 설명을 위한 것이고, 실제로 하위 우선 순위의 점수가 높아도 상위 우선 순위의 이상으로 갈 수는 없다.
float 속성은 왜 좋지 않을까?overflow: visible인 경우, 부모 요소의 크기가 자동으로 늘어나지 않는다. (position: absolute와 비슷하게 렌더링) 3.float속성은 clear하지 않는 이상 계속해서 상속이 된다.화면의 플로우와 코드의 플로우는 가능하면 동일한 것이 좋다. 하지만 float를 쓴다는 것은 화면에서 띄워 애초에 플로우를 무시해버린다. 물론 이것 역시 CSS를 매우 잘하는 사람이 짤 경우엔 플로우에 맞게 짤 수 있겠지만...
Flexbox: flexbox는 기본적으로 1차원 레이아웃을 위해 만들어졌다. Row or Column.
Grid: grid는 2차원 레이아웃을 위해 만들어졌다. Row and Column
차이점: flexbox는 행과 열을 매우 효율적으로 정렬하고 구성할 수 있기 때문에 비교적 작은 단위의 레이아웃에 적합하고, grid는 2차원의 레이아웃을 효율적으로 정렬할 수 있으므로 조금 더 큰 단위의 레이아웃을 구성할 때 사용하면 좋다.