개발자로 전향중

이틀 고생한 IOS mobileWeb Scroll 본문

Typescript

이틀 고생한 IOS mobileWeb Scroll

hovinee 2023. 1. 19. 18:55

step1. 아이폰의 UI는 어쨌든 HTML을 벗어나지 않으므로 html,body에 min-height 값을 준다.

 

  html,
  body {
    /* 배경 색상 지정 */
    background-color: black;
    /* 사파리 새로고침 막기 */
    overflow-x: hidden;
    /* overscroll-behavior: contain; */
    min-height: calc(var(--vh, 1vh) * 100);
    min-height: -webkit-fill-available;
  }

 

 

step2.  상단 새로고침을 없애고 싶을때 

나는 overscroll-behavior: contain을 하라고 하지만 나는 졸라게 안먹음..Apple 포럼에서 찾음!  addEventListener으로 높이에 도달시 e.prevenDefault()을 먹임.

근데 나는 gsap로 스크롤을 주고 있는 상황이었는데 맨아래 닿으면 스크롤이 동작을 안함! 그래서 end + 2000을 고려하여 스크롤이 맨아래 즉 2000에 닿기 전에만 실행하도록 조건을 추가하였음 만약 그냥 새로고침만 없애고 싶다면 저 조건은 제외해도 될듯

  useEffect(() => {
    let Elem = sectionRef.current
    let startY = 0

    //터치가 맨위 일
    Elem?.addEventListener(
      'touchstart',
      function (e: any) {
        startY = e.changedTouches[0].pageY
      },
      false
    )

    Elem?.addEventListener(
      'touchmove',
      function (e: any) {
        var currentY = e.changedTouches[0].pageY
        if (sectionRef.current?.scrollTop! <= 0 && startY <= currentY) {
          if (currentY < 2000) {
            e.preventDefault()
            return false
          }
        }
      },
      false
    )
  })

 

'Typescript' 카테고리의 다른 글

TpyeScript 어노테이션이란?  (0) 2023.03.14
Mbti input radio로 선택지 주고싶을때  (0) 2022.11.28
typescript redux toolkit 객체 타입 주기  (0) 2022.11.04
TypeScript interface 사용법  (0) 2022.09.01
Typescript 기본타입  (0) 2022.08.24