====== 실행환경 UI - bootstrap======
=====개요=====
부트스트랩(Bootstrap)은 웹디자인을 쉽게하기 위해 트위터에서 오픈 소스로 공개한 프런트 엔드 프레임워크로, 유연한 HTML, CSS, JavaScript 템플릿과 UI컴포넌트, 인터렉션을 제공하여 손 쉽게 웹 사이트를 구축할 수 있는 시작점이 된다.
부트스트랩의 장점은 크게 다음과 같다.
\\
* 부트스트랩 3 이후부터 모바일 중심의 프레임워크이다
* 다양한 브라우저들을 지원한다.
* 반응형 웹에 최적화 되어있다. 부트스트랩은 스마트폰, 태블릿, 데스크탑에 최적화 되어 css가 조정이 된다.
* 시작이 용이하다. HTML, CSS만 알고 있어도 부트스트랩의 사용이 가능하다.
이러한 장점들로 인해 표준프레임워크에서는 실행환경 UI로 bootstrap을 선정하였다.
본 위키가이드에서는 부트스트랩의 기본적인 소개와 몇 가지의 예제를 제공한다.\\
자세한 내용은 부트스트랩 사이트의 가이드나(http://getbootstrap.com/) w3schools의 튜토리얼(http://www.w3schools.com/bootstrap/bootstrap_get_started.asp)을 참조하도록 한다.
=====시작하기=====
부트스트랩을 사용하기 위해서는 부트스트랩 관련 CSS와 JavaScript를 추가해 주어야 한다. 추가하는 방법은 두가지로 부트스트랩을 다운로드 하여 사용하거나, 다운로드 하지 않을 경우 CDN 링크를 추가하여 사용 한다.\\
※ 주의사항 : 부트스트랩을 사용하려면 **jQuery**가 필요하므로 반드시 별도로 추가하여 주어야 한다.\\
* 다운로드
- 부트스트랩 사이트(http://getbootstrap.com/getting-started/#download)의 메뉴 중 시작하기 > 다운로드 항목에서 원하는 종류의 다운로드를 진행한다.\\
- 부트스트랩 사이트에서는 여러가지 다운로드를 제공하는데, 본 가이드에서는 **프리컴파일 된 부트스트랩**((프리컴파일 된 부트스트랩 : 컴파일되고 최소화된 CSS, 자바스크립트, 폰트 제공. 문서나 원본 파일들은 포함되어 있지 않음))을 다운로드하여 진행하였다.
* 부트스트랩 CDN
- MaxCDN에서 부트스트랩의 CSS 와 자바스크립트를 CDN으로 지원한다. 이를 사용하려면, 아래의 부트스트랩 CDN 링크들을 추가하면 사용할 수 있다. 자세한 내용은 다음 [[ http://getbootstrap.com/getting-started/#download-cdn|링크(download-cdn)]]를 확인 한다. \\
==== ====
====파일 구조====
프리 컴파일 된 부트스트랩을 다운로드하고, 압축을 해제하면 다음과 같은 구조를 볼 수 있다.\\
bootstrap/
├── css/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ └── bootstrap-theme.min.css
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── fonts/
├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf
├── glyphicons-halflings-regular.woff
└── glyphicons-halflings-regular.woff2
위의 구조는 어느 웹프로젝트에도 쉽게 적용하기 위한 가장 기본적인 형태다. 컴파일 된 CSS와 JavaScript(bootstrap.*)를 제공하고, 컴파일 되고 최소화된 CSS와 JavaScript(bootstrap.min.*) 도 제공한다.\\
그리고 Glyphicons 의 폰트 파일들과 부가적인 부트스트랩 테마 파일들도 같이 존재한다.
===== 부트스트랩의 특징 =====
==== HTML5 ====
부트스트랩은 HTML5의 HTML요소와 CSS속성을 요구하기 때문에 HTML5 doctype을 사용해야 한다.
항상 페이지의 시작부분에 **HTML5 doctype**과
==== 모바일 친화적 ====
부트스트랩2 에서는 모바일 친화적인 스타일을 프레임워크의 core로 추가했었는데. 부트스트랩3 부터는 시작부터 모바일 친화적으로 설계 되었다.\\
다음은 페이지의 렌더링과 확대/축소를 사용하기 위한 것으로, **** 내에 **viewport** 메타 태그를 추가한다.
* "**width=device-width**" : device의 화면 폭(width)에 따라 페이지의 화면 폭을 설정한다.(device마다 달라짐)
* "**initial-scale=1**" : 페이지가 처음 브라우저에 로드 될 때 초기 zoom level을 설정한다.
* "**user-scalable=no**" 를 추가할 경우 모바일 기기의 Zoom기능을 끌 수 있다.
==== 컨테이너 ====
부트스트랩은 사이트 전체의 콘텐츠를 감싸는 콘테이너 요소가 필요하다.\\
다음의 두 예제는 컨테이너에 대한 예제이다.\\
※ jsfiddle.net을 이용하여 아래의 예제코드를 실행 결과를 링크로 제공.
===예제 1 : container===
Bootstrap Example
My First Bootstrap Page
This is some text.
결과 보기 : https://jsfiddle.net/ymxvbzo7/?utm_source=website&utm_medium=embed&utm_campaign=ymxvbzo7 \\
===예제 2 : container-fluid===
Bootstrap Example
My First Bootstrap Page
This is some text.
결과 보기 : https://jsfiddle.net/y1hL9vqd/1/?utm_source=website&utm_medium=embed&utm_campaign=y1hL9vqd \\ \\
{{:egovframework:rte3.6:ptl:container_exam2.png?600x200|예제 1}}
{{:egovframework:rte3.6:ptl:container_exam3.png?600x200|예제 2}} \\
위의 그림처럼 두 예제의 결과보기의 화면의 폭을 좌우로 늘려보면, 두 예제의 차이점을 알 수 있다. \\
첫번째 예제는 **고정폭 콘테이너**(
.col-sm-4
.col-sm-4
.col-sm-4
* 행(row)를 생성해야 한다.(**
Bootstrap Example
Grid
This example demonstrates a 50%/50% split on small, medium and large devices. On extra small devices, it will stack (100% width).
Resize the browser window to see the effect.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto.
{{:egovframework:rte3.6:ptl:grid_exam1.png|그리드 예제1}}
결과 보기 : https://jsfiddle.net/eh5kmtt9/1/?utm_source=website&utm_medium=embed&utm_campaign=eh5kmtt9\\ \\
결과창의 좌우폭을 확대 및 축소를 해보면, 화면 사이즈에 맞춰서 열(column)이 쌓이거나(stack) 수평이 되게 늘어나는 것을 확인 할 수 있다.이와 같이 손 쉽게 반응형을 지원하고, 페이지 레이아웃을 구성할 수 있다. \\
그 밖의 예제들은 부트스트랩 사이트 그리드 부분(http://getbootstrap.com/css/#grid)에서 내용을 확인하도록 한다.
====다양한 스타일의 CSS====
부트스트랩은 깔끔하고 잘 정돈된 느낌의 다양한 스타일의 CSS를 제공한다. 자세한 내용은 링크(http://getbootstrap.com/css/)의 내용을 확인하도록 한다.
===테이블===
다음은 부트스트랩에서 제공하는 클래스를 적용한 테이블 예제이다.
Bootstrap Example
Contextual Classes
Contextual classes can be used to color table rows or table cells. The classes that can be used are: .active, .success, .info, .warning, and .danger.
Firstname
Lastname
Email
John
Doe
example1@example.com
Mary
Moe
example2@example.com
July
Dooley
example3@example.com
결과보기 : https://jsfiddle.net/r60oymr2/3/?utm_source=website&utm_medium=embed&utm_campaign=r60oymr2 \\
{{:egovframework:rte3.6:ptl:css_table.png|css table}} \\
부트스트랩에서 기본적으로 제공하는 테이블 디자인 중 하나이다.
===폼===
다음은 부트스트랩에서 제공하는 폼의 예제이다.
Bootstrap Example
Inline form
Make the viewport larger than 768px wide to see that all of the form elements are inline, left aligned, and the labels are alongside.
결과보기 : https://jsfiddle.net/4006oqs0/1/?utm_source=website&utm_medium=embed&utm_campaign=4006oqs0 \\
{{:egovframework:rte3.6:ptl:css_form.png?900x250|css form}} \\
위의 예제는 인라인 폼(inline form)이 적용 된 예제로, 화면의 폭에 따라 입력창의 위치가 변화한다.
===버튼===
다음은 부트스트랩에서 제공하는 버튼 디자인이다.
Bootstrap Example
Button
결과보기 : https://jsfiddle.net/ysohpdqh/5/?utm_source=website&utm_medium=embed&utm_campaign=ysohpdqh \\
{{:egovframework:rte3.6:ptl:css_button.png?700x180|css button}} \\
====컴포넌트====
부트스트랩에서는 iconography, dropdown, input group, navigation, alerts 등의 재사용 가능한 컴포넌트를 제공하고 있다. 본 가이드에서는 몇 가지 컴포넌트만 소개한다. \\
그 밖의 다른 컴포넌트 들은 링크(http://getbootstrap.com/components/)를 통해 확인 하도록 한다.\\
===Glyphicons===
250개 이상의 기호가 Glyphicon Halflings 세트로 폰트 포멧에 포함되어 있다. \\ \\
{{:egovframework:rte3.6:ptl:component_glyphicons.png?700x600|Glyphicons}} \\
==사용방법==
사용할 부분에 다음 구문을 삽입한다.
위의 구문에서 원하는 Glyphicon의 **class**를 교체하여 사용한다. \\ \\
다음은 Glyphicon을 사용한 예제이다.
Bootstrap Example
Glyphicon Examples
Envelope icon:
Search icon:
Search icon on a button:
Search icon on a styled button:
Print icon:
Print icon on a styled link button:
Print
결과보기 : https://jsfiddle.net/t1tresaj/1/?utm_source=website&utm_medium=embed&utm_campaign=t1tresaj \\
{{:egovframework:rte3.6:ptl:component_exam_glyphicons.png?800x350|glyphicon exam}} \\
===페이지네이션(Pagination)===
페이지네이션 컴퍼넌트로 사이트나 앱을 위한 페이지네이션 링크를 제공한다.
==사용법==
페이지네이션의 경우 **순서가 없는 목록**(unordered list,
Bootstrap Example
결과보기 : https://jsfiddle.net/L860z1cy/1/?utm_source=website&utm_medium=embed&utm_campaign=L860z1cy \\
{{:egovframework:rte3.6:ptl:pagination_exam1.png?700x200|pagination}} \\
위의 예제에서 **리스트 아이템**(list item,
Bootstrap Example
Modal Example
결과보기 : https://jsfiddle.net/eqfmxd3e/1/?utm_source=website&utm_medium=embed&utm_campaign=eqfmxd3e \\
{{:egovframework:rte3.6:ptl:modal_exam.png?900x300|modal exam}} \\ \\
위의 예제의 구조를 보면 크게 "Triger", "Modal", "Modal content"로 구성된 것을 확인할 수 있다. \\ \\
"Trigger" 부분 \\
모달 윈도우를 호출하려면 트리거가 필요하다. 보통 버튼이나 링크를 트리거로 사용한다.\\
그리고 두개의 **"data-*"** 속성을 include 해야한다. \\
* **data-toggle="modal"** : 모달 윈도우를 연다.
* **data-target="#myModal"** : 모달 윈도우를 열 id
"Modal" 부분
* 모달의 부모 **