전체 글

전체 글

    모바일 웹에서 키패드 높이 계산

    // 모바일 키패드 높이 계산 if (window.visualViewport) { window.visualViewport.addEventListener('resize', () => { let visualViewportHeight = window.visualViewport?.height || 0; let windowHeight = window.innerHeight; let keyboardHeight = windowHeight - visualViewportHeight; setKeyboardHeight(keyboardHeight); }); }

    [CI/CD] 아무것도 모르는 상태에서 Github Actions 를 이용한 TestFlight 업로드 자동화(삽질 회고)

    [CI/CD] 아무것도 모르는 상태에서 Github Actions 를 이용한 TestFlight 업로드 자동화(삽질 회고)

    Github Actions로 CI/CD를 구현하여 앱 빌드 & TestFlight 업로드 자동화를 만들어야 하는 일이 생겨 아무것도 모르는 상태에서 1주일 동안 삽질해가며 마침내 구현하였고 모르고 시작하는 분들의 어려움을 조금이나마 덜고자 진행 내용에 대한 회고를 공유합니다. 우선 정말 진행의 90%를 보고 따라 했던 좋은 포스팅이 있어 소개합니다. https://sujinnaljin.medium.com/ci-cd-github-actions-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-testflight-%EC%97%85%EB%A1%9C%EB%93%9C-%EC%9E%90%EB%8F%99%ED%99%94-8ecdbeb227a3 [CI/CD] Github Actions 를 이용한 Te..

    CSS 단위 em 과 rem 정리

    절대적인 속성에 사용하는 단위에는 px를 사용하고 상대적인 속성에는 %, v*(뷰포트), em, rem을 사용합니다. 단위를 사용하는 기준 첫 번째로 나누는 기준은 부모 요소의 사이즈에 따라서 사이즈가 변경이 돼야 한다면 -> %, em 을 사용합니다. 부모 요소와는 상관없이 브라우저 사이즈에 대해서 반응해야 한다면 -> v*(뷰포트), rem을 사용합니다. 두 번째로 나누는 기준은 요소의 너비와 높이에 따라서 사이즈가 변경되어야 한다면 -> %, v*(뷰포트) 를 사용합니다. font 사이즈에 따라서 사이즈가 변경되어야 한다면 -> em, rem을 사용합니다. rem rem을 사용해서 스타일을 적용하게 되면 root 요소 (html)의 font size에 따라서 크기가 결정되기 때문에 페이지 내에 어느..

    BOM (Browser Object Model)

    BOM을 알아야 하는 이유 ❗유저에게 경고창을 띄우고 싶은 경우, ❗유저의 yes or no와 같은 선택에 따라 다른 응답을 보여주고 싶은 경우 ❗유저가 브라우저 창을 닫기 전에 정말 떠날 것인지 확인하고 싶은 경우 ❗유저가 접속한 환경을 알고 싶은 경우 ❗현재 url 위치 및, 접속 history를 알고 싶은 경우 여러 ui를 직접 만들고 자바스크립트로 직접 제어할 수도 있지만, 브라우저에서 제공하는 기본 API를 사용한다면 훨씬 빠로고 간단하게 프로토타이핑을 할 수 있습니다. BOM(Browser Object Model)은 웹 브라우저 환경의 다양한 기능을 객체처럼 다루는 모델입니다. 대부분의 브라우저에서 구현은 되어있지만, 정의된 표준이 없어 브라우저 제작사 마다 세부사항이 다르고 다소 한정적이라는..

    JS 이벤트 위임

    이벤트 리스너를 지정하는 요소가 많으면 많을수록 페이지의 실행 속도는 느려집니다. 그래서 효율적으로 이벤트를 관리하기 위해서 이벤트의 흐름을 이용합니다. 이벤트는 이벤트가 발생한 엘리먼트를 포함하고 있는 부모 요소에도 영향을 미치기 때문에 자식 요소를 포함할 수 있는 요소에 이벤트 핸들러를 지정하고 이벤트의 흐름을 이용해 다룰 수 있습니다. 즉, 이벤트 리스너가 실행할 작업을 요소의 부모 요소에게 위임(Delegation)할 수 있다는 것입니다. 이벤트 위임의 장점들 동적으로 추가되는 요소들에도 동작한다. DOM트리에 새로운 요소를 추가하더라도 이벤트에 대한 처리는 부모 요소에게 위임되었기 때문에 새로운 요소에 이벤트 핸들러를 다시 지정할 필요가 없다. 코드의 간결 이 기법을 이용하면 함수를 많이 작성할..