본문 바로가기
[ Script ]/JAVA Script

[ JAVA Script ] Mobile Web UI구현

by 환이s 2023. 2. 28.

오늘은 스마트폰에서 흔히 보이는 모바일 웹 UI구현에 대해서 포스팅해보려 합니다.

 

 

■  Mobile Web이란?

 

앞서 말씀드린 것처럼 일상에서 우리는 흔히 스마트폰에서 검색하는 웹 페이지가 바로 일반적인 모바일 웹입니다.

모바일 웹은 모바일에서도 PC용 사이트의 글자 폰트와 이미지, 터치아이콘등 데이스탑 브라우저에서 실행되는 기능을 모바일에 맞춰 표현한 사이트로서 PC용 홈페이지를 모바일 스크린 크기로 줄여 놓은 것이라고 할 수 있습니다.

 

이러한 이유로 모바일 웹은 일반 PC용 웹 페이지에 비해서 간단한 UI를 가지고 있습니다.

 

 

이 글은 CSS와 JAVAScript를 활용한 모바일 웹 제작 방법과 jQueryMobile로 구현할 때의 몇 가지 팁에 대해 설명하겠습니다.

 

■  jQuery Mobile

 

jQueryMobile은 모바일 웹을 제작하는데 도움을 주는 모바일 프레임워크 중 하나입니다. 

 

 jQuery Mobile의 기본 구조에 대해서 알아보려면 아래 사이트를 참고하시면 됩니다.

 

- 1개의 css 파일과 2개의 JAVAScript 라이브러리를 포함시킵니다. 따라서 JAVAScript와 연계된 약속된 css를 써야 하기 때문에 임의로 css처리를 하면 화면이 정상적으로 처리가 안될 수 있습니다.

 

 

Download | jQuery Mobile

 

이 글에서 사용될 버전은 1.4.5 버전으로 최신 버전을 사용합니다.

 

<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>

 

태그의 기본구조는 다음과 같습니다.

 

- 태그에 data-role 을 지정함
header : header 영역
content : 내용 영역
footer : footer 영역
listview : 리스트뷰 형식
button : 버튼 형식

 

■  Mobile UI 프레임워크

 

  •  모바일 환경에서는 사용자 경험(UX; User Experience)이 강조됩니다.

 

  1.  UX :  UX는 사용자가 특정 제품, 서비스를 직, 간접적으로 이용하며 느끼고 생각하는 총제적 경험이라고 이해하시면 좋을 거 같습니다.
  2. 모바일 장치의 작은 화면에서 사용자와 효율적으로 상호 작용할 수 있도록 다양한 사용자 경험이 제공됩니다.
  3. 웹 기술로 개발한 애플리케이션이 웹앱의 면모를 갖추려면 모바일 친화적인 UI 뿐만 아니라 최적화된 터치 반응, 자연스러운 화면 전환 등의 추가적인 UX 특성이 필요합니다.
  4. 모바일에 최적화된 UX 특성의 많은 부분을 직접 개발하는 대신에 프레임워크를 통해 처리할 수 있습니다.

 

  • 모바일 UI 프레임워크

 

  1. UX를 반영한 사용자 인터페이스를 라이브러리로 제공함으로써 모바일용 웹앱 UI를 빠르고 쉽게 만들 수 있는 도구입니다.
  2. 네이티브앱과 유사한 화면 구성과 화면 전환 효과를 갖는 UI를 빠르고 쉽게 만들 수 있도록 지원합니다.
  3. 대부분 공개 코드로 개발되어 제공되므로 무료로 사용 가능합니다.

 

주요 모바일 UI 프레임워크 종류는 아래 표를 참고해 봅시다.

 

종 류  특 징
제이쿼리 모바일(jQuery Mobile) jQuery를 확장한 프레임워크이다.

HTML5 태그 기반 개발 방식으로 배우기 쉽다.
대부분의 모바일 플랫폼을 지원한다.
성장 가능성이 높다.
폰갭과 조합이 용이하다.
센차 터치(Sencha Touch) 확장된 자바스크립트(Ext JS) 기반 프레임워크이다.

가장 방대하고 체계적인 API를 보유
스크립트 기반의 개발 방식.
자유로운 표현이 가능하지만 개발 난이도가 높다.
제이쿼리 모바일보다 반응 속도가 빠름.
제이큐 터치(JQTouch) 가장 먼저 공개된 프레임워크이다.

현재는 sencha사에 흡수됨.
지원 기능이 단순하고 사용하기 쉽다.
태그 기반 개발 방식이다.

 

■  프레임워크 기본 구성 형식

 

