티스토리 뷰
vue.js 관련 프로젝트를 하면서 style 태그에 scoped를 추가해서 사용하고 있다.
<style scoped>
// style code
</style>
위처럼 scoped를 붙여서 사용하면 현재 스타일 코드를 사용하고 있는 컴포넌트에만 스타일이 적용된다.
반대로 scoped가 없다면 다른 컴포넌트에 영향을 주는 디자인 코드가 돼버린다.
그렇다면 전역 스타일을 사용하긴 하는데 일부만 scoped를 적용시키려면 어떻게 해야 할까에 대해서 생각해보았고
간단하게 해결할 수 있었다.
<style>
// 다른 컴포넌트에 영향을 주는 디자인 코드
</style>
<style scoped>
// 현재 컴포넌트에만 적용됨
</style>
style tag를 분리해서 적용하면 쉽게 해결할 수 있다.
또 다른 방법으로는 ::v-deep, /deep/, >>>를 사용하면 된다.
다음과 같이 사용하면 하위 컴포넌트에 scoped 된 디자인을 적용할 수 있다.
<style scoped>
.p >>> .c {
}
.p /deep/ .c {
}
.p::v-deep .c {
}
</style>
/deep/ 과 >>>는 css 코드에서는 잘 작동하지만 scss 같은 전처리기에서는 잘 인식되지 않는 경우가 있다고 해서, ::v-deep을 사용하는 것을 권장한다고 한다.
위 두 가지 방식의 차이점은
style 태그를 두 번 사용할 경우 하위 컴포넌트뿐만 아니라 같은 수준의 컴포넌트에도 영향을 줄 수 있다.
하지만 ::v-deep은 하위 컴포넌트에만 스타일이 적용된다.
'Vue&React' 카테고리의 다른 글
Vuex - (2) (0) | 2022.04.26 |
---|---|
Vuex - (1) (0) | 2022.04.26 |
React에서 .env (환경변수) 파일 사용하기 (0) | 2022.03.21 |
Redux의 키워드 / 규칙 정리 (0) | 2022.03.13 |
[React] React.memo(), useMemo(), useCallback() (0) | 2022.02.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- js
- TypeScript
- v-for
- 알고리즘
- reactrouter
- Vue.js
- webpack
- SOAP API
- bundler
- 파이썬
- Vue
- Preloading
- Transpiler
- programmers
- 상호평가
- 백준
- Vuex
- AxiosInterceptor
- clean code
- redux
- SPA
- redux-thunk
- error
- python
- 문제풀이
- Repository Pattern
- React
- React.memo
- 프로그래머스
- GraphQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함