API by worldcup.sfg.io, cube by Wallace Erick and everything else by me
Forked from Jorge Epuñan's Pen World Cup FIFA Brazil 2014: current & closest matches.
A Pen by A Non Ymous on CodePen.
<ul id="options"> | |
<!--li><button class="current show-front">Front</button></li--> | |
<li><button class="show-right">Today</button></li> | |
<li><button class="show-left">Tomorrow</button></li> | |
<li><button class="show-top">Now</button></li> | |
<li><button class="show-back">About...</button></li> | |
<!--li><button class="show-bottom">Bottom</button></li--> | |
</ul> | |
<section class="container"> | |
<div id="box" class="box show-front"> | |
<figure class="front"><div>World Cup FIFA Brazil 2014 <small>current & closest matches</small></div></figure> | |
<figure class="back"><div>There's no ©. API by <a href="http://worldcup.sfg.io/" target="_blank">worldcup.sfg.io</a>, cube by <a href="http://codepen.io/wallaceerick/" target="_blank">Wallace Erick</a> and everything else by <a href="http://codepen.io/juanbrujo/" target="_blank">me</a>.</div></figure> | |
<figure class="right" id="todayGames"><div></div></figure> | |
<figure class="left" id="tomorrowGames"><div></div></figure> | |
<figure class="top" id="currentGames"><div></div></figure> | |
<figure class="bottom"></figure> | |
</div> | |
</section> |
$('button').click(function(){ | |
$('ul#options li button').removeClass('current'); | |
$(this).addClass('current'); | |
}); | |
var init = function() { | |
var box = document.querySelector('.box'), | |
showPanelButtons = document.querySelectorAll('ul#options li button'), | |
panelClassName = 'show-front', | |
onButtonClick = function( event ){ | |
box.removeClassName( panelClassName ); | |
panelClassName = event.target.className; | |
box.addClassName( panelClassName ); | |
}; | |
for (var i=0, len = showPanelButtons.length; i < len; i++) { | |
showPanelButtons[i].addEventListener( 'click', onButtonClick, false); | |
} | |
$('toggle-backface-visibility').on( 'click', function(){ | |
box.toggleClass('panels-backface-invisible'); | |
}, false); | |
}; | |
init(); | |
// Get Matches JSON from worldcup.sfg.io | |
var flagsurl = 'http://img.fifa.com/images/flags/4/'; | |
function currentGames() { | |
$.ajax({ | |
type: "GET", | |
url: "http://worldcup.sfg.io/matches/current?by_date=asc", | |
crossDomain: !0, | |
success: function (a) { | |
if (console.log("cGames JSON Proccessed"), a.length > 0) | |
for (var e = 0; e < a.length; e++) { | |
var t = new Date(a[e].datetime); | |
if(a[e].winner !== null) { | |
winner = "<p>Winner: " + a[e].winner + "</p>"; | |
} else { | |
winner = '<p>Winner: ?</p>'; | |
} | |
$("#currentGames div").append("<ul><li>" + a[e].home_team.country + ' <img src="'+ flagsurl + a[e].home_team.code + '.png" > ' + a[e].home_team.goals + " × " + a[e].away_team.goals + ' <img src="'+ flagsurl + a[e].away_team.code + '.png"> ' + a[e].away_team.country + "</li></ul><p>When: " + t + "</p><p>Where: " + a[e].location + "</p>" + winner + "<button id='currentRefresh'>Refresh</button>") | |
} else $("#currentGames div").append("<h3>No Games Right Now</h3>") | |
}, | |
error: function () { | |
console.log("cGames JSON not Proccessed"), $("#currentGames").html("<p>There are no games right now!</p>") | |
} | |
}) | |
} | |
function todayGames() { | |
$.ajax({ | |
type: "GET", | |
url: "http://worldcup.sfg.io/matches/today?by_date=asc", | |
crossDomain: !0, | |
success: function (a) { | |
console.log("tGames JSON Proccessed"); | |
for (var e = 0; e < a.length; e++) { | |
var t = new Date(a[e].datetime); | |
if(a[e].winner !== null) { | |
winner = "<p>Winner: " + a[e].winner + "</p>"; | |
} else { | |
winner = '<p></p>'; | |
} | |
$("#todayGames div").append("<ul><li>" + a[e].home_team.country + ' <img src="'+ flagsurl + a[e].home_team.code + '.png" > ' + a[e].home_team.goals + " × " + a[e].away_team.goals + ' <img src="'+ flagsurl + a[e].away_team.code + '.png"> ' + a[e].away_team.country + "</li></ul><p>When: " + t + "</p><p>Where: " + a[e].location + "</p>" + winner) | |
} | |
}, | |
error: function () { | |
console.log("tGames JSON not Proccessed"), $("#todayGames div").html("<p>There are no games today!</p>") | |
} | |
}) | |
} | |
function tomorrowGames() { | |
$.ajax({ | |
type: "GET", | |
url: "http://worldcup.sfg.io/matches/tomorrow?by_date=asc", | |
crossDomain: !0, | |
success: function (a) { | |
console.log("tmGames JSON Proccessed"); | |
for (var e = 0; e < a.length; e++) { | |
var t = new Date(a[e].datetime); | |
if(a[e].winner !== null) { | |
winner = "<p>Winner: " + a[e].winner + "</p>"; | |
} else { | |
winner = '<p></p>'; | |
} | |
$("#tomorrowGames div").append("<ul><li>" + a[e].home_team.country + ' <img src="'+ flagsurl + a[e].home_team.code + '.png" > ' + a[e].home_team.goals + " × " + a[e].away_team.goals + ' <img src="'+ flagsurl + a[e].away_team.code + '.png"> ' + a[e].away_team.country + "</li></ul><p>When: " + t + "</p><p>Where: " + a[e].location + "</p>" + winner) | |
} | |
}, | |
error: function () { | |
console.log("tGames JSON not Proccessed"), $("#tomorrowGames div").html("<p>There are no games today!</p>") | |
} | |
}) | |
} | |
currentGames(), | |
todayGames(), | |
tomorrowGames() | |
$('.show-top, #currentRefresh').on('click', function(){ | |
$('#currentGames > div').empty(); | |
currentGames(); | |
}); |
@box-width: 350px; | |
@box-height: 350px; | |
@primary-color: #ecf0f1; | |
@secundary-color: #2ecc71; | |
@tertiary-color: #f1c40f; | |
@quat-color: #2980b9; | |
//BOX | |
.container { | |
width: @box-width; | |
height: @box-height; | |
position: relative; | |
top: 50%; | |
left: 60%; | |
transform: translate(-50%,-50%); | |
perspective: 1800px; | |
} | |
.box { | |
width: 100%; | |
height: 100%; | |
position: absolute; | |
transform-style: preserve-3d; | |
transition: transform 0.5s; | |
text-shadow: darken(@secundary-color, 30%) 2px 2px 0; | |
figure, div { | |
position: absolute; | |
text-align: center; | |
color: white; | |
margin: 0; | |
border-radius: 6px; | |
div { | |
width: 100%; | |
height: 100%; | |
overflow: hidden; | |
overflow-y: auto; | |
font-size: .8rem; | |
} | |
a { | |
color: white; | |
} | |
h3 { border: white 1px solid; margin: .5rem; } | |
ul { | |
list-style: none; | |
padding: .5rem; | |
margin: .5rem; | |
border-radius: 4px; | |
background-color: darken(@quat-color, 15%); | |
li { | |
font-size: 1rem; | |
img {width: 20px;} | |
} | |
} | |
p { | |
margin: 0; | |
font-size: .7rem; | |
padding: 0 .5rem; | |
text-align: left; | |
&:nth-of-type(3n) { | |
/*border: white 1px solid; margin: .5rem;*/ | |
font-weight: bold; | |
font-size: 1rem; | |
} | |
} | |
button { | |
outline: none; | |
display: block; | |
cursor: pointer; | |
border: none; | |
padding: 5px 10px; | |
color: #fff; | |
text-transform: uppercase; | |
font-size: 11px; | |
background: @tertiary-color; | |
border-radius: 2px; | |
transition: 0.2s; | |
font-weight: bold; | |
margin: 5px auto; | |
text-shadow: darken(@tertiary-color, 20%) 1px 1px 0; | |
&:hover { | |
background: darken(@tertiary-color, 15%); | |
} | |
&.current { | |
background: darken(@tertiary-color, 30%); | |
} | |
} | |
} | |
} | |
//Sizes | |
.box .front, | |
.box .back { | |
width: @box-width; | |
height: @box-height; | |
} | |
.box .right, | |
.box .left { | |
width: @box-width; | |
height: @box-height; | |
} | |
.box .top, | |
.box .bottom { | |
width: @box-width; | |
height: @box-width; | |
} | |
//Positions | |
.box .right, | |
.box .left { | |
left: @box-width; | |
} | |
.box .top, | |
.box .bottom { | |
top: @box-height; | |
} | |
//Colors | |
.box .front, | |
.box .back { background: darken(@secundary-color, 5%);} | |
.box .right, | |
.box .left, | |
.box .top, | |
.box .bottom { background: @quat-color;} | |
//Transforms | |
.box .front { | |
transform: translateZ(@box-height/2); | |
} | |
.box .back { | |
transform: rotateX(-180deg) translateZ(@box-height/2); | |
} | |
.box .right { | |
transform: rotateY(90deg) translateZ(-@box-width/2); | |
} | |
.box .left { | |
transform: rotateY(-90deg) translateZ(@box-width*1.5); | |
} | |
.box .top { | |
transform: rotateX(90deg) translateZ(@box-height*1.5); | |
} | |
.box .bottom { | |
transform: rotateX(-90deg) translateZ(-@box-height/2); | |
} | |
//Show Specific Face | |
.box.show-front { | |
transform: translateZ(@box-height/2); | |
} | |
.box.show-back { | |
transform: translateZ(@box-height/2) rotateX(-180deg); | |
} | |
.box.show-right { | |
transform: translateZ(@box-width/2) rotateY(-90deg); | |
} | |
.box.show-left { | |
transform: translateZ(@box-width/2) rotateY(90deg); | |
} | |
.box.show-top { | |
transform: translateZ(@box-height/2) rotateX(-90deg); | |
} | |
.box.show-bottom { | |
transform: translateZ(@box-height/2) rotateX(90deg); | |
} | |
//Buttons | |
#options { | |
position: absolute; | |
top: 50%; | |
left: 0; | |
transform: translateY(-50%); | |
list-style: none; | |
padding: 0; | |
li { | |
margin-bottom: 5px; | |
button { | |
outline: none; | |
display: block; | |
cursor: pointer; | |
border: none; | |
padding: 10px 20px; | |
color: #fff; | |
text-transform: uppercase; | |
font-size: 14px; | |
background: @tertiary-color; | |
border-radius: 2px; | |
transition: 0.2s; | |
font-weight: bold; | |
text-shadow: darken(@tertiary-color, 20%) 2px 2px 0; | |
&:hover { | |
background: darken(@tertiary-color, 15%); | |
} | |
&.current { | |
background: darken(@tertiary-color, 30%); | |
} | |
} | |
} | |
} | |
.front { | |
display: table; | |
div { | |
font-weight: bold; | |
font-size: 2.2rem!important; | |
line-height: 120%; | |
display: table-cell; | |
vertical-align: middle; | |
position: static; | |
small { | |
display: block; | |
font-size: .8rem!important; | |
font-weight: normal; | |
border: 1px solid white; | |
margin: 1rem 3rem; | |
} | |
} | |
} | |
.back { | |
display: table; | |
div { | |
padding: 2rem; | |
width: 80%!important; | |
height: 80%!important; | |
display: table-cell; | |
vertical-align: middle; | |
position: static; | |
} | |
} | |
// GENERAL STYLE | |
@import url(http://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700); | |
html, body {height: 100%;} | |
body { | |
background: @primary-color; | |
font-family: 'Open Sans', sans-serif; | |
color: #fff; | |
overflow: hidden; | |
} |
API by worldcup.sfg.io, cube by Wallace Erick and everything else by me
Forked from Jorge Epuñan's Pen World Cup FIFA Brazil 2014: current & closest matches.
A Pen by A Non Ymous on CodePen.