jQuery Mobile 페이지 구조 형식은 페이지, 헤더, 콘텐츠, 푸터로 정의할 수 있습니다.

 

- page : 브라우저에 보이는 전체 화면 영역(data-role="page") , 헤더 콘텐츠, 푸터를 포함하는 컨테이너 역할을 합니다.

 

- header : 페이지 상단의 툴바 영역입니다.(data-role="header")

 

- content : 페이지 중앙의 실제 페이지 내용이 표시되는 영역입니다.(data-role="content")

 

- footer : 페이지 하단의 툴바 영역입니다.(data-role="footer")

 

 

■  페이지 연결  방식

 

페이지 연결 방식은 두 가지 있습니다. 내부 페이지, 외부 페이지 연결 방식이 있는데, 특징은 다음과 같습니다.

 

  • 내부 페이지 연결

 

  1. 하나의 HTML5 파일 안에 여러 페이지를 명세하여 서로 연결하는 방법입니다.
  2. 다중 페이지 템플릿을 적용하는 형태로 각 내부 페이지들은 Ajax를 통해 내부 링크 방식으로 연결됩니다.
  3. 같은 HTML5 파일 안에 함께 정의된 페이지들은 항상 내부 페이지 연결 방식을 취합니다.
  4. 연결 방식은 내부(도메인) 링크 방식에 속합니다.

 

  • 외부 페이지 연결

 

  1. 여러 HTML5 파일 안에 페이지들을 나누어 명세하고 서로 연결하는 방법입니다.
  2. 각 HTML5 파일들은 단일 페이지 템플릿 또는 복수 페이지 템플릿을 적용합니다.
  3. 서로 다른 HTML5 파일 안의 외부 페이지들은 내부 링크 또는 외부 링크 방식으로 연결합니다.

 

모바일 페이지 연결 방식

 

앞서 특징에서 외부 페이지는 내부, 외부 링크 방식을 연결할 수 있다고 했는데, 각 특징 및 코드는 다음과 같습니다.

 

  • 외부 페이지의 내부 링크 방식

 

  1. 기본적으로 하나의 HTML 문서는 하나의 DOM트리를 구성합니다.
  2. 제이쿼리 모바일은 내부(도메인) 링크 방식으로 연결하면 DOM트리를 새롭게 생성하지 않고 대신 연결된 외부 페이지를 현재의 DOM 트리에 추가합니다.
  3. DOM트리에서 중복되는 엘리먼트 노드는 제거됩니다.
  4. 물리적으로는 다른 파일 안에 있더라도 내부 링크 방식으로 연결된 페이지들은 하나의 DOM 트리를 구성하기 때문에 Ajax에 의해 자연스러운 화면 전환 애니메이션 적용이 가능합니다.

 

제이쿼리 모바일의 페이지 연결 방식

 

  • 외부 페이지의 외부 링크 방식

 

  1. 외부 페이지를 링크를 통해 연결할 때 Ajax를 사용하지 않는 방식입니다.
  2. 고전적인 링크 방식이며, 풀페이지(full-page) 링크 방식입니다.
  3. 외부 페이지를 내부 링크 방식으로 연결하면 기존 HTML5 파일 안의(CSS3와 JAVAScript) 코드가 연결된 페이지에 영향을 미칩니다.(모바일 페이지의 스타일이나 기능이 페이지 링크 방식에 의해 깨지거나 다르게 동작)

※ 기존 DOM 트리는 제거하고 새로운 페이지로 DOM 트리가 구성되므로 링크에 따른 예상치 못한 변경을 차단할 수 있습니다.

 

 

■  data-transition

 

data-transition페이지 전환 효과를 제공합니다. 화면 전환 효과로 CSS3의 transition 스타일 속성에 기반하며, <a> 링크 태그 안에서 속성값을 설정할 수 있습니다.

 

data-transition 속성값은 아래 표를 참고해 봅시다.

 

data-transition 속성값 페이지 전환 효과
slide 왼쪽으로 수평이동(기본 효과)
slideup 위쪽으로 수직이동
slidedown 아래쪽으로 수직이동(slideup의 반대효과)
slidefade 수평이동 후 서서히 나타남
flip 페이지 회전(페이지 중앙 Y축 기준)
fade 페이드인(서서히 나타남)
pop 페이드 확장(화면 중앙에서 확대됨)
turn 페이지 뒤집기
flow 페이지 축소 후 좌우이동
none 또는 공백 미적용(전환효과 적용하지 않음)

 

data-transition 예제 코드를 통해서 알아봅시다.

 

