-
Notifications
You must be signed in to change notification settings - Fork 0
Colorbox
Manabu Yasuda edited this page Aug 9, 2016
·
2 revisions
- Colorbox - a jQuery lightbox
npm install jquery-colorbox
$(function() {
$(".foo").colorbox({
transition: 'elastic', // `elastic`, `fade`, `none`から選択する。
speed: 350, // transitionを`none`以外の場合は表示速度を指定できる
title: false, // アンカータグの`title`属性を表示させるかどうか
rel: 'group', // 連続して隣り合ったモーダルを表示します。
opacity: 0.85, // オーバーレイのopacity
fadeOut: 300, // モーダルを非表示にするときの速度
inline: true, // HTMLドキュメントを表示します。
previous: 'previous', // 戻るボタンのテキストを変更する。
next: 'next', // 進むボタンのテキストを変更する。
close: 'close' // 閉じるボタンのテキストを変更する。
});
});アンカータグのhrefとモーダル(コンテンツ)のidをひもづける。
<p><a class="foo" href="#foo1" title="01です">インラインHTMLその1</a></p>
<p><a class="foo" href="#foo2">インラインHTMLその2</a></p>
<p><a class="foo" href="#foo3">インラインHTMLその3</a></p>
<p><a class="foo" href="#f004">インラインHTMLその4</a></p>
<div style="display:none">
<div id="foo1" class="foo-body">
<p>モーダルでコンテンツ01を表示します。</p>
</div>
<div id="foo2" class="foo-body">
<p>モーダルでコンテンツ02を表示します。</p>
</div>
<div id="foo3" class="foo-body">
<p>モーダルでコンテンツ03を表示します。</p>
</div>
<div id="f004" class="foo-body">
<p>モーダルでコンテンツ04を表示します。</p>
</div>
</div>モーダルはこのように表示される。idにスタイリングをする。
<div id="cboxOverlay"></div>
<div id="colorbox">
<div id="cboxWrapper"><div>
<div id="cboxTopLeft"></div>
<div id="cboxTopCenter"></div>
<div id="cboxTopRight"></div>
</div>
<div>
<div id="cboxMiddleLeft"></div>
<div id="cboxContent">
<div id="cboxLoadedContent">
<!-- コンテンツ部分 -->
<div id="foo1" class="foo-body">
<p>モーダルでコンテンツ01を表示します。</p>
</div>
<!-- /コンテンツ部分 -->
</div>
<div id="cboxTitle"></div>
<div id="cboxCurrent">image 1 of 4</div>
<button type="button" id="cboxPrevious">戻る</button>
<button type="button" id="cboxNext">次へ</button>
<button id="cboxSlideshow"></button>
<div id="cboxLoadingOverlay"></div>
<div id="cboxLoadingGraphic"></div>
<button type="button" id="cboxClose">閉じる</button>
</div>
<div id="cboxMiddleRight"></div>
</div>
<div>
<div id="cboxBottomLeft"></div>
<div id="cboxBottomCenter"></div>
<div id="cboxBottomRight"></div>
</div>
</div>
<div></div>
</div>アイコンは画像になっているので変更する。ソースコードはGitHubのexample1~5が用意されているので参考にする。
/*
Colorbox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox,
#cboxOverlay,
#cboxWrapper {
position: absolute;
top: 0;
left: 0;
z-index: 9999;
overflow: hidden;
-webkit-transform: translate3d(0,0,0);
}
#cboxWrapper {
max-width: none;
}
#cboxOverlay {
position: fixed;
width: 100%;
height: 100%;
}
#cboxMiddleLeft,
#cboxBottomLeft {
clear: left;
}
#cboxContent {
position: relative;
}
#cboxLoadedContent {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
#cboxTitle {
margin: 0;
}
#cboxLoadingOverlay,
#cboxLoadingGraphic {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
#cboxPrevious,
#cboxNext,
#cboxClose,
#cboxSlideshow {
cursor: pointer;
}
.cboxPhoto {
float: left;
margin: auto;
border: 0;
display: block;
max-width: none;
-ms-interpolation-mode: bicubic;
}
.cboxIframe {
width: 100%;
height: 100%;
display: block;
border: 0;
padding: 0;
margin: 0;
}
#colorbox,
#cboxContent,
#cboxLoadedContent {
box-sizing: content-box;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
}
/*
User Style:
Change the following styles to modify the appearance of Colorbox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay {
background: url(images/overlay.png) repeat 0 0;
opacity: 0.9;
filter: alpha(opacity = 90);
}
#colorbox {
outline: 0;
}
#cboxTopLeft {
width: 21px;
height: 21px;
background: url(images/controls.png) no-repeat -101px 0;
}
#cboxTopRight {
width: 21px;
height: 21px;
background: url(images/controls.png) no-repeat -130px 0;
}
#cboxBottomLeft {
width: 21px;
height: 21px;
background: url(images/controls.png) no-repeat -101px -29px;
}
#cboxBottomRight {
width: 21px;
height: 21px;
background: url(images/controls.png) no-repeat -130px -29px;
}
#cboxMiddleLeft {
width: 21px;
background: url(images/controls.png) left top repeat-y;
}
#cboxMiddleRight {
width: 21px;
background: url(images/controls.png) right top repeat-y;
}
#cboxTopCenter {
height: 21px;
background: url(images/border.png) 0 0 repeat-x;
}
#cboxBottomCenter {
height: 21px;
background: url(images/border.png) 0 -29px repeat-x;
}
#cboxContent {
background: #fff;
overflow: hidden;
}
.cboxIframe {
background: #fff;
}
#cboxError {
padding: 50px;
border: 1px solid #ccc;
}
#cboxLoadedContent {
margin-bottom: 28px;
}
#cboxTitle {
position: absolute;
bottom: 4px;
left: 0;
text-align: center;
width: 100%;
color: #949494;
}
#cboxCurrent {
position: absolute;
bottom: 4px;
left: 58px;
color: #949494;
}
#cboxLoadingOverlay {
background: url(images/loading_background.png) no-repeat center center;
}
#cboxLoadingGraphic {
background: url(images/loading.gif) no-repeat center center;
}
/* these elements are buttons, and may need to have additional styles reset to avoid unwanted base styles */
#cboxPrevious,
#cboxNext,
#cboxSlideshow,
#cboxClose {
border: 0;
padding: 0;
margin: 0;
overflow: visible;
width: auto;
background: none;
}
/* avoid outlines on :active (mouseclick), but preserve outlines on :focus (tabbed navigating) */
#cboxPrevious:active,
#cboxNext:active,
#cboxSlideshow:active,
#cboxClose:active {
outline: 0;
}
#cboxSlideshow {
position: absolute;
bottom: 4px;
right: 30px;
color: #0092ef;
}
#cboxPrevious {
position: absolute;
bottom: 0;
left: 0;
background: url(images/controls.png) no-repeat -75px 0;
width: 25px;
height: 25px;
text-indent: -9999px;
}
#cboxPrevious:hover {
background-position: -75px -25px;
}
#cboxNext {
position: absolute;
bottom: 0;
left: 27px;
background: url(images/controls.png) no-repeat -50px 0;
width: 25px;
height: 25px;
text-indent: -9999px;
}
#cboxNext:hover {
background-position: -50px -25px;
}
#cboxClose {
position: absolute;
bottom: 0;
right: 0;
background: url(images/controls.png) no-repeat -25px 0;
width: 25px;
height: 25px;
text-indent: -9999px;
}
#cboxClose:hover {
background-position: -25px -25px;
}
/*
The following fixes a problem where IE7 and IE8 replace a PNG's alpha transparency with a black fill
when an alpha filter (opacity change) is set on the element or ancestor element. This style is not applied to or needed in IE9.
See: http://jacklmoore.com/notes/ie-transparency-problems/
*/
.cboxIE #cboxTopLeft,
.cboxIE #cboxTopCenter,
.cboxIE #cboxTopRight,
.cboxIE #cboxBottomLeft,
.cboxIE #cboxBottomCenter,
.cboxIE #cboxBottomRight,
.cboxIE #cboxMiddleLeft,
.cboxIE #cboxMiddleRight {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#00FFFFFF,endColorstr=#00FFFFFF);
}colorbox自身にはスワイプとフリック機能がない。TouchSwipe-Jquery-Pluginでその機能を補完する。
npm install jquery-touchswipeモーダルで表示する要素に対してスワイプイベントを記述する。
$(".c-timeline__content").swipe({
swipeLeft:function(){
$.colorbox.next()
},
swipeRight:function(){
$.colorbox.prev()
}
});