JSFiddle - React, Tailwind, and code Playground
by oti ext
HTML
<div id="app">
<div class="container">
<div class="contents">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
<div class="msg">
<p class="text">写真をクリックしてスタート!</p>
<p><a class="tweet" href="#" target="_blank"></a></p>
</div>
</div>
</div>
SCSS
@charset "UTF-8";
.container {
position: relative;
margin: auto;
width: 960px;
height: 240px;
}
.contents {
display: table;
border: 3px solid black;
background-color: gold;
}
.box {
display: table-cell;
width: 320px;
height: 320px;
background-repeat: no-repeat;
background-position: center center;
}
.box:nth-child(2) {
border-right: 3px solid black;
border-left: 3px solid black;
}
.msg {
margin: 1em auto;
color: black;
font-size: 16px;
text-align: center;
}
.msg.hie {
display: none;
}
JavaScript
(function() {
'use strict';
// dom
var box = document.querySelectorAll('.box');
var msg = document.querySelectorAll('.msg');
var text = document.querySelectorAll('.text');
var tweet = document.querySelectorAll('.tweet');
var win_text = ['うわぁそろってる……すごいね……','今日はかなりついてるね!','乙。','ヤッター! さぁTKGを食べよう!'];
var lose_text = ['はい残念〜','おしい!','ンンーwww','まだそろえられないの?'];
// 各スロットの停止状態とTKG写真配列のインデックス
var slot_status = [];
// ゼロパディング
var zeroPadding = function(number, length){
return (Array(length).join('0') + number).slice(-length);
};
// TKG写真パスの配列
var tkgs = (function(){
var arr = []
for(var i=1;i<3;i++) {
arr.push('http://lab.dskd.jp/tkg-slot/img/'+zeroPadding(i,3)+'.jpg')
}
return arr;
})();
// そろってない時(何もしない)
function rolling() {
text[0].textContent = 'そろうかな〜?';
tweet[0].textContent = '';
tweet[0].setAttribute('href', '#')
};
// そろった時
function win() {
text[0].textContent = win_text[Math.floor(Math.random() * win_text.length)];
tweet[0].textContent = 'ツイートする';
tweet[0].setAttribute('href', 'https://twitter.com/intent/tweet?text='+encodeURIComponent('TKGスロットを揃えました。 '+tkgs[slot_status[0].img])+'&url='+encodeURIComponent('http://lab.dskd.jp/tkg-slot/')+'&via=dskd_jp&related=o_ti');
};
// そろってない時(何もしない)
function lose() {
text[0].textContent = lose_text[Math.floor(Math.random() * lose_text.length)];
tweet[0].textContent = '';
tweet[0].setAttribute('href', '#')
};
function status_has_query(key, query) {
return (slot_status.map(function(status){
return status[key];
}).indexOf(query) !== -1) ? true : false;
}
// img判定
function is_same_img() {
for (var i=0;i<slot_status.length;i++) {
if (slot_status[0].img !== slot_status[i].img) {
return false;
}
};
return true;
};
// TKGが揃ってるか判定
function judgement() {
// 全てスタート済みでなかったらreturn
if ( status_has_query('started', false) ) return;
// 停止してない写真があるか
...