<예제 1>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>page-transition</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
</head>
<body>

<div data-role="page" id="page1">
	<div data-role="header">
	<h1>첫번째 페이지</h1>
	</div>
	<div data-role="content">
	<a href="#page2">페이지2</a>
	</div>
	<div data-role="footer">
	<h4>내부링크방식</h4>
	</div>
</div>
<div data-role="page" id="page2">
	<div data-role="header">
	<h1>두번째 페이지</h1>
	</div>
	<div data-role="content">
	<p>페이지 전환 애니메이션 효과</p><br>
	<!--  data-direction="reverse" : 뒤로가기 속성 -->
	<a href="#page1" data-direction="reverse">페이지1</a><br>
	<a href="#page3" data-transition="slide" >페이지3 slide효과 적용</a><br>
	<a href="#page3" data-transition="slideup" >페이지3 slideup효과 적용</a><br>
	<a href="#page3" data-transition="slidedown" >페이지3 slidedown효과 적용</a><br>
	<a href="#page3" data-transition="flip" >페이지3 flip효과 적용</a><br>
	<a href="#page3" data-transition="fade" >페이지3 fade효과 적용</a><br>
	<a href="#page3" data-transition="pop" >페이지3 pop효과 적용</a><br>
	<a href="#page3" data-transition="none" >페이지3 none 적용</a><br>
	</div>
	<div data-role="footer">
	<h4>내부링크방식</h4>
	</div>
</div>
<div data-role="page" id="page3">
	<div data-role="header">
	<h1>세번째 페이지</h1>
	</div>
	<div data-role="content">
	<a href="#page1">페이지1</a>
	<a href="#page2" data-rel="back">페이지2</a>
	<!-- data-rel="back" : 웹브라우저의 뒤로가기 기능과 일치하게 동작(이전페이지의 상태를 그대로 복구) 
	data-direction="reverse : 이전페이지로 이동은 같지만, 이전페이지 상태 복원안하고 단순 페이지 이동
	-->
	</div>
	<div data-role="footer">
	<h4>내부링크방식</h4>
	</div>
</div>

</body>
</html>

 

페이지 전환 효과 적용

 

■  외부 프로그램 링크

jQuery Mobile은 페이지 링크뿐만 아니라 다른 Mobile 응용 프로그램과의 링크도 지원합니다. 

<a> 태그 안에 특정 응용 프로그램을 연결하는 href 속성값을 설정하면 자동으로 관련된 프로그램을 호출합니다.

 

 

예제를 통해서 알아봅시다.

 

<예제 2>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>app-link</title>
<link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css" />
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
</head>
</head>
<body>

<div data-role="page" id="home">
	<div data-role="header">
	<h1>스마트 페이지 링크 처리법</h1>
	</div>
	<div data-role="content">
	<h2>외부 프로그램 링크</h2>
	<ul data-role="listview" data-inset="true">
		<li><a href="mailto:gd@gmail.com">이메일 링크</a> </li>
		<li><a href="tel:0212345678" target="_blank">전화번호 링크</a> </li>
		<li><a href="sms:0102345678" target="_blank">SMS 문자 링크</a> </li>
		<li><a href="https://www.google.co.kr/maps/place/KH%EC%A0%95%EB%B3%B4%EA%B5%90%EC%9C%A1%EC%9B%90+%EA%B0%95%EB%82%A82%EA%B4%80/data=!4m6!3m5!1s0x357ca1455052b1dd:0xe48d3ff18fbe9fd0!8m2!3d37.4984971!4d127.0326036!16s%2Fg%2F11tcjyg01w?hl=ko"
		 target="_blank">지도 링크</a> </li>
	</ul>
	</div>
	<div data-role="footer" data-position="fixed">
	<a href="index.html" data-icon="grid" rel="external">Index</a>
	</div>
</div>

</body>
</html>

 

 

 


마치며

 

오늘은 Mobile Web에 대해서 알아봤습니다. 

기초 부분을 위주로 포스팅을 했으며, 모바일 웹 쪽으로 준비하시는 분들께 도움이 되고 싶습니다.

그럼 다음 포스팅으로 뵙겠습니다.

 

 

728x90

'[ Script ] > JAVA Script' 카테고리의 다른 글

[ jQuery ] DataTables - Ajax Table Data 출력  (46) 2024.01.18
[ JAVA Script ] Promise Constructor  (0) 2023.10.21
[ JAVA Script ] Ajax  (0) 2023.02.27
[ JAVA Script ] jQuery  (0) 2023.02.25
[ JAVA Script ] DOM  (0) 2023.02.24