web study/react-native

[RN] native에서 position fixed 사용하기!

0youn 2021. 10. 5. 20:20

position fixed를 사용하고 싶은가? 아쉽지만 RN에는 fixed 옵션이 없다 ㅜㅜ

하지만 구현하는 방법은 있는데 바로 position absolute를 이용하는 방법이다.

 

이는 absolute가 가지고 있는 특징을 이용하여 꼼수를 쓰는 방법이라고 난 말하고 싶은데

사용해보면 생각보다 쉽게 구현할 수 있다.

 

먼저 absolute가 가진 속성을 이해해야 하는데 absolute는 부모 요소의 위치에 영향을 받는다

즉 부모의 위치가 고정이면 absolute를 사용하는 자식 요소의 위치도 고정이라고 할 수 있다.

 

자 그러면 어떻게 사용해야 할 지 알아보자

native에서 scroll은 항상 scrollview나 flatList를 사용하게 된다.

이를 사용하면 scrollview 내부에서 스크롤을 하게 되므로 고정시키고자 하는 요소가 스크롤 내부에 없다면

스크롤 시 원하는 요소를 화면에 고정할 수 있다.

const testCode = () => {
	return <View>
    <ScrollView>
    	...컨텐츠
    </ScrollView>
	<Button></Button>
    </View>
}

위와 같이 스크롤 영역과 버튼을 따로 분리한다.

그리고 원하는데로 스타일을 입력해주면 스크롤을 해도 버튼이 화면 중앙에 표시되도록 할 수 있다.

const testCode = () => {
	return <View>
    <ScrollView style={{flex: 1}}> // 영역을 차지하도록 꼭 써줘야 한다.
    	...컨텐츠
    </ScrollView>
	<Button style={{position: absolute, top: 50%}}></Button>
    </View>
}

이 때 scrollView에는 꼭 영역의 크기를 지정해줘야 한다.

 

생각해보면 겁나 간단한건데 fixed 사용에 익숙해지다보니 구현할 생각을 못해서 방황했다.

그래도 생각보다 쉽게 구현할 수 있어서 다행이다.