JSFiddle - React, Tailwind, and code Playground
by secretgspot
HTML
<article>
<div class="slide">
<section class="point">
<header class="pointInner">
<h1>もしも、<br /><span class="attA">マークアップエンジニア</span>が<br />ひとりでWebサイトをつくったら<br /><span class="note attB">~HTML5でつくるWebアプリ~</span></h1>
</header>
</section>
<!-- /.slide --></div>
<div class="slide">
<h2>自己紹介</h2>
<ul style="float: left; width: 60%;">
<li>比留間 和也(ひるま かずや)</li>
<li>
面白法人カヤック
<dl class="note">
<dt>所属部署</dt>
<dd>意匠部 ME課(メカ)</dd>
</dl>
</li>
<li>コーディング歴は7年くらいです。</li>
<li>twitterID:<a href="http://twitter.com/edo_m18">@edo_m18</a></li>
</ul>
<p style="float: right; width: 35%;"><img src="http://dl.dropbox.com/u/298712/seminar/kayac_site.png" alt="" class="reflect fixImg" style="max-width: 400px;" /></p>
<!-- /.slide --></div>
<div class="slide">
<h2>普段はなにしてるの?</h2>
<div style="float: left; width: 60%;" class="note">
<p>普段は主にマークアップしてます。</p>
<p>それ以外にも、Movable Typeの構築や、JavaScriptなんかも書いてます。</p>
<div class="optSlide">
<p>社外活動としては、CSS関連の記事を配信するブログ(<a href="http://css-eblog.com/" target="_blank">CSS-EBLOG</a>)を書いてたりします。</p>
</div>
</div>
<div class="optSlide" style="float: right; width: 35%;"><p><img src="http://dl.dropbox.com/u/298712/seminar/eblog_site.png" style="max-width: 400px;" class="reflect fixImg" width="400" height="369" /></p></div>
<div class="optSlide coverCont">
ちなみにこのスライドは、<br />弊社サービスのjsdo.it上ですでに公開されています。<br />興味がある方は<br /><a href="http://jsdo.it/edo_m18/seminar/">http://jsdo.it/edo_m18/seminar/</a><br />にアクセスしてください。<span class="note2">(jsdo.itの説明)</span>
</div>
<!-- /.slide --></div>
<div class="slide">
<h2>アジェンダ</h2>
<ul>
<li>このセッションの目的</li>
<li>HTML5ってなに?(なにがすごいの?)</li>
<li>既存サービスにHTML5を応用するとこんなに便利!</li>
<li>マークアップエンジニアが作るWebアプリ</li>
<li>Webアプリ作成で使ったHTML5の新機能</li>
<li>今後求められるスキル</li>
<li>お知らせ</li>
</ul>
<!-- /.slide --></div>
<div class="slide">
<div class="point" style="width: 100%;"><div class="pointInner" style="text-align: center;"><strong class="attB">このセッションの目的</strong></div></div>
<!-- /.slide --></div>
<div...
CSS
@charset "utf-8";
article , header , footer , nav , section , aside {
display: block;
}
html {
height: 100%;
}
html,body,p,dl,dt{
margin:0;
padding:0;
}
body {
padding: 5%;
font-family: 'メイリオ', 'MS Pゴシック', 'Lucida Grande', 'Trebuchet MS', sans-serif;
height: 100%;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
-box-sizing: border-box;
}
.slide p{
line-height:1.4;
margin:.5em 0;
}
h1,h2{
margin-top: 0;
margin-left: 0;
margin-right: 0;
}
h1 {
font-size: 100%;
line-height: 1.2;
-webkit-box-reflect: below 2px -webkit-gradient(linear, left top, left bottom, color-stop(0.6, rgba(0,0,0,0)), color-stop(1, rgba(0,0,0,0.15)));
}
h2 {
color: #f63;
line-height: 0.8;
-webkit-box-reflect: below 2px -webkit-gradient(linear, left top, left bottom, color-stop(0.2, rgba(0,0,0,0)), color-stop(0.9, rgba(0,0,0,0.2)));
}
html {
}
.slidemode{
background: url(http://dl.dropbox.com/u/298712/seminar/bg.png) left top repeat;
position:fixed;
top:0;
right:0;
bottom:0;
left:0;
}
.slidemode .slide{
position:absolute;
top:5%;
bottom:5%;
left:2.5%;
color:#fff;
text-shadow:rgba(0,0,0,0.1) 1px 1px;
letter-spacing: 0.15em;
padding: 5%;
overflow:hidden;
width: 95%;
border-radius:20px;
opacity:0;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
transform-origin: 50% 50%;
}
.slide {
border: solid 1px #444;
background-image: -webkit-gradient(linear, left bottom, left top,color-stop(0, rgba(50,50,50,0.8)),color-stop(1, rgba(10,10,10,0.7)));
background-image: -moz-linear-gradient(90deg,rgba(50,50,50,0.7) 0%,rgba(10,10,10,0.7) 100%);
background-image: linear-gradient(90deg,rgba(50,50,50,0.7) 0%,rgba(10,10,10,0.7) 100%);
}
.slidemode .slide.left{
right:100%;
left:-200%;
/*height:0%;*/
-webkit-transform: scale(0);
-moz-transform: scale(0);
-o-transform: scale(0);
-ms-transform: scale(0);
...
JavaScript
// まずはページ幅取得
var width = document.documentElement.clientWidth;
document.body.className = 'slidemode';
// フォントサイズ調整
document.body.style.fontSize = width / 5.5 + '%';
var slides = [];
var SV = 'slide view';
var SR = 'slide right';
var SL = 'slide left';
// スライドの各ページを取得
// divタグのクラス名で判定
var divs = document.body.getElementsByTagName('div');
for (var i = 0,l = divs.length;i<l;i++){
if(/^slide/i.test(divs[i].className)){
divs[i].className = SR;
slides.push(divs[i]);
}
}
//現在のページ
var current = 0;
var count = slides.length;
//全ページ数を表示
var page = document.querySelector('.pageCnt');
page.innerHTML = current+'/'+count;
document.body.onclick = function(e){
var ev = e||window.event;
var x = ev.clientX;
if (width*0.95 < x && slides[current+1]){
//右余白がクリックされたとき
next();
} else if (width*0.05 > x && slides[current-1]) {
//左余白がクリックされたとき
prev();
}
};
var Down = -1, Up = 1;
if (document.body.onmousewheel !== void 0 || window.opera){
// onmousewheelが使えるか判定(Firefox以外はこちら)
document.body.onmousewheel = mousewheel;
} else {
// 実質Firefox用の処理。onmousewheelをサポートしたら上の処理だけで済むようになるはず
document.body.addEventListener('DOMMouseScroll',mousewheel,false);
}
function mousewheel(e){
var ev = e||window.event;
var dir = ev.wheelDelta || -ev.detail;
dir = dir < 0 ? Down : Up;
if (dir === Down && slides[current+1]){
next();
} else if (dir === Up && slides[current-1]) {
prev();
}
};
document.onkeydown = key_slide;
var J = 74, K = 75, Left = 37, Right = 39;
function key_slide(evt){
if (!evt) {
evt = window.event;
}
if ((evt.keyCode === K || evt.keyCode === Left) && slides[current-1]){// k
prev();
return false;
} else if ((evt.keyCode === J || evt.keyCode === Right) && slides[current+1]) {// j
next();
return false;
}
}
function next(){
var optObjs = slides[current].getElementsByTagName('div');
for( var i=0; i<optObjs.length; i++ ) {
if( optObjs[i].className.indexOf('optSlide') != -1 &&...