inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

파이널 코딩테스트 : 프론트엔드

css 스타일링 - 2부

질문드립니다!

238

Kenna

작성한 질문수 6

3

안녕하세요 😃
강의 듣다 작은 궁금함이 생겨 질문 드립니다.

문제 1번과 문제 3번을 들었는데 CSS 작성 시
1번은 부모 자식 클래스를 한 줄에 다 작성하시고
.cont-movie .list-movieNav .link-nav{
}
3번은 클래스를 하나씩 작성하셨는데
.star-average{
}
.star-point-container{
}
.star-background{
}


두 방식에는 어떤 차이점이 있을까요?
개인적으로는 3번 방식을 선호하는데 장단점이 있는지도 궁금합니다!


감사합니다😃

코테 준비 같이 해요!

답변 3

3

Bonfire

안녕하세요! Kenna 님!

좀더 부연설명을 드리자면, 요즘 컴포넌트 형태로 UI 를 만드는 것이 인기를 끌고 있는데요. 이것을 기준으로 보시면 좋을 것 같습니다.

내가 정확히 떼어서 사용할 컴포넌트를 기준으로 해서 부모로 잡고 그 아래에 자식 클래스로 CSS를 주는 것이 가장 유리합니다. (2 depth ~ 3 depth 까지만) 가령 내가 이 컴포넌트 부분을 다른 데에 재사용 하려고 할 때 어떻게 하면 가장 깨지지 않고 편리하게 가져갈 수 있을지 대해서 고민하셨을 때 나온 정답이 가장 맞는 해답이 될 것입니다.

예를 들어 아이콘 같은 경우에는 어디에나 붙여서 쓸 수 있어야 하기 때문에 아이콘에 대한 스타일링을 할  때에는 depth가 많이 들어가지 않게 되거나 다른 공통 아이콘 클래스와 결합 (ex: .icon-star 혹은 .icon.icon-star ) 와 같은 형태로 작성하게 될꺼구요. 이 때 전자의 케이스에서는 .icon- 프리픽스에 스타일링을 달아서 사용하는 방식을 활용할 수도 있습니다.

3번의 경우에는 초기에 스타일링에 대한 소개까지 가게 될지 제가 미처 알지 못해서 마음가는 대로 분리된 부분도 있습니다. 이 점 죄송하게 생각하며 양해부탁드립니다.

위의 경우에는 괜찮아보이는 케이스는 .star-point 라는 클래스를 가장 상위에 두고 하위에 .star-background 등을 둬서 2depth 제어를 하는 것일 것으로 생각됩니다. 

또한 중요한 것 중 하나는가장 적은 수의 CSS 클래스로 최고의 효율을 발휘할 수 있는 케이스를 만드는 것인데요. 그 이유를 이해할 수 있는 몇 가지 글을 소개 드립니다. 요약하자면 DOM 과 CSSOM가 결합하는 과정이 있는데 이 결합 과정에서 아무래도 제어하는 class가 적을 수록 연산이 더 빠를 것이기 때문입니다.

사실 최근 PC나 모바일의 성능이 워낙 좋기 때문에 이렇게까지 해야할까 싶긴 하지만, 사실 무엇보다 중요한 건 협업을 생각하여 고민하는 것입니다. 적은 수와 보기 좋은 CSS 클래스 사용을 하게 되면 협업 (남들 혹은 자신과의 협업)에 유리하기 때문에 이런 부분도 고려하시면 좋을 것 같습니다.

위의 이유들 때문에(성능, 협업 등) SMACSS, BEM 등 여러가지 CSS 기법들도 나와있는데 이런 것들을 따로 참고하셔도 좋고, 개인적으로는 기법을 따라하는 것보다 스스로 생각해보면서 길을 찾아 보는 것도 좋은 것 같습니다! (결국엔 비슷한 형태로 가게 됩니다.)

https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction?hl=ko

