JQuery UI
1. 개요
jQuery UI는 jQuery 라이브러리를 기반으로 하는 사용자 인터페이스(UI) 라이브러리이다. 상호작용, 위젯, 효과, 유틸리티 등 다양한 기능을 제공하며, 웹 페이지 요소의 드래그, 드롭, 크기 조절, 선택, 정렬과 같은 마우스 기반 대화형 기능을 구현한다. 위젯은 테마를 적용할 수 있는 컨트롤을 제공하며, 자동 완성, 날짜 선택기, 진행률 표시줄, 슬라이더 등이 포함된다. 또한 애니메이션 효과를 통해 사용자 인터페이스를 풍부하게 만들며, 2007년 9월에 처음 출시되었다.
| 개발자 | Paul Bakaus Scott González Jörn Zaefferer Felix Nagel Mike Sherov Rafael Xavier de Souza |
|---|---|
| 최신 릴리스 버전 | 1.13.0 |
| 최신 릴리스 날짜 | 2021년 10월 7일 |
| 장르 | 플러그인 |
| 프로그래밍 언어 | 자바스크립트 |
| 라이선스 | MIT 허가서 |
| 웹사이트 | jQuery UI 공식 웹사이트 |
| 상태 | 활성 |
|---|---|
| 최신 미리보기 버전 | 1.13.0-rc.3 |
| 최신 미리보기 날짜 | 2021년 9월 25일 |
-
CSS 프레임워크 -
YAML (프레임워크)
YAML 프레임워크는 다양한 콘텐츠 관리 시스템 및 전자 상거래 시스템을 위한 템플릿을 제공하며, TYPO3, 드루팔, 줌라!, 닷넷누크, xt:Commerce, ExpressionEngine, MODX, Papaya CMS, Serendipity, 워드프레스 등 여러 CMS를 지원한다. -
CSS 프레임워크 -
부트스트랩 (프론트엔드 프레임워크)
부트스트랩은 마크 오토와 제이콥 손턴이 개발한 HTML, CSS, JavaScript 기반의 프론트엔드 프레임워크이며, 반응형 웹 디자인, 모바일 우선 접근 방식, 다양한 컴포넌트 등을 제공하여 웹 페이지 개발을 단순화하는 데 사용된다. -
MIT 라이선스 소프트웨어 -
MS-DOS
MS-DOS는 마이크로소프트가 개발한 개인용 컴퓨터용 디스크 운영 체제로, IBM PC의 표준 운영 체제로 널리 사용되었으며, 단일 작업 환경과 명령줄 인터페이스를 특징으로 한다. -
MIT 라이선스 소프트웨어 -
Zcash
Zcash는 존스 홉킨스 대학교 연구를 기반으로 개발된 익명성 강화 암호화폐로, zk-SNARK 영지식 증명을 통해 거래 당사자의 익명성을 보장하지만, 범죄 악용 우려와 규제 대상 가능성이 존재한다. -
자바스크립트 라이브러리 -
구글 웹 툴킷
구글 웹 툴킷(GWT)은 자바 코드를 자바스크립트로 변환하여 웹 애플리케이션 개발을 지원하는 도구로, 개발자가 자바 언어로 Ajax 애플리케이션을 개발하고 GWT 컴파일러를 통해 최적화된 자바스크립트 파일로 변환할 수 있게 한다. -
자바스크립트 라이브러리 -
AngularJS
AngularJS는 동적 웹 애플리케이션 개발을 용이하게 하기 위해 설계된 오픈 소스 자바스크립트 프레임워크로, MVC 패턴 적용, 의존성 주입, HTML 확장 디렉티브 제공, 양방향 데이터 바인딩 등의 특징을 가지며, 장기 지원은 종료되었지만 웹 개발에 중요한 영향을 미쳤다.
2. 기능
jQuery UI는 웹 페이지의 사용자 인터페이스를 향상시키기 위한 다양한 기능을 제공하며, 크게 상호작용, 위젯, 효과, 유틸리티 네 가지 범주로 나눌 수 있다.
1.11.4 릴리스 기준으로, 마우스를 이용한 드래그 앤 드롭이나 요소 정렬과 같은 상호작용 기능이 지원된다. 또한, 자동 완성, 날짜 선택기, 진행률 표시줄, 슬라이더 등 다양한 위젯을 제공하며, 이 위젯들은 테마 기능을 통해 디자인을 자유롭게 변경할 수 있다. 색상 애니메이션, 클래스 전환 효과 등 시각적인 효과 기능도 포함하고 있다.
jQuery UI의 기능들은 필요에 따라 개별적으로 선택하여 다운로드할 수 있어 파일 크기를 줄이는 데 유리하다. 이러한 모듈식 구성은 서드 파티 개발자가 직접 테마를 만들어 제공하는 것을 가능하게 한다. 예를 들어, jQUIT Builder에서는 윈도우 8 스타일의 UI를 모방한 테마를 제공하기도 한다.
2.1. 상호작용
사용자와 웹 페이지 간의 상호작용을 지원하는 기능들이다. 마우스 기반의 대화형 기능을 구현하는 데 사용된다. 1.11.4 릴리스부터 드래그 가능/드롭 가능 및 정렬 가능과 같은 상호 작용이 지원된다.
JQuery UI에서 제공하는 주요 상호작용 기능은 다음과 같다.
* 드래그 (Draggable): 각 요소에 대한 드래그 기능을 구현한다.
* 드롭 (Droppable): 드래그와 함께 사용되어 요소의 드롭을 가능하게 한다.
* 크기 조절 (Resizable): 요소의 크기 조절을 구현한다.
* 선택 가능 (Selectable): 여러 요소를 선택할 수 있게 한다.
* 정렬 가능 (Sortable): 요소의 정렬을 할 수 있게 한다.
2.2. 위젯
jQuery UI의 위젯은 웹 사이트 이용자가 시각적으로 상호작용하는 컨트롤 요소이다. 모든 위젯은 테마 메커니즘을 통해 디자인을 변경할 수 있다. 위젯은 기능별로 분할하여 다운로드할 수 있어 파일 크기를 줄이는 데 유리하며, 서드 파티가 제작한 테마를 적용하는 것도 가능하다. 예를 들어, jQUIT Builder에서는 윈도우 8 스타일 UI를 모방한 테마를 제공하기도 한다.
다음은 jQuery UI에서 제공하는 주요 위젯 목록이다.
| 위젯명 | 설명 |
|---|---|
| 아코디언 (Accordion) | 여러 패널 중 하나만 열어 내용을 보여주는 컨테이너. |
| 자동 완성 (Autocomplete) | 사용자의 입력에 기반하여 추천 목록을 보여주는 자동 완성 상자. 메뉴(Menu) 위젯과 함께 사용된다. |
| 버튼 (Button) | 기본적인 버튼 외형을 개선하고, 라디오 버튼과 체크상자를 누름 버튼 형태로 변환할 수 있다. |
| 날짜 선택기 (Datepicker) | 날짜 선택 기능을 제공하는 달력 인터페이스. 텍스트 상자 등에 선택된 날짜를 입력할 수 있다. |
| 대화 상자 (Dialog) | 다른 콘텐츠 위에 표시되는 대화 상자 창. 제목 표시줄, 콘텐츠 영역, 버튼 등으로 구성되며, 버튼(Button) 위젯과 함께 사용된다. |
| 메뉴 (Menu) | 드롭다운 또는 중첩된 형태의 메뉴를 표시한다. |
| 프로그레스바 (Progressbar) | 작업 진행 상태를 시각적으로 보여주는 상태 표시줄. 애니메이션 효과를 포함하거나 제외할 수 있다. |
| Selectmenu | 네이티브 HTML 셀렉트 요소의 기능을 복제하고 확장하여 제한을 극복한다. |
| 슬라이더 (Slider) | 사용자가 특정 범위 내에서 값을 선택할 수 있도록 하는 슬라이더 컨트롤. |
| 스피너 (Spinner) | 숫자 값을 위아래 버튼으로 조절할 수 있는 입력 필드. 버튼(Button) 위젯과 함께 사용된다. |
| 탭 (Tabs) | 콘텐츠를 여러 탭으로 나누어 보여주는 인터페이스. 인라인 콘텐츠 또는 Ajax를 통해 동적으로 콘텐츠를 불러올 수 있다. 버튼(Button) 위젯과 함께 사용된다. |
| 툴팁 (Tooltip) | 특정 요소 위에 마우스를 올렸을 때 추가 정보를 보여주는 작은 도움말 상자. |
또한, jQuery UI 1.11.4 릴리스부터는 드래그 가능(Draggable), 드롭 가능(Droppable), 정렬 가능(Sortable)과 같은 상호 작용 기능도 위젯과 유사하게 지원된다.
2.3. 효과
jQuery에서 제공하는 기본 효과 기능을 확장하여, UI 요소가 표시되거나 사라질 때 다양한 애니메이션 효과를 적용할 수 있다.
* 색상 애니메이션 (Color Animation): 한 색상에서 다른 색상으로 부드럽게 전환하는 애니메이션 효과를 제공한다.
* 클래스 전환 (Toggle Class, Add Class, Remove Class, Switch Class): CSS 클래스를 추가, 제거, 전환하면서 스타일 변경에 애니메이션 효과를 적용한다.
* 효과 (Effect): 나타나기(Fade-in), 미끄러지기(Slide-down), 폭발하기(Explode) 등 미리 정의된 다양한 시각 효과를 제공한다.
* 토글 (Toggle): 지정된 효과를 사용하여 요소를 나타내거나 숨기는 동작을 전환한다.
* 숨기기/보이기 (Hide, Show): 위에서 언급된 효과들을 사용하여 요소를 숨기거나 표시한다.
2.4. 유틸리티
* Position – 다른 요소의 위치에 상대적으로 요소의 위치를 설정한다(정렬).
* Widget Factory – 모든 JQuery UI 위젯과 동일한 추상화를 사용하여, 상태를 저장하는(stateful) jQuery 플러그인을 생성한다.
3. 예제
다음은 jQuery UI를 사용하여 특정 HTML 요소를 사용자가 마우스로 드래그할 수 있도록 만드는 간단한 예제이다. 나를 드래그 해보세요
먼저, 드래그 기능을 적용할 HTML 요소를 준비한다. 아래 예시에서는 `id` 속성값이 "draggable"인 `div` 요소를 사용한다. 이 요소에 간단한 스타일을 적용하여 시각적으로 구분되도록 할 수 있다.
다음으로, JavaScript와 jQuery를 이용하여 해당 요소에 드래그 기능을 추가한다. DOM이 완전히 로드된 후 스크립트가 실행되도록 `$(function() { ... });` 구문 안에 코드를 작성한다. `#draggable` CSS 선택자를 사용하여 `id`가 "draggable"인 요소를 선택하고, `.draggable()` 메소드를 호출하여 드래그 기능을 활성화한다.
$(function() {
// id가 "draggable"인 요소를 드래그 가능하게 만듭니다.
$("#draggable").draggable();
});
위 코드를 웹 페이지에 적용하면, 사용자는 `id`가 "draggable"인 `div` 요소를 마우스로 클릭하여 원하는 위치로 자유롭게 끌어다 놓을 수 있게 된다. 이는 웹 인터페이스에서 사용자 경험을 향상시키는 데 유용하게 활용될 수 있다.
4. 출시 역사
jQuery UI는 2007년 9월 17일에 처음 출시되었다.
| 출시일 | 버전 번호 | jQuery 의존성 | 참고 |
|---|---|---|---|
| 2007년 9월 17일 | 1.0 (미표기) | 1.2.1+ | 초기 릴리스 |
| 2008년 6월 8일 | 1.5 | 1.2.1+ | |
| 2009년 4월 16일 | 1.6 | 1.2.6+ | jQuery 1.2.6 호환 릴리스. |
| 2009년 3월 3일 | 1.7 | 1.3.2+ | |
| 2010년 3월 18일 | 1.8 | 1.3.2+ | |
| 2011년 1월 19일 | 1.8.9 | 1.3.2+ | |
| 2011년 2월 22일 | 1.8.10 | 1.3.2+ | |
| 2011년 3월 15일 | 1.8.11 | 1.3.2+ | |
| 2011년 4월 13일 | 1.8.12 | 1.3.2+ | |
| 2011년 5월 12일 | 1.8.13 | 1.3.2+ | |
| 2011년 6월 17일 | 1.8.14 | 1.3.2+ | |
| 2011년 8월 1일 | 1.8.15 | 1.3.2+ | |
| 2011년 8월 15일 | 1.8.16 | 1.3.2+ | |
| 2012년 1월 10일 | 1.8.17 | 1.3.2+ | |
| 2012년 2월 20일 | 1.8.18 | 1.3.2+ | |
| 2012년 4월 16일 | 1.8.19 | 1.3.2+ | |
| 2012년 4월 30일 | 1.8.20 | 1.3.2+ | |
| 2012년 6월 5일 | 1.8.21 | 1.3.2+ | |
| 2012년 7월 24일 | 1.8.22 | 1.3.2+ | |
| 2012년 8월 15일 | 1.8.23 | 1.3.2+ | |
| 2012년 9월 28일 | 1.8.24 | 1.3.2+ | |
| 2012년 10월 8일 | 1.9.0 | 1.6+ | |
| 2012년 10월 25일 | 1.9.1 | 1.6+ | |
| 2012년 11월 23일 | 1.9.2 | 1.6+ | |
| 2013년 1월 17일 | 1.10.0 | 1.6+ | IE6 지원 중단 |
| 2013년 2월 15일 | 1.10.1 | 1.6+ | |
| 2013년 3월 14일 | 1.10.2 | 1.6+ | |
| 2013년 5월 3일 | 1.10.3 | 1.6+ | |
| 2014년 1월 17일 | 1.10.4 | 1.6+ | |
| 2014년 4월 25일 | 1.11.0-beta.1 | 1.6+ | IE7 지원 중단 |
| 2014년 5월 23일 | 1.11.0-beta.2 | 1.6+ | |
| 2014년 6월 26일 | 1.11.0 | 1.6+ | |
| 2014년 8월 13일 | 1.11.1 | 1.6+ | |
| 2014년 10월 16일 | 1.11.2 | 1.6+ | |
| 2015년 2월 12일 | 1.11.3 | 1.6+ | |
| 2015년 3월 11일 | 1.11.4 | 1.6+ | |
| 2016년 1월 26일 | 1.12.0-beta.1 | 1.7+ | IE8, IE9, IE10 지원 중단 |
| 2016년 3월 17일 | 1.12.0-rc.1 | 1.7+ | |
| 2016년 4월 21일 | 1.12.0-rc.2 | 1.7+ | |
| 2016년 7월 8일 | 1.12.0 (미발표) | 1.7+ | |
| 2016년 9월 14일 | 1.12.1 | 1.7+ | |
| 2021년 10월 7일 | 1.13.0 | 1.8+ | |
| 2022년 7월 14일 | 1.13.2 | 1.8+ |