본문 바로가기

WEB Basic/JavaScript16

[JavaScript] 스크롤 위치에 따라 상단 프로그래스 바 구현하기 1. 구현 결과 미리보기 HTML 삽입 미리보기할 수 없는 소스 2. 분석 웹 페이지에서 스크롤 위치에 따라 상단에 나타나는 프로그래스 바를 구현하는 방법을 알아보겠습니다. 이 기능은 사용자에게 페이지 스크롤의 진행 상태를 시각적으로 표시하여 사용성을 향상시킬 수 있습니다. 스크롤 프로그래스바를 적용하면 얻을 수 있는 이점 시각적 피드백: 로딩 및 스크롤 중에 프로그래스 바를 통해 현재 진행 중인 작업을 시각적으로 알 수 있습니다. 진행 상태 시각화: 페이지 스크롤 위치를 표현하여 사용자에게 현재 위치 및 전체 콘텐츠 양을 시각적으로 제시합니다. 사용자 참여 유도: 스크롤 시 프로그래스 바의 업데이트로 사용자를 더 많은 스크롤로 유도하며, 새로운 콘텐츠에 호기심을 유발합니다. 페이지 떠나지 않도록 유도:.. 2024. 1. 19.
HTML, CSS, JavaScript로 아래에서 위로 나타나는 액션시트(Action Sheet) 구현하기 1. 구현 결과 미리보기 2024. 1. 18.
[JavaScript] 스크롤 시 나타나는 효과 구현하기: Intersection Observer API 1. 구현 결과 미리보기 HTML 삽입 미리보기할 수 없는 소스 2. 분석 1. 동작 원리: 화면 스크롤 시 요소의 교차 영역을 감지하고, 이벤트를 통해 페이드 인 효과를 부여합니다. 2. 주요 기능: 비동기적 감지: 브라우저 성능에 부담을 주지 않으면서 화면에 보이는 요소의 상태를 확인합니다. 이벤트 기반 실행: 스크롤 시 교차 영역의 변화를 감지하여 콜백 함수를 실행하여 페이드 인 효과를 적용합니다. 이벤트 리스너를 사용자가 `addEventListener`함수로 직접 추가하는 개념이 아니라, `IntersectionObserver API`에 관찰 대상으로 등록된 요소들에 스크롤 이벤트가 추가 됩니다. 활용 예시로 화면에 표시되는 각 섹션에 Fade In 효과를 부여하기 위해 Intersection .. 2024. 1. 16.
자바스크립트 주소찾기 기능 구현 with 다음 우편번호 API 1. 분석 웹 프로젝트를 진행할 때, 특히 쇼핑몰같이 배송정보가 필요한 웹 프로젝트를 진행하는 경우 필수가 되는 기능인 주소찾기 기능을 구현한다. 그 중 전국의 모든 주소를 개인 DB에 저장하거나 현행화 하는 것이 불가능 하다고 봐야 하는데, 다음(카카오) 우편번호 API가 공개돼 있어서 API key가 없이도 사용이 가능하다. 가이드 페이지에서 아래와 같이 다음 우편번호 API를 소개하고있다. https://postcode.map.daum.net/guide Key를 발급 받을 필요가 없습니다. 사용량에 대한 제한이 없습니다. 기업용이든 상업적 용도이든 상관없이 무료로 사용 가능합니다. 위와 같은 이유에서 웹 프로젝트에 주소 찾기 기능을 구현할 때 디자인 커스텀이 반드시 필요한 경우가 아닌 경우 다음 우.. 2023. 2. 1.
Vanilla JavaScript Slider 자바스크립트 자동 슬라이드 구현 1. 분석 이전 무한 슬라이드 구현 포스팅에 이어서 자동 슬라이드를 구현해본다. 외부 라이브러리를 사용하지 않고 순수 자바스크립트만을 이용해 자동 슬라이드를 구현한다. 자동 슬라이드를 구현하기 위해선 기본적인 슬라이드 기능과 무한 슬라이드 기능이 구현된 상태에서 제대로 구현할 수 있다. 자동 슬라이드는 일정한 시간 간격으로 다음 슬라이드를 보여줘야 한다. 즉, 슬라이드 기능에서 다음 슬라이드를 보여주는 함수를 구현했다면 다음과 같이 `setInterval()`함수를 이용해서 일정 시간마다 다음 슬라이드를 보여주는 함수를 실행하도록 하면 된다. // 기본적으로 슬라이드 루프 시작하기 let loopInterval = setInterval(() => { nextMove(); // 다음 슬라이드를 보여주는 함.. 2022. 5. 22.
Vanilla JavaScript Slider 자바스크립트 무한 슬라이드 구현 1. 분석 이전 슬라이드 드래그 구현 포스팅에 이어서 무한 슬라이드 기능을 구현하려 한다. 외부 라이브러리를 사용하지 않고 순수 자바스크립트만을 이용해 무한 슬라이드를 구현한다. 무한 슬라이드를 구현하기 위해선 처음과 마지막 슬라이드에서 이전, 이후로 이동했을 때 자연스럽게 슬라이드가 진행돼야 한다. 예를 들자면 1, 2, 3, 4, 5 슬라이드가 존재할 때 5번에서 다음 버튼을 눌렀을 때 1번 슬라이드를 보여주는 것이다. 따라서 시각적으로 자연스럽게 무한 슬라이드를 구현하기 위해 처음과 마지막 슬라이드를 각각 복제 해서 슬라이드를 보여줄 것이다. 먼저 엘리먼트를 복제한다. 복제하는 단계에서 엘리먼트 태그, 클래스, 앨리먼트 안의 내용을 모두 복사해준다. // 무한 슬라이드를 위해 start, end 슬.. 2022. 5. 21.
Vanilla JavaScript Slider 자바스크립트 슬라이드 드래그(drag), 스와이프(swipe) 구현 1. 분석 이전 슬라이드 페이지네이션 구현 포스팅에 이어서 드래그 기능을 추가한 슬라이드를 구현하려 한다. 이번에도 마찬가지로 Jquery나 다른 API를 사용하지 않고 순수 자바스크립트만을 이용해 슬라이드 드래그(스와이프)를 구현하려 한다. 드래그(스와이프)로 슬라이드를 조작하기 위해서 자바스크립트의 DOM 이벤트(MDN 이벤트 리스트)를 이용한다. 드래그는 PC에서 마우스 버튼 누르기(mousedown), 마우스 버튼 떼기(mouseup) 이벤트를 이용해서 드래그를 구현하고, 스와이프는 모바일기기에서의 터치 시작(touchstart), 터치 끝(touchend) 이벤트를 이용해서 스와이프를 구현한다. 시작 위치(startPoint)와 끝 위치(endPoint)를 각 이벤트마다 할당받아서 시작 위치와 .. 2022. 5. 10.
Vanilla JavaScript Slider 자바스크립트 슬라이드 페이지네이션(pagination) 구현 1. 분석 이전 슬라이드 버튼 구현 포스팅에 이어서 페이지네이션 기능을 추가한 슬라이드를 구현하려 한다. 이번에도 마찬가지로 Jquery나 다른 API를 사용하지 않고 순수 자바스크립트 만을 이용해 슬라이드 페이지네이션을 구현한다. 먼저 페이지네이션을 생성할 때 슬라이드 전체 개수(maxSlide)만큼 반복하여 페이지네이션 엘리먼트를 추가시킨다. 이후 페이지네이션 클릭 시 슬라이드의 이동은 슬라이드 버튼 구현시 left offset을 이용해 슬라이드를 이동시킨것을 똑같이 이용해서 페이지네이션 클릭 시 이동할 수 있게 할 것이다. 페이지네이션을 추가 했으므로 이전, 이후 버튼 클릭시에도 페이지네이션의 위치가 똑같이 연동될 수 있도록 해야한다. 버튼 클릭 이벤트에 구현해놓은 부분에 버튼 클릭으로 이동된 현재.. 2022. 5. 4.
Vanilla JavaScript Slider 자바스크립트 슬라이드 네비게이션 버튼 구현 1. 분석 Jquery나 다른 API를 사용하지 않고 순수 자바스크립트만을 이용해 슬라이드를 네비게이션 버튼을 구현하려 한다. 자바스크립트의 DOM 조작과 CSS의 flex, position을 이용해 구현해본다. 슬라이드 컨테이너, 슬라이드 아이템의 개념을 이해한다. 이전, 이후 버튼 클릭 시 슬라이드 아이템에 left offset을 적용시켜 이동할 수 있도록 구현할 것이다. 이동하는 과정에서 현재 슬라이드 위치를 기억하는 변수를 만들어 첫번째와 마지막 슬라이드 이외로 넘어가지 않도록 조건문을 걸어 슬라이드가 이상하게 작동하지 않도록 예방한다. 2. 구현 결과 미리보기 구현된 버튼 슬라이드는 아래와 같이 작동한다. HTML 삽입 미리보기할 수 없는 소스 3. 구현 3.1. HTML - index.html.. 2022. 5. 3.
JavaScript var, let, const with variable hoisting 1. 자바스크립트 변수 할당 자바스크립트에서 변수가 할당될 때는 아래와 같은 3단계를 거친다. 1) 선언 단계(Declaration phase)변수를 실행 콘텍스트의 변수 객체(Variable Object)에 등록한다. 이 변수 객체는 스코프가 참조하는 대상이 된다. 2) 초기화 단계(Initialization phase)변수 객체(Variable Object)에 등록된 변수를 위한 공간을 메모리에 확보한다. 이 단계에서 변수는 undefined로 초기화된다. 3) 할당 단계(Assignment phase)undefined로 초기화된 변수에 실제 값을 할당한다. 1.1 var var 키워드로 선언된 변수는 선언과 초기화 단계가 한 번에 일어난다. 자바스크립트 ES6문법 이전에는 var 키워드를 사용했는데.. 2021. 7. 7.
[JavaScript30] 05. Flex Panel Gallery - flex layout, toggle click JavaScript30 - 바닐라 자바스크립트 Day5 1. 소스코드 - HTML Hey Let's Dance Give Take Receive Experience It Today Give All You can Life In Motion 2. 주목할 만한 문법 2.1. CSS Flex layout - 웹 레이아웃을 디자인할 때 HTML과 CSS 스펙이 발달하기 전처럼 float, table로 레이아웃을 설계하는 것이 아닌 display: flex; 플렉스 속성으로 쉽고 강력하게 레이아웃을 디자인할 수 있다. - flex layout은 레이아웃을 설계할 때 컨테이너 크기에 유연하게 설계할 수 있기 때문에 반응형 웹 디자인을 할 때에도 많이 사용된다. 참고: developer.mozilla.org/ko/doc.. 2021. 3. 8.
[JavaScript30] 04. Array Cardio Day 1 - 배열 메서드 활용 1 JavaScript30 - 바닐라 자바스크립트 Day4 1. 소스코드 - HTML Psst: have a look at the JavaScript Console 💁 2. 주목할 만한 문법 2.1. 배열 조건 검사 - Array.prototype.filter() - filter() 메서드는 배열의 요소를 조건에 따라 분류해 새로운 배열을 반환하는 메서드다. - 메서드 사용 방법은 배열.filter(함수); 이다. - 함수에서 조건을 명시하여 조건에 맞는 값들만 배열값으로 반환한다. const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present']; const result = words.filter(word => word.leng.. 2021. 3. 7.