S6.jsはid:amachangさん製作のプレゼンテーションツール(javascriptライブラリー)です。
詳細はhttp://d.hatena.ne.jp/amachang/20071121/1195627344をご覧下さい。
更新情報などはhttp://pastalablog.s3.zmx.jp/programming/jscript/s6torisetsu/をご覧下さい。
<script type="text/javascript" src="s6.js"></script>
<script type="text/javascript">
// <![CDATA[
var bodyStyle = {
width: '100%',
height: '100%',
padding: '0',
margin: '0',
overflow: 'hidden',
backgroundColor: 'gray'
};
s6.css('html', bodyStyle);
s6.css('body', bodyStyle);
var pr;
s6.attach(s6, 'ready', function ready() {
var html = document.documentElement;
var height = html.offsetHeight;
var width = html.offsetWidth;
var top = 0;
var left = 0;
if (height / width < 0.75) {
var originalWidth = width;
width = height / 0.75;
left = (originalWidth - width) / 2 + 'px';
}
else {
var originalHeight = height;
height = width * 0.75;
top = (originalHeight - height) / 2 + 'px';
}
var result;
if (result = document.cookie.match(/page=(\d+)/)) {
var startIndex = +result[1];
}
pr = new s6.Presentation({ element: document.body, width: width, height: height, startIndex: startIndex });
pr.style.left = left;
pr.style.top = top;
pr.start();
var indexNoOutline = false;
pr.funcPages.index.attachPage('click', function(i, element, wrapper) {
indexNoOutline = true;
setTimeout(function() {
indexNoOutline =false
}, 1000);
wrapper.style.background = '';
pr.go(i);
});
pr.funcPages.index.attachPage('mouseover', function(i, element, wrapper) {
if (indexNoOutline) return;
wrapper.className += ' selected';
});
pr.funcPages.index.attachPage('mouseout', function(i, element, wrapper) {
wrapper.className = 'wrapper';
});
try {
var isIframe = !(window.parent == window);
} catch(e) {
isIframe = true;
}
s6.attach(document, 'keypress Right', 'step', 0, pr);
s6.attach(document, 'keypress Left', 'prev', 0, pr);
s6.attach(document, 'keypress Up', function() { pr.go('index') });
s6.attach(document, 'keypress Down', 'back', 0, pr);
});
// Test
setInterval(function() {
document.cookie = 'page=' + pr.index;
}, 1000);
// ]]>
</script>
<style>
@media print{
.s6{
top:0 !IMPORTANT;
left:0 !IMPORTANT;
width:180mm !IMPORTANT;
height:265mm !IMPORTANT;
}
.s6 .index.page .inner.s6 .page .wrapper{
width:47% !IMPORTANT;
height:32% !IMPORTANT;
font-size:40%;
line-height:1.2;
}}
</style>
< と > で囲まれたものをタグ(htmlタグ)と言います。s6はこのhtmlを利用して記述します。
また大半のタグは<sample></sample>のようにタグを付ける範囲を指定します。
<tag1><tag2></tag2></tag1>のようになっていることをタグの入れ子と言います。
基本は大見出し→中見出し→小見出しの順に<h1>、<h2>、<h3>タグを使います。
表紙スライドは以下のように書くのが一般的です。
必要に応じてフォントサイズの変更などを行ってください。
<div> <h1>表題</h1> <address>作成者名</address> </div>
あとは通常のhtmlと同じ要領で記述するだけです。
S6はプレゼンテーションツールなので、もちろんエフェクトが用意されています。
一部ちょっとしたコツが必要なところもありますが、実際にやってみるのが一番だと思います
エフェクトの適用方やスタイル変更の方法を解説する前に両方に共通する適用部分の指定(=要素の指定)方法を解説します。
下の要領で指定することが可能です。
'【タグ指定】' : {【なにがしかを必要に応じて記述】}
同じタグが複数存在している場合は タグ名の後に[i](iにそのタグを上から数えた順番-1を記述。例)1つ目・・・[0]、2つ目[1])を付けて記述します。<div> <ul> <li>ここを指定したい!</li> </ul>の場合は
'ul/li' : {【なにがしかを必要に応じて記述】}
のように/で区切って指定します。
<script>
s6.page({
styles : {
'【タグ指定】' : {【スタイル情報記述】}
}
});
/script>
を記述します。フォントサイズを指定する場合はfontSizeを使って
'【タグ指定】' : {fontSize : '【サイズ指定。pt、px、%など】'}
と記述します。
S6には以下のようなエフェクトが用意されています
以下のソースを</div>の直前に記述します。
<script>
s6.page({
effect: 'fadeScale'
});
</script>
以下のソースを</div>の直前に記述します。
<script>
s6.page({
effect: 'fadeScaleFromUp'
});
</script>
以下のソースを</div>の直前に記述します。
<script>
s6.page({
actions: [
['要素指定', 'fade in', 表示されるまでの時間(秒)]
]
});
</script>
また複数指定の場合は","で区切ります。また実行順は上から順番です。
fade inを指定する場合はスタイル設定でdisplay:noneを指定しないと、始めから表示されてしまいます。
例
<script>
s6.page({
styles: {
'p' : {display : 'none'}
},
actions: [
['p[0]', 'fade in', 0.4], //1回目の右ボタンを押した時の処理
['p[1]', 'fade in', 0.4], //2回目の右ボタンを押した時の処理
['p[2]', 'fade in', 0.4] //3回目の右ボタンを押した時の処理
]
});
</script>
以下のソースを</div>の直前に記述します。
<script>
s6.page({
actions: [
['要素指定', 'move', 移動にかける時間(秒), [初期文字位置(x位置), 初期文字位置(y位置)], [移動終了文字位置(x位置), 移動終了文字位置(y位置)]]
});
</script>
例えば
<script>
s6.page({
actions: [
['p', 'move', 0.4, [0, 45], [-8, 45]]
});
</script>
のように記述します。
まだ自身も使いこなせていないので、これで全部とは言えませんが(ソース見る限りfadeとかもあるっぽい)少しでも助けになれば幸いです。
S6.jsに関する情報提供お待ちしています。pasta0915[at]gmail.comまで。