문제상황
cra로 만든 리액트 프로젝트의 어떤 요소 width가 100vw고 스크롤바가 존재한다면, 브라우저에따라 오른쪽의 스크롤바 너비 만큼의 잉여부분이 생긴다.
해결법
1. 스크롤바를 없애버린다.
index.css
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen',
'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue',
sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-ms-overflow-style: none;
}
::-webkit-scrollbar {
display: none;
}
2. 애초에 스크롤을 허용하지 않는다.
overflow: hidden;
단, 이럴땐 기획/디자이너와 협의해 어떻게 요구사항을 충족할건지 논의해봐야한다.
3.. root을 손본다.
public/index.html을 따로 손보지 않았을 때 개발자 도구를 열어보면 <div id = "root">안에 자신이 만든 모든 컴포넌트가 속해있음이 보일 것이다. root은 가상 돔에 랜더링돼서 실제 돔에 랜더링된 결과물들이 나타나는 곳이다.
#root{
overflow-x: hidden;
}
그래서 root에서, 가로 스크롤을 막아버리면 해결된다.
4. 스크롤바 너비가 존재하는 브라우저에서(스크롤바는 브라우저마다 형태가 다르다.), 스크롤바 너비를 계산해 그만큼 제외해준다.
'개발' 카테고리의 다른 글
React useState에 대해 궁금해졌다 1 (0) | 2023.12.15 |
---|---|
typescript나 eslint 사용하지 않는 param,변수로 인해 에러를 일으킬 경우 해결법 (0) | 2023.12.15 |
아니, 왜 컴포넌트 사이즈 얻어오는 hook이 이상해진거지? width와 height가 둘다 0이야 (0) | 2023.11.20 |
React로 스크롤 기반 인터랙티브 웹 만들기 2 인터랙션2 (1) | 2023.10.22 |
React로 스크롤 기반 인터랙티브 웹 만들기 2 인터랙션 (2) | 2023.10.17 |