https://frontdev.tistory.com/entry/CSSOM%EC%9D%B4%EB%9E%80-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80-%EB%A0%8C%EB%8D%94%EB%A7%81-%EA%B3%BC%EC%A0%95%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

https://designer-ej.tistory.com/entry/Web-Rendering-DOMCSSOMRender-Tree

0

Kenna

세 분 모두 꼼꼼한 답변 감사드립니다! 올려주신 글도 살펴보겠습니다 :) 감사합니다!

2

-J-

안녕하세요 Kenna 님! 

위에서 호준님이 달아주신 답 처럼 1번 방식의 장점은 CSS만 읽었을 때 이게 어디에 달려있는 클래스인지 마크업을

보지 않고 파악이 가능하다는 점도 있구요!

또 다른 장점으로는 자식 클래스가 부모 클래스에 의존하게 만들수 있다는 점 입니다.

스타일을 부모로부터 타고 들어가도록 유도하면 클래스가 중복되었을 때 스타일이 겹치는 것을 막을 수 있습니다.

답변이 도움이 됐으면 좋겠습니다~

감사합니다!

2

Hojun Lee

안녕하세요! 제주코딩베이스캠프의 이호준입니다.

저희회사가 주 4일 근무이다 보니 답변이 월요일날 달릴 것 같아 제가 먼저 달려왔습니다.ㅎㅎ
(저는 FE는 아니지만 해당 강의에서 9번과 10번을 담당하고 있어요.)

월요일에 추가 답변이 달릴테니 조금 기다려 주세요. :)

우선 저는 SASS를 병행 사용하고 있는데요. SASS를 병행사용하면 1번 방식으로 자동완성이 됩니다.

또한 전체 구조를 파악하기 용이해요. CSS만 읽었을 때 이게 어디에 달려있는 클래스인지 마크업을

보지 않고 파악이 가능하죠.

제가 드릴 수 있는 답변은 이정도이고, 월요일에 저희 FE 개발자 분들에게 한 번 더 답변 요청할게요.

감사합니다.

뮤직플레이>인트로 컴포넌트 작성강의에 관련해서 궁금한게있어서 문의드립니다!

0

357

1

cart 페이지 피그마 로직관련 질문드립니다!

0

467

1

createRootElement가 static인 이유가 무엇인가요?

0

365

1

11번째 파트 강의 정말 잘보고 있습니다!

0

256

1

좋아요 기능 만드는 강의가 완전하지 않아요!

0

276

1

[카드게임] 타이틀 display부분 질문 있습니다!

2

276

1

[카드게임] 카드게임 타이틀 부분 질문있습니다.

0

241

1

git public레포로 코드와 제공해주신 리소스들 올려도되나요?

0

302

1

items

1

342

2

album 컴포넌트 스크립트까지 다 따라 쳤는데 화면에 아예 안뜨네요..ㅜㅜ

0

278

1

SPA 섹션 강의 완성 예정일이 궁급합니다.

0

303

1

다음 구현 부분은 아직 강의 공개가 안된걸까요 ??

0

189

1

추가문제 강의 업로드

0

223

1

강의자료는 어디서 다운받을 수 있나요

0

268

1

index.js를 빼는 이유

1

292

1

파코테4 - 뮤직플레이 화면이 없어지고 li가 떠야하는데 안뜨네요.. 빨간줄이 뜬 부분은 오타가 아닌데 오타라고 뜨고 렌더쪽 문제 해결하는 법을 모르겠네요

0

316

2

reset.css 는 어디에 설정 하나요?

0

481

2

노션 링크 질문입니다.

0

211

1

이미지 하나가 움직임이 좀 부자연스럽

0

281

1

CSS 업데이트 부탁드립니다.

1

184

1

궁금한점이 있어서 질문드립니다!

1

320

2

난이도 별 3개가 많은데 어떤순서가 좋을까요?

2

191

1

질문입니다.

2

226

1

리액트로 구현

1

273

2