이제 13개 맞춤 jQuery 플러그인을 사용하여 부트스트랩 화면 구성요소에 활력을 넣는다.
플러그인을 개별로 (일부 의존관계와 함께) 하나씩 포함할 수 있고, 한번에 모두 포함할 수도 있다. bootstrap.js와 bootstrap.min.js는 파일 하나에 모든 플러그인을 담고 있다.
자바스크립트를 한 줄도 쓰지 않고 순수하게 마크업 API로만 모든 부트스트랩 플러그인을 사용할 수 있다. 이 방법은 부트스트랩에서 자동으로 동작하며 플러그인을 사용할 때 제임 처음으로 고려할 방법이다.
그러나 이 기능을 끄고 싶을 경우가 있다. 그래서 data 속성 API를 비활성하는 기능을 제공한다. 이렇게 body에 있는 `'data-api'` 이름공간의 모든 이벤트를 해제하면 된다.
$('body').off('.data-api')
특정 플러그인을 지칭하려면, 이렇게 플러그인 이름과 data-api를 함께 이름공간으로 작성한다.
$('body').off('.alert.data-api')
또한 순수하게 자바스크립트 API만으로 모든 부트스트랩 플러그인을 사용할 수 있다. 모든 공개 API는 하나로 연속된 메소드이고, 자신의 적용 대상을 반환한다.
$(".btn.danger").button("toggle").addClass("fat")
모든 메소드는 파라미터로 옵션 객체나 특정 메소드를 지칭하는 문자열을 받을 수 있다. 파라미터가 없다면 기본 행동으로 플러그인을 시작한다.
$("#myModal").modal() // 기본값으로 초기화 $("#myModal").modal({ keyboard: false }) // 키보드 없이 초기화 $("#myModal").modal('show') // 초기화하고 즉시 show를 호출
또, 모든 플러그인은 `생성자` 속성 $.fn.popover.Constructor
에 자신의 원래 생성자를 노출한다. $('[rel=popover]').data('popover')
식으로 태그로 부터 직접 특정 플러그인 인스턴스를 얻을 수 있다.
부트스트랩 플러그인을 다른 UI 프레임워크와 함께 사용하는 경우가 있다. 이런 상황에서 가끔 이름공간 충돌이 일어날 수 있다. 충돌이 발생하면, 되돌리고 싶은 플러그인에 .noConflict
를 호출한다.
var bootstrapButton = $.fn.button.noConflict() // $.fn.button 을 이전에 할당한 값으로 되돌린다 $.fn.bootstrapBtn = bootstrapButton // $().bootstrapBtn 에 부트스트랩 기능을 대입한다
부트스트랩은 플러그인의 고유 행동 대부분에 이벤트를 붙인다. 보통 이벤트 이름은 현재형과 과거분사형이다. 현재형(예, show
)은 이벤트가 시작할 때 발동하고, 과거분사형(예, shown
)은 행동이 마친 뒤 발동한다.
모든 현재형 이벤트는 preventDefault 기능이 있다. 이 기능은 행동이 시작하기 전에 행동의 실행을 중지한다.
$('#myModal').on('show', function (e) { if (!data) return e.preventDefault() // 모달이 보이지 않게 막는다 })
간단한 전환 효과를 원한다면, 다른 자바스크립트 파일과 함께 bootstrap-transition.js를 한번 포함하라. 컴파일된 (혹은 최소화된) bootstrap.js를 사용한다면 이미 들어있기 때문에 포함할 필요가 없다.
전환 플러그인의 몇가지 사용예.
모달은 단순하지만 유연한 대화 상자이다. 필요한 최소 기능을 가지며 나머지를 똑똑하게 처리한다.
아래 보이는 모달은 제목과 본문과 꼬리말에 행동들이 있다.
한 멋진 본문…
<div class="modal hide fade"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3>모달 제목</h3> </div> <div class="modal-body"> <p>한 멋진 본문…</p> </div> <div class="modal-footer"> <a href="#" class="btn">닫기</a> <a href="#" class="btn btn-primary">변경사항 저장</a> </div> </div>
아래 버튼을 클릭하면 자바스크립트로 모달을 켜고 끈다. 모달은 페이지 상단에서 슬라이드하고 페이드인한다.
<!-- 모달을 켜고 끄는 버튼 --> <a href="#myModal" role="button" class="btn" data-toggle="modal">모달 시연 시작</a> <!-- 모달 --> <div id="myModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h3 id="myModalLabel">모달 제목</h3> </div> <div class="modal-body"> <p>한 멋진 본문…</p> </div> <div class="modal-footer"> <button class="btn" data-dismiss="modal" aria-hidden="true">닫기</button> <button class="btn btn-primary">변경사항 저장</button> </div> </div>
자바스크립트를 작성하지 않고 모달을 만든다. 버튼 같은 제어 태그에 data-toggle="modal"
을 붙이고, 켜고 끌 대상 모달을 data-target="#foo"
혹은 href="#foo"
로 지시한다.
<button type="button" data-toggle="modal" data-target="#myModal">모달 시작</button>
아래 자바스크립트 한 줄은 id가 myModal
인 모달을 부른다.
$('#myModal').modal(options)
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-backdrop=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
backdrop | boolean | true | 모달 주위 배경을 어둡게 만드는 modal-backdrop 태그를 포함한다. 혹시 배경을 클릭할 때 모달을 닫지 않고 싶다면 static 값을 사용한다. |
keyboard | boolean | true | 이스케이프(escape) 키를 누르면 모달을 닫는다 |
show | boolean | true | 초기화시 모달을 보인다. |
remote | 경로 | false | 외부 url을 지정하면 jQuery
|
내용을 모달로 만든다. 선택적으로 options 객체
를 받는다.
$('#myModal').modal({ keyboard: false })
직접 모달을 켜고 끈다.
$('#myModal').modal('toggle')
직접 모달을 연다.
$('#myModal').modal('show')
직접 모달을 숨긴다.
$('#myModal').modal('hide')
부트스트랩 모달 클래스는 모달 기능과 연결된 몇가지 이벤트를 가진다.
이벤트 | 설명 |
---|---|
show | 이 이벤트는 show 인스턴스 메소드가 불리자마자 발동한다. |
shown | 이 이벤트는 (css 전환이 끝난 후) 모달이 사용자에게 완전히 보일 때 발동한다. |
hide | 이 이벤트는 hide 인스턴스 메소드가 불리자마자 발동한다. |
hidden | 이 이벤트는 (css 전환이 끝난 후) 모달이 사용자에게 완전히 사라질 때 발동한다. |
$('#myModal').on('hidden', function () { // 무언가를 한다… })
이 간단한 플러그인을 사용하여 탐색막대, 탭, 알약 등 거의 모든 곳에 드롭다운 메뉴를 붙인다.
드롭다운을 켜고 끌 링크나 버튼에 data-toggle="dropdown"
을 더한다.
<div class="dropdown"> <a class="dropdown-toggle" data-toggle="dropdown" href="#">드롭다운 작동</a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> ... </ul> </div>
URL을 그대로 두려면 href="#"
대신 data-target
속성을 사용한다.
<div class="dropdown"> <a class="dropdown-toggle" id="dLabel" role="button" data-toggle="dropdown" data-target="#" href="/page.html"> 드롭다운 <b class="caret"></b> </a> <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"> ... </ul> </div>
자바스크립트로 드롭다운을 부른다.
$('.dropdown-toggle').dropdown()
없음
해당 탐색막대나 탭의 메뉴를 켜고 끄는 api.
스크롤 추적 플러그인은 스크롤 위치에 따라 자동으로 탐색의 선택 대상을 변경한다. 탐색막대 아래 영역을 스크롤하며 현재 클래스 변화를 보라. 드롭다운 하위 항목도 마찬가지로 강조한다.
삼층 이십이호실에 들어 있던 젊은 회사원이 오늘 방을 내어놓았다. 얼마 전에 결혼을 하였는데 그 동안 마땅한 집이 없어서 아내는 친정에, 그리고 남편인 자기는 그전에 들어 있던 이 아파트에 그대로 갈라져서 신혼생활답지 않게 지내 오다가 이번에 돈암정 어디다 집을 사고 신접살림을 차려 놓기로 되었다 한다. 오후 여섯시가 가까운 시각, 아마도 회사의 퇴근시간을 이용하여 양주가 어디서 만난 것인지 해가 그믈그믈해서야 회사원은 색시 티가 나는 아내와 함께 짐을 가지러 트럭과 인부를 데리고 왔다.
인부가 한 사람 있다고는 하지만 삼층에서 밑바닥까지 세간을 나르고 그것을 다시 트럭에 싣고 하기에는 이럭저럭 한 시간이 걸렸다. 최무경(崔武卿)이는 아파트의 사무원일 뿐 아니라 회사원이 있던 방이 바로 제가 들어 있는 옆방이어서 여자의 몸으로 별로 손을 걷고 거들어 줄 것은 없다고 하여도 짐이 다 실리는 동안 아래층 사무실에 남아 있어서 그들의 이사하는 모양을 바라보고 있었다.
사무실에서 일을 보는 늙은 강영감이 제법 위아래로 오르내리며 짐을 챙겨도 주고 양복장이며 책장이며 탁자며 하는 육중한 것은 한 귀를 맞들어서 인부와 회사원과 함께 운반에 힘을 돕기도 하였다. 짐을 대충 실어 놓고 회사원은 아내와 같이 사무실로 들어왔다. "부금(敷金) 일백오 원 중에서 이번 달 치가 오늘까지 이십팔 원, 그것을 제하고 칠십칠 원이올시다." 미리 준비해 두었던 지폐를 손금고에서 꺼내서 최무경이는 그것을 회사원에게로 건네었다.
회사원은 한 손으로 받아서 약간 치켜들듯 하여 사의를 표하고 그것을 그대로 주머니에 넣으려고 한다. "세어 보세요." 그러한 말에 회사원은, 무어 세어 보나마나 하는 표정을 지어 보았으나 다시 어떻게 생각하였는지 넣으려던 지폐를 꺼내서 불빛에다 대고 손가락에 침도 묻히지 않으면서 한장 두장 세어 보고 있다. "꼭 맞습니다." 하고 낯을 들었을 때 무경이는 펜과 영수증을 놓으면서, "영수증이올시다. 사인하시고 도장 쳐주십시오. 수입인지는 아파트 쪽에서 한턱내었습니다." 하고는 회사원의 아내를 바라보며 웃었다. 젊은 아내는 무경이의 웃음에 따라서 흰 이를 내놓고 웃었다.
"고맙습니다." 영수증을 받아서 서류와 함께 금고에 챙긴 뒤에 무경이는 두 신혼부부의 낯을 새삼스레 쳐다보았다. 행복에 넘친 듯한 얼굴들이다. 진부한 형용이지만 역시 행복에 넘쳐 있는 표정이라는 말이 제일 적절할 것처럼 무경이는 생각하는 것이다. "저어 돈암정 바로 삼선평이올시다. 거기서 바른쪽으로 향해서 들어가면 새로 분할한 주택지가 있습니다. 큰 골목으로 접어들어서 다시 셋째 번 골목 둘째 집이 저희들 집이올시다. 사백오십번지의 십칠호. 한번 교외에 산보 나오시는 일이 계시건 찾아 주시기 바랍니다."
아무리 총명한 사람일지라도 이러한 지도의 설명을 잊지 않을 사람이 없을 것이건만 사람들은 노상에서 만난 친구들께 곧잘 이러한 방식으로 저의 집의 주소를 가르쳐 준다. 그러나 듣는 사람도 또 지금 말하는 설명을 모두 머릿속에 챙겨 넣기나 한 듯이, "네 네, 한번 나가면 꼭 들르겠습니다." 하고 대답하는 것이었다. 신접살림이라 무어든 간 새로 준비했을 것이니 홀아비살림 때에 쓰던 것으로 소용이 없을 것은 공연히 짐이나 된다고 이렇게 내버려두고 가는 것이리라, 강영감은 그것을 모아다가 넝마장수에게 팔기도 하고 저의 집에 가져다 쓰기도 하는 것이었다.
화면 상단 탐색막대에 스크롤 추적 기능을 넣으려면, 추적할 대상 (대부분 body) 태그에 data-spy="scroll"
를 더하고 data-target=".navbar"
로 탐색막대를 선택한다. .nav
화면 구성요소에도 스크롤 추적을 사용할 수 있다.
<body data-spy="scroll" data-target=".navbar">...</body>
자바스크립트로 스크롤 추적을 부른다.
$('#navbar').scrollspy()
<a href="#home">대문</a>
은 어딘가 <div id="home"></div>
식의 dom에 대응해야 한다.
DOM에서 태그를 추가하거나 빼면서 스크롤 추적을 사용한다면, 이렇게 refresh 메소드를 호출해야 한다.
$('[data-spy="scroll"]').each(function () { var $spy = $(this).scrollspy('refresh') });
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-offset=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
offset | number | 10 | 스크롤 위치를 계산할 때 상단에 추가할 픽셀. |
이벤트 | 설명 |
---|---|
activate | 이 이벤트는 스크롤 추적이 새 항목을 선택할 때 발동한다. |
내용이 있는 판들 사이를 전환하는 빠르고 동적인 탭 기능을 더한다. 심지어 드롭다운 메뉴도 탭으로 동작한다.
미스터 방의 증조가 타관에서 떠들어온 명색 없는 사람이었다. 그 조부가 고을의 아전을 다녔다. 그 아비가 짚신장수였다. 칠십에, 고로롱고로롱, 아직도 살아 있지만, 시방도 짚신 곱게 삼기로 고을에서 첫째가는 방첨지가 바로 그였다. 그러나마 삼십을 바라보도록 남의 집 머슴살이로, 이집 저집 살고 다니는 코삐뚤이 삼복이었다. 물론 낫 놓고 기역자도 못 그리는 판무식이었다. 백주사는 생각하자니 속으로 이렇게 분개스럽지 않을 수가 없었다.
백주사는 생각하자니 속으로 이렇게 분개스럽지 않을 수가 없었다. 그러나 일변으로는, 그러던 코삐뚤이 삼복이가 그야말로 선영이 명당엘 들었단 말인지, 무슨 조화를 지녔단 말인지, 불과 몇 달지간에 이렇게 훌륭히 되고, 부자가 되고, 미스터 방인지 구리다 방인지가 되고 하여 가지고는, 갖은 호강 다 하며 천하에 무설 것이 없고 기광이 나서 막 이러니, 한편 생각하면 신기하기도 하고 부럽기도 하고 또한 안타깝기도 하였다. '사람의 운수란 참 모를 일이야.' 백주사는 속으로 절절히 이렇게 탄복도 아니치 못하였다. 코삐뚤이 삼복의 이 눈부신 발신은, 그러나 백주사가 희한히 여기는 것처럼 무슨 명당 바람이 났다거나 조화를 지녔다거나 그런 신기한 곡절이 있는 바가 아니요, 지극히 간단하고도 수월한 것이었었다. '사람의 운수란 참 모를 일이야.'
이날도 신기료장수 방삼복은 종로의 공원 건너편 응달에 앉아서, 구두 징을 박으면서, 해방의 날을 맞이하였다. 그러나 삼복은 감격한 줄도 기쁜 줄도 모르겠었다. 지나가는 행인이, 서로 모르던 사람끼리면서 덤쑥 서로 껴안고 기뻐하고 눈물을 흘리고 하는 것이, 삼복은 속을 모르겠고 차라리 쑥스러 보일 따름이었다. 몰려 닫는 군중이 오히려 성가시고, 만세 소리가 귀가 아파 이맛살이 지푸려질 지경이었다. 몰려다니고 만세를 부르고 하기에 미쳐 날뛰느라고 정신이 없어, 손님이 없어, 손님이 부쩍 줄었다. "우랄질! 독립이 배부른가?" 이삼 일 지나면서부터야 삼복에게도 삼복에게다운 해방의 혜택이 나누어졌다.
총총히 집으로 돌아가, 마누라를 시켜 구두 고치는 연장 일습과 재료 남은 것에다 이불이며 헌옷가지 해서 한 짐을 동네 아는 가게에다 맡기고는 한 달 기한으로 돈 백 원을 서푼 변으로 취해 오게 하였다. 그 돈 백 원을 가지고 삼복은 흔한 넝마전으로 가서 백 원 돈이 꼭 차는 한도까지에 양복이란 명색 한 벌과 모자를 샀다. 신발은 부득이 안방 사람의 병정구두 사 신은 것을 이 다음 창갈이 거저 해주겠다는 조건으로, 닷새만 제 것과 바꾸어 신기로 하였다. 한주먹 보기 좋게 갈겨 넘어뜨리고는, 찌부러진 오두막집을 나서 종로로 향을 잡았다.
자바스크립트로 켜고 끄는 탭을 만든다. 탭마다 따로 만들어야 한다.
$('#myTab a').click(function (e) { e.preventDefault(); $(this).tab('show'); })
여러 방법으로 개별 탭을 지칭할 수 있다.
$('#myTab a[href="#profile"]').tab('show'); // 이름으로 탭 선택 $('#myTab a:first').tab('show'); // 첫번째 탭 선택 $('#myTab a:last').tab('show'); // 마지막 탭 선택 $('#myTab li:eq(2) a').tab('show'); // 세번째 탭 선택 (순서는 0부터)
자바스크립트를 전혀 작성하지 않고 태그에 data-toggle="tab"
혹은 data-toggle="pill"
을 명시하기만 하면 탭이나 알약 탐색이 생긴다. 탭 ul
에 nav
와 nav-tabs
클래스를 추가하면 부트스트랩 탭 스타일이 적용된다.
<ul class="nav nav-tabs"> <li><a href="#home" data-toggle="tab">대문</a></li> <li><a href="#profile" data-toggle="tab">프로필</a></li> <li><a href="#messages" data-toggle="tab">메시지</a></li> <li><a href="#settings" data-toggle="tab">설정</a></li> </ul>
탭 태그와 탭내용을 보여준다. 탭은 DOM의 탭내용을 지칭하는 data-target
이나 href
가 필요하다.
<ul class="nav nav-tabs" id="myTab"> <li class="active"><a href="#home">대문</a></li> <li><a href="#profile">프로필</a></li> <li><a href="#messages">메시지</a></li> <li><a href="#settings">설정</a></li> </ul> <div class="tab-content"> <div class="tab-pane active" id="home">...</div> <div class="tab-pane" id="profile">...</div> <div class="tab-pane" id="messages">...</div> <div class="tab-pane" id="settings">...</div> </div> <script> $(function () { $('#myTab a:last').tab('show'); }) </script>
이벤트 | 설명 |
---|---|
show | 이 이벤트는 탭 show를 호출했지만 새로운 탭이 보이기 전에 발동한다. event.target 은 새로운 탭을 지칭하고, event.relatedTarget 은 (있다면) 이전 탭을 지칭한다. |
shown | 이 이벤트는 탭이 완전히 보일 때 발동한다. event.target 은 새로운 탭을 지칭하고, event.relatedTarget 는 (있다면) 이전 탭을 지칭한다. |
$('a[data-toggle="tab"]').on('shown', function (e) { e.target // 새로 선택된 탭 e.relatedTarget // 이젠 탭 })
제이슨 프레임이 만든 훌륭한 jQuery tipsy 플러그인에서 영감을 받았다. 그림을 의존하지 않고 CSS3로 애니메이션을 하며 data 속성을 제목으로 사용하도록 툴팁을 변경했다.
성능상 이유 때문에 툴팁과 팝오버 data api는 동의가 필요하다. 직접 이들 플러그인을 초기화해야 한다.
툴팁을 보려면 링크 위로 마우스를 올린다.
어제 아침을 멀건 죽 한 보시기로 때우고, 점심은 늘 없어왔거니와 저녁과 오늘 아침을 끓이지 못하였으니, 하루낫 하룻밤이요 꼬바기 세 끼를 굶은 참이었다. 그러니, 시장하긴들 조옴 시장하련마는, 굶기에 단련이 되어 그런지 글에 정신이 쏠리어 그런지, 혹은 참으며 내색을 아니하여 그러는지, 아뭏든 허생은 별로 시장하여 하는 빛이 없고, 글 읽는 소리도 한결같이 낭랑하다. 서울 남산 밑 묵적골이라고 하면, 가난하고 명색 없는 양반 나부랑이와 궁하고 불우한 선비와 이런 사람들만 모여 살기로 예로부터 이름난 동네였다. 집이라는 것은 열이면 열 다 쓰러져가는 오막살이 초가집이 몇해씩을 이엉을 덮지 못하여 지붕은 움푹움푹 골이 패이고, 비가 오면 철철 들이 새고 하였다.
부트스트랩 input 그룹에서 툴팁과 팝오버를 사용한다면, 원하지 않는 부작용을 막기위해 (아래에서 설명) container
옵션을 사용해야 한다.
자바스크립트로 툴팁을 켜고 끈다.
$('#example').tooltip(options)
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-animation=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
animation | boolean | true | 툴팁에 css 페이드 전환을 적용한다 |
html | boolean | false | 툴팁에 html을 넣는다. false이면, jquery의 text 메소드를 사용하여 dom에 내용을 넣는다. XSS 공격을 걱정한다면 html을 사용하지 마라. |
placement | string | function | 'top' | 툴팁의 위치 - top | bottom | left | right |
selector | string | false | 선택자를 지정하면, 해당 대상이 툴팁 객체를 담당한다 |
title | string | function | '' | `title` 태그가 없을 때 제목으로 사용할 기본값 |
trigger | string | 'hover focus' | 툴팁 동작 방식 - click | hover | focus | manual. 여러 종류를 공백으로 구분하여 사용할 수 있다. |
delay | number | object | 0 |
툴팁을 보이고 숨기는 지연 시간 (ms 단위) - manual 동작 방식은 해당 없음 숫자를 사용하면, 숨기고 보일 때 모두 같은 지연 시간을 적용한다 객체는 이렇게 사용한다. |
container | string | false | false |
툴팁을 특정 태그에 붙인다 |
<a href="#" data-toggle="tooltip" title="첫번째 툴팁">여기에 마우스 올림</a>
태그들에 툴팁 처리자를 붙인다.
태그의 툴팁을 보인다.
$('#element').tooltip('show')
태그의 툴팁을 숨긴다.
$('#element').tooltip('hide')
태그의 툴팁을 켜고 끈다.
$('#element').tooltip('toggle')
태그의 툴팁을 숨기고 파괴한다.
$('#element').tooltip('destroy')
아이패드와 비슷하게, 부가 정보를 담은 모든 태그에 작은 내용을 덧붙인다. 팝오버를 보이려면 버튼 위로 마우스를 가져간다. 사용하려면 툴팁이 필요하다.
top, right, bottom, left, 네가지 정렬 옵션이 있다.
자는 운장, 허둥 출신으로 장 비·유 비와 함께 의형제를 맺었다. 한때 조 조에게 포로가 되어 우대를 받고 한수정후로 봉함받았다.
자는 운장, 허둥 출신으로 장 비·유 비와 함께 의형제를 맺었다. 한때 조 조에게 포로가 되어 우대를 받고 한수정후로 봉함받았다.
자는 운장, 허둥 출신으로 장 비·유 비와 함께 의형제를 맺었다. 한때 조 조에게 포로가 되어 우대를 받고 한수정후로 봉함받았다.
자는 운장, 허둥 출신으로 장 비·유 비와 함께 의형제를 맺었다. 한때 조 조에게 포로가 되어 우대를 받고 한수정후로 봉함받았다.
자바스크립트와 data
속성값으로 팝오버를 만들기 때문에 보여줄 마크업이 없다.
자바스크립트로 팝오버를 만드는 방법이다.
$('#example').popover(options)
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-animation=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
animation | boolean | true | 팝오버에 css 페이드 전환을 적용한다 |
html | boolean | false | 팝오버에 html을 넣는다. false이면, jquery의 text 메소드를 사용하여 dom에 내용을 넣는다. XSS 공격을 걱정한다면 html을 사용하지 마라. |
placement | string | function | 'right' | 팝오버의 위치 - top | bottom | left | right |
selector | string | false | 선택자를 지정하면, 해당 대상이 팝오버 객체를 담당한다 |
trigger | string | 'click' | 팝오버 동작 방식 - click | hover | focus | manual |
title | string | function | '' | `title` 속성이 없을 때 제목으로 사용할 기본값 |
content | string | function | '' | `data-content` 속성이 없을 때 내용으로 사용할 기본값 |
delay | number | object | 0 |
팝오버를 보이고 숨기는 지연 시간 (ms 단위) - manual 동작 방식은 해당 없음 숫자를 사용하면, 숨기고 보일 때 모두 같은 지연 시간을 적용한다 객체는 이렇게 사용한다. |
container | string | false | false |
팝오버를 특정 태그에 붙인다 |
성능상 이유 때문에 툴팁과 팝오버 data api는 동의가 필요하다. 사용하고 싶다면 selector 옵션을 설정하라.
태그들에 사용할 팝오버를 초기화한다.
태그의 팝오버를 보인다.
$('#element').popover('show')
태그의 팝오버를 숨긴다.
$('#element').popover('hide')
태그의 팝오버를 켜고 끈다.
$('#element').popover('toggle')
태그의 팝오버를 숨기고 파괴한다.
$('#element').popover('destroy')
이 플러그인은 모든 경고문에 닫기 기능을 더한다.
자바스크립트로 경고 닫기를 만든다.
$(".alert").alert()
닫기 버튼에 data-dismiss="alert"
를 추가하기만 하면 경고에 닫기 기능이 자동으로 생긴다.
<a class="close" data-dismiss="alert" href="#">×</a>
모든 경고에 닫기 기능을 단다. 경고를 닫을 때 애니메이션 효과를 주려면 미리 .fade
와 .in
클래스를 적용한다.
경고를 닫는다.
$(".alert").alert('close')
부트스트랩 경고 클래스는 경고 기능과 연결된 몇가지 이벤트를 가진다.
이벤트 | 설명 |
---|---|
close | 이 이벤트는 close 인스턴스 메소드가 불리자마자 발동한다. |
closed | 이 이벤트는 (css 전환이 끝난 후) 경고가 완전히 닫힐 때 발동한다. |
$('#my-alert').bind('closed', function () { // 무언가를 한다… })
아코디언과 탐색 같은 숨김 가능한 화면 구성요소에 기본 스타일을 입히고 유연하게 지원한다.
* 전환 플러그인이 필요하다.
숨김 플러그인을 사용하여 간단한 아코디언식 위젯을 만들었다.
<div class="accordion" id="accordion2"> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne"> 숨김 가능한 그룹 항목 #1 </a> </div> <div id="collapseOne" class="accordion-body collapse in"> <div class="accordion-inner"> 종래 경영관리... </div> </div> </div> <div class="accordion-group"> <div class="accordion-heading"> <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseTwo"> 숨김 가능한 그룹 항목 #2 </a> </div> <div id="collapseTwo" class="accordion-body collapse"> <div class="accordion-inner"> 종래 경영관리... </div> </div> </div> </div> ...
아코디언 마크업 없이 플러그인을 사용할 수도 있다. 다른 태그를 확장하고 숨기는 버튼을 만든다.
<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo"> 간단한 숨김 </button> <div id="demo" class="collapse in"> … </div>
태그에 data-toggle="collapse"
와 a data-target
을 붙이기만 하면 숨김 가능한 다른 태그를 제어하게 된다. data-target
속성은 숨김을 적용할 css 선택자를 값으로 받는다. 숨김 가능한 태그에 collapse
클래스를 잊지 마라. 처음에 열려있기를 바란다면 in
클래스도 추가하라.
숨김 가능한 대상을 아코디언처럼 묶어서 관리하려면 data 속성 data-parent="#selector"
를 추가한다. 어떻게 동작하는지 시연을 참고하라.
이렇게 직접 만들 수 있다.
$(".collapse").collapse()
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-parent=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
parent | 선택자 | false | 선택자를 명시하면, 선택 가능한 항목을 보여줄 때 선택자 아래에 있는 숨김 가능한 모든 태그가 닫힌다. (전통적인 아코디언 동작과 유사) |
toggle | boolean | true | 호출하면 숨김 가능한 태그를 켜고 닫는다 |
내용을 숨김 가능한 태그로 만든다. 선택적으로 options 객체
를 받는다.
$('#myCollapsible').collapse({ toggle: false })
선택 가능한 태그를 켜고 끈다.
선택 가능한 태그를 보인다.
선택 가능한 태그를 숨긴다.
부트스트랩 숨김 클래스는 숨김 기능과 연결된 몇가지 이벤트를 가진다.
이벤트 | 설명 |
---|---|
show | 이 이벤트는 show 인스턴스 메소드가 불리자마자 발동한다. |
shown | 이 이벤트는 (css 전환이 끝난 후) 숨김 대상 태그가 사용자에게 완전히 보일 때 발동한다. |
hide |
이 이벤트는 hide 인스턴스 메소드가 불리자마자 발동한다.
|
hidden | 이 이벤트는 (css 전환이 끝난 후) 숨김 대상 태그가 사용자에게 완전히 사라질 때 발동한다. |
$('#myCollapsible').on('hidden', function () { // 무언가를 한다… })
아래 슬라이드쇼는 회전광고판처럼 태그를 하나씩 둘러보는 일반 플러그인과 화면 구성요소를 보여준다.
<div id="myCarousel" class="carousel slide"> <ol class="carousel-indicators"> <li data-target="#myCarousel" data-slide-to="0" class="active"></li> <li data-target="#myCarousel" data-slide-to="1"></li> <li data-target="#myCarousel" data-slide-to="2"></li> </ol> <!-- 회전광고판 항목 --> <div class="carousel-inner"> <div class="active item">…</div> <div class="item">…</div> <div class="item">…</div> </div> <!-- 회전광고판 탐색 --> <a class="carousel-control left" href="#myCarousel" data-slide="prev">‹</a> <a class="carousel-control right" href="#myCarousel" data-slide="next">›</a> </div>
한글 글꼴! bootstrap-ko.css
와 bootstrap-ko.min.css
파일을 사용한다면 회전광고판 탐색 화살표가 이상하게 보인다. 이 경우 회전광고판 탐색 태그에 en-font-family
클래스를 더하여 원래 영어 글꼴로 바꾼다.
data 속성을 사용하여 회전광고판 순서를 쉽게 제어할 수 있다. data-slide
는 현재 순서를 기준으로 슬라이드 순서를 바꾸는 키워드 prev
와 next
를 값으로 받는다. 아니면 data-slide-to
에 회전광고판 슬라이드 순서를 넘긴다. data-slide-to="2"
와 같이 0
부터 시작하는 슬라이드 순서로 건너뛴다.
이렇게 회전광고판을 직접 만든다.
$('.carousel').carousel()
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-interval=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
interval | number | 5000 | 자동으로 항목을 전환하는 지연 시간. false이면, 회전광고판이 자동으로 회전하지 않는다. |
pause | string | "hover" | 마우스가 들어오면 회전광고판 회전을 잠시 멈추고, 마우스가 나가면 회전을 재개한다. |
선택적인 options 객체
를 가지고 회전광고판을 초기화하고 항목들을 회전하기 시작한다.
$('.carousel').carousel({ interval: 2000 })
회전광고판 항목들을 왼쪽에서 오른쪽으로 회전한다.
회전광고판 항목들 회전을 중지한다.
특정 항목으로 회전광고판을 이동한다 (배열과 비슷하게 0부터 시작).
이전 항목으로 이동한다.
다음 항목으로 이동한다.
부트스트랩 회전광고판 클래스는 회전광고판 기능과 연결된 두가지 이벤트를 가진다.
이벤트 | 설명 |
---|---|
slide | 이 이벤트는 slide 인스턴스 메소드가 불리자마자 발동한다. |
slid | 이 이벤트는 회전광고판이 슬라이드 전환을 완전히 마칠 때 발동한다. |
어떤 종류의 문자 input이라도 순식간에 멋진 자동완성을 붙이는 기본적이며 쉽게 확장가능한 플러그인.
<input type="text" data-provide="typeahead">
한글! 검색 포털에서 볼 수 있는 한글 자소단위 자동완성은 지원하지 않다.
웹브라우저 기본 메뉴가 부트스트랩 자동완성 드롭다운을 가리지 않도록 autocomplete="off"
가 필요할 것이다.
위 사용예와 같이 data 속성을 추가하여 태그에 자동완성 기능을 등록한다.
이렇게 직접 자동완성을 만들 수 있다.
$('.typeahead').typeahead()
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-source=""
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
source | array, function | [ ] | 검색할 자료. 문자열의 배열이나 함수가 들어간다. 함수는 input 입력요소값 query 와 콜백 process , 이 두 아규먼트를 받는다. 함수는 자료를 직접 반환하는 동기 방식 혹은 process 콜백의 유일한 아규먼트를 통한 비동기 방식으로 사용한다. |
items | number | 8 | 드롭다운에 보여줄 항목 최대 개수. |
minLength | number | 1 | 자동완성 제안을 시작할 최소 문자 길이 |
matcher | function | 대소문자 무시 | 항목이 검색에 맞는지 알아보는 메소드. 검색어와 맞추어 볼 item 아규먼트 하나를 받는다. 현재 검색어는 this.query 이다. 검색어가 맞다면 boolean true 를 반환한다. |
sorter | function | 정확히 일치, 대소문자 구별, 대소문자 무시 순서로 |
자동완성 결과의 순서를 결정하는 메소드. items 아규먼트 하나를 받고, 변수의 범위는 자동완성 인스턴스이다. 현재 검색어는 this.query 로 접근한다. |
updater | function | 선택한 항목을 반환 | 선택한 항목을 반환하는 메소드. item 아규먼트 하나를 받고, 변수의 범위는 자동완성 인스턴스이다. |
highlighter | function | 기본 일치를 모두 강조 | 자동완성 결과를 강조하는 메소드. item 아규먼트 하나를 받고, 변수의 범위는 자동완성 인스턴스이다. html을 반환해야 한다. |
input에 자동완성을 초기화한다.
바로 왼쪽의 탐색이 바로 애픽스 메뉴 플러그인의 결과이다.
애픽스 메뉴는 추적할 태그에 data-spy="affix"
를 붙이기만 하면 된다. 그리고 offset으로 언제 태그 표시를 켜고 끌지 정한다.
<div data-spy="affix" data-offset-top="200">...</div>
affix
, affix-top
, affix-bottom
으로 위치를 조절한다. 애픽스 메뉴를 만들 때 페이지의 일반적인 흐름에서 내용이 삭제되어 상위 태그가 숨겨지지는 않는지 확인해야 한다.
자바스크립트로 애픽스 메뉴를 만들 수 있다.
$('#navbar').affix()
data 속성과 자바스크립트 모두 옵션을 지정할 수 있다. data 속성 사용시 data-offset-top="200"
처럼 data-
뒤에 옵션 이름을 붙인다.
이름 | 자료형 | 기본값 | 설명 |
---|---|---|---|
offset | number | function | object | 10 | 스크롤 위치를 계산할 때 상단에 추가할 픽셀. 숫자 하나를 사용하면, 위쪽과 왼쪽에 모두 간격을 적용한다. 한쪽 방향만 원하거나 방향마다 간격을 다르게 주려면, offset: { x: 10 } 같은 객체를 사용한다. 동적으로 (일부 반응형 디자인에 유용) 간격을 지정하려면 함수를 사용한다. |