jQuery: 제이쿼리 이미지 지연 로딩(lazy loading) 플러그인 (jQuery Lazy)

jQuery Lazy 웹사이트 이미지의 레이지 로딩을 할 수 있도록 하는 제이쿼리 플러그인입니다. 레이지 로딩이란 인터넷이 느린 환경에서 브라우저가 HTML 컨텐츠를 로딩하는 과정에서 이미지를 같이 로딩에 포함시켜 먹통이 되는 것을 방지하기 위하여, 이미지 데이터를 제외한 HTML을 우선적으로 렌더링한 뒤 이미지는 HTML 로딩이 끝난 후 나중에 불러오는 것을 뜻합니다. 이 플러그인을 사용하면 더보기…

CSS로 말풍선 툴팁 만들기 (cssarrowplease.com 이용)

https://cssarrowplease.com/ 위 사이트에 접속하면 CSS 말풍선을 만들 수 있습니다. 옵션 사항을 설정한 뒤 CSS를 복사해서 사용하면 됩니다. 단, 위의 CSS 는 기본 틀만 제공하기 때문에 그대로 붙여넣은 경우 왼쪽의 예제 그림처럼은 나오지 않습니다. 일종의 표지사기와 같습니다. 따라서 원하는 모양을 위해서는 추가 CSS를 작성해야 합니다. (밑의 코드의 customize tooltip 부분 참고) 더보기…

자바스크립트(JavaScript)에서 쿼리 파라미터(query parameter) 값을 알아내는 방법

URL의 쿼리 파라미터란 아래 빨간색 박스처럼 ? 뒤에 지정하는 파라미터를 뜻합니다. 여러 개를 연결할 때는 & 를 씁니다. 쿼리 스트링(query string)이라고도 합니다.   ES6 이상인 경우 const urlParams = new URLSearchParams(window.location.search); const uwasaKeyword = urlParams.get(‘uwasaKeyword’); URLSearchParams는 최신 스펙으로 인터넷 익스플로러에서는 지원하지 않습니다. (브라우저별 호환성 확인)   ES5 이하인 경우 호환성을 고려할 때는 이 방법을 더보기…

자바스크립트: input file에서 이미지 미리보기 기능 만들기 (한 개, 여러 개)

1) 이미지가 1개인 경우 미리보기 이미지가 표시될 이미지 태그를 생성하고, input file 태그를 생성하고, 자바스크립트의 FileReader()를 통해 이미지가 로딩되면 이미지 태그의 src 속성이 교체되도록 합니다. <div class=”image-container”> <img style=”width: 500px;” id=”preview-image” src=”https://dummyimage.com/500×500/ffffff/000000.png&text=preview+image”> <input style=”display: block;” type=”file” id=”input-image”> </div> function readImage(input) { // 인풋 태그에 파일이 있는 경우 if(input.files && input.files[0]) 더보기…

리액트(React): React Redux 요약 정리

이 글은 위 동영상 강의들을 요약 정리한 것입니다.   Redux와 React Redux는 같은 의미인가요? 아닙니다. Redux는 상태 관리 라이브러리로, 상태관리 패턴인 Flux의 일부를 변형하여 간단하게 상태 관리가 가능하도록 만들었습니다. 이것은 제이쿼리, 일반 자바스크립트, 다른 SPA 프레임워크 등 다양한 환경에서 사용가능하도록 제작되었으며 리액트 전용으로 만들어진 것은 아닙니다. Redux의 상태관리 기법을 리액트 더보기…

자바스크립트 예제: 2차원 정방형 배열(square array) 여러 번 회전

알고리즘에 대한 설명은 여기에 나와 있습니다. 여기에서는 공식만 설명합니다. 정방형 배열은 행과 열의 수가 같은 2차원 배열을 뜻합니다. 이러한 정방형 배열은 회전할 수 있는 경우는 4가지 밖에 없습니다. 오른쪽으로 90도 회전 (왼쪽으로 270도 회전) 오른쪽, 왼쪽으로 180도 회전 오른쪽으로 270도 회전 (왼쪽으로 90도 회전) 오른쪽, 왼쪽으로 360도 회전 -> 이것은 더보기…

자바스크립트 ES6+: 모듈(module) 기능을 이용하여 리액트의 hook 흉내내기 (reactify)

예전에 어느 프론트엔드 과제 테스트에서 아래와 같은 요구사항을 제시한 적이 있습니다.   요약하면 ‘순수 자바스크립트로 리액트와 유사한 구조의 웹 페이지를 만들어봐라‘ 이런 뜻인데요, 준비가 되어 있지 않은 상태에서 이런 요구사항을 접하면 많이 난감할 것이라고 생각됩니다. 문제에서 컴포넌트를 제작할 때 function, class 둘 중 하나를 택하라 했는데 여기서는 function을 선택해서 간단한 더보기…

리액트(React): useState (함수형 컴포넌트에서 변수 관리)

리액트에서 function 기반 컴포넌트(hook)는 한 번 렌더링되고 끝나는 것이 아닙니다. 리액트의 컴포넌트는 실시간으로 끊임없이 렌더링되며 여기서 일반 변수 등을 사용하면 컴퓨터의 자원 낭비와 성능 저하를 불러올 수 있습니다. 리액트의 함수 컴포넌트 체제에서 변수 등의 상태들을 관리할 수 있는 방법이 여러 가지 있는데 useState는 상태 관리의 아주 기초적인 형태입니다. 통상적인 변수 더보기…

자바스크립트 ES6+: 동적으로 모듈 임포트(import) 하기

자바스크립트 ES6+ 문법에는 import 가 있습니다. 예를 들어 import func from './func.js' 이런 식입니다. 위의 예제를 정적 import라고 합니다. 정적 임포트에는 단점이 있는데 1) 임포트 구문에 변수 사용이 불가능하다는 점과, 2) if 문등의 분기점에서 사용할 수 없다는 단점이 있습니다. 이러한 정적 임포트의 단점을 해결할 수 있는 것이 동적 임포트(dynamic module 더보기…

자바스크립트: 파일을 특정 영역으로 드래그 앤 드롭하기 (라이브러리 없이)

아래 화면처럼 브라우저의 외부 파일 탐색기에서 파일을 드래그 앤 드랍하여 <input type=file>에 파일을 입력받는 방법입니다. 제이쿼리를 사용하면 좋긴한데 여기서는 제이쿼리 없이 작성했습니다. 호환성을 위해 ES5 이하 스펙으로 작성하였습니다.   This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the 더보기…