Created
December 4, 2012 20:52
-
-
Save marcgibert/4208538 to your computer and use it in GitHub Desktop.
A CodePen by Julian Garnier. 3D CSS Hartwig chess set (fully playable) - 3D chess game done in HTML/CSS/JS. Works only in webkit. Github repo: https://github.com/juliangarnier/3D-Hartwig-chess-set Using Photon : http://photon.attasi.com and Chess.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<body> | |
<div id="app" class="loading" data-theme="classic" data-frame="off" data-menu="main"> | |
<div id="logo"> | |
<div class="symbol"><div></div><div></div><div></div><div></div><div></div><div></div></div> | |
<div class="symbol"><div></div><div></div><div></div><div></div><div></div><div></div></div> | |
<div class="symbol"><div></div><div></div><div></div><div></div><div></div><div></div></div> | |
<div class="symbol"><div></div><div></div><div></div><div></div><div></div><div></div></div> | |
<div class="symbol"><div></div><div></div><div></div><div></div><div></div><div></div></div> | |
</div> | |
<div id="overlay"></div> | |
<div id="menu" class="main"> | |
<img id ="logoimg" src="https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/logo.png" alt="hartwig chess set" /> | |
<section id="panes"> | |
<section id="themes" class="pane"> | |
<div id="themes-box"> | |
<div class="set-theme" data-theme="classic"><div class="cube"></div></div> | |
<div class="set-theme" data-theme="marble"><div class="cube"></div></div> | |
<div class="set-theme" data-theme="flat"><div class="cube"></div></div> | |
<div class="set-theme" data-theme="wireframe"><div class="cube"></div></div> | |
</div> | |
<input type="checkbox" id="frame-switch" onchange="toggleFrame(this)"/> | |
<label for="frame-switch" class="btn white switch">Border</label> | |
<button type="button" class="btn menu-nav" data-menu="main">Back</button> | |
</section> | |
<section id="main" class="pane"> | |
<h1>3D Hartwig chess set</h1> | |
<p>done in HTML/CSS/JS by <a href="http://twitter.com/juliangarnier" target="_blank">@JulianGarnier</a></p> | |
<button type="button" class="btn white menu-nav" data-menu="themes">Themes | |
<button type="button" id="continue" class="btn">Play | |
<button type="button" class="btn white menu-nav" data-menu="about">About | |
</section> | |
<section id="about" class="pane"> | |
<h1>About</h1> | |
<p>Design and code by <a href="http://twitter.com/juliangarnier" target="_blank">@JulianGarnier</a></p> | |
<p>Works only in webkit.</p> | |
<p>Licensed under the MIT license.</p> | |
<p>Fork me on <a href="https://github.com/juliangarnier/3D-Hartwig-chess-set" target="_blanc">Github<a></p> | |
<h2>Libraries</h2> | |
<p>Lighting effect : <a href="http://photon.attasi.com" target="_blank">Photon</a><br> | |
Moves and validation : <a href="https://github.com/jhlywa/chess.js" target="_blank">Chess.js</a></p> | |
<button type="button" class="btn menu-nav" data-menu="main">Back</button> | |
</section> | |
</div> | |
<div id="top-bar"> | |
<button type="button" class="btn icon" data-state="inactive" id="undo"></button> | |
<p id="log"></p> | |
<button type="button" class="btn icon" id="open-menu"></button> | |
</div> | |
<div id="container"> | |
<div id="scene"> | |
<div id="table"> | |
<div id="b-jail" class="jail"></div> | |
<div id="frame"></div> | |
<table id="board"> | |
<thead> | |
<tr> | |
<th></th> | |
<th><span>a</span></th> | |
<th><span>b</span></th> | |
<th><span>c</span></th> | |
<th><span>d</span></th> | |
<th><span>e</span></th> | |
<th><span>f</span></th> | |
<th><span>g</span></th> | |
<th><span>h</span></th> | |
<th></th> | |
</tr> | |
</thead> | |
<tbody> | |
<tr> | |
<th><span>8</span></th> | |
<td id="a8" class="square"></td> | |
<td id="b8" class="square"></td> | |
<td id="c8" class="square"></td> | |
<td id="d8" class="square"></td> | |
<td id="e8" class="square"></td> | |
<td id="f8" class="square"></td> | |
<td id="g8" class="square"></td> | |
<td id="h8" class="square"></td> | |
<th><span>8</span></th> | |
</tr> | |
<tr> | |
<th><span>7</span></th> | |
<td id="a7" class="square"></td> | |
<td id="b7" class="square"></td> | |
<td id="c7" class="square"></td> | |
<td id="d7" class="square"></td> | |
<td id="e7" class="square"></td> | |
<td id="f7" class="square"></td> | |
<td id="g7" class="square"></td> | |
<td id="h7" class="square"></td> | |
<th><span>7</span></th> | |
</tr> | |
<tr> | |
<th><span>6</span></th> | |
<td id="a6" class="square"></td> | |
<td id="b6" class="square"></td> | |
<td id="c6" class="square"></td> | |
<td id="d6" class="square"></td> | |
<td id="e6" class="square"></td> | |
<td id="f6" class="square"></td> | |
<td id="g6" class="square"></td> | |
<td id="h6" class="square"></td> | |
<th><span>6</span></th> | |
</tr> | |
<tr> | |
<th><span>5</span></th> | |
<td id="a5" class="square"></td> | |
<td id="b5" class="square"></td> | |
<td id="c5" class="square"></td> | |
<td id="d5" class="square"></td> | |
<td id="e5" class="square"></td> | |
<td id="f5" class="square"></td> | |
<td id="g5" class="square"></td> | |
<td id="h5" class="square"></td> | |
<th><span>5</span></th> | |
</tr> | |
<tr> | |
<th><span>4</span></th> | |
<td id="a4" class="square"></td> | |
<td id="b4" class="square"></td> | |
<td id="c4" class="square"></td> | |
<td id="d4" class="square"></td> | |
<td id="e4" class="square"></td> | |
<td id="f4" class="square"></td> | |
<td id="g4" class="square"></td> | |
<td id="h4" class="square"></td> | |
<th><span>4</span></th> | |
</tr> | |
<tr> | |
<th><span>3</span></th> | |
<td id="a3" class="square"></td> | |
<td id="b3" class="square"></td> | |
<td id="c3" class="square"></td> | |
<td id="d3" class="square"></td> | |
<td id="e3" class="square"></td> | |
<td id="f3" class="square"></td> | |
<td id="g3" class="square"></td> | |
<td id="h3" class="square"></td> | |
<th><span>3</span></th> | |
</tr> | |
<tr> | |
<th><span>2</span></th> | |
<td id="a2" class="square"></td> | |
<td id="b2" class="square"></td> | |
<td id="c2" class="square"></td> | |
<td id="d2" class="square"></td> | |
<td id="e2" class="square"></td> | |
<td id="f2" class="square"></td> | |
<td id="g2" class="square"></td> | |
<td id="h2" class="square"></td> | |
<th><span>2</span></th> | |
</tr> | |
<tr> | |
<th><span>1</span></th> | |
<td id="a1" class="square"></td> | |
<td id="b1" class="square"></td> | |
<td id="c1" class="square"></td> | |
<td id="d1" class="square"></td> | |
<td id="e1" class="square"></td> | |
<td id="f1" class="square"></td> | |
<td id="g1" class="square"></td> | |
<td id="h1" class="square"></td> | |
<th><span>1</span></th> | |
</div> | |
</tbody> | |
<tfoot> | |
<tr> | |
<th></th> | |
<th><span>a</span></th> | |
<th><span>b</span></th> | |
<th><span>c</span></th> | |
<th><span>d</span></th> | |
<th><span>e</span></th> | |
<th><span>f</span></th> | |
<th><span>g</span></th> | |
<th><span>h</span></th> | |
<th></th> | |
</tr> | |
</tfoot> | |
</table> | |
<div id="w-jail" class="jail"></div> | |
</div> | |
<div id="pieces"> | |
<div id="p" class="piece pawn"> | |
<div class="poly-group"> | |
<div class="poly small-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
</div> | |
<div id="r" class="piece rook"> | |
<div class="poly-group"> | |
<div class="poly big-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
</div> | |
<div id="n" class="piece knight"> | |
<div class="poly-group bottom"> | |
<div class="poly a"> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
</div> | |
<div class="poly b"> | |
<div class="ft face"></div> | |
<div class="tp face"></div> | |
</div> | |
<div class="poly c"> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
</div> | |
</div> | |
<div class="poly-group top"> | |
<div class="poly a"> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
<div class="poly b"> | |
<div class="ft face"></div> | |
<div class="tp face"></div> | |
</div> | |
<div class="poly c"> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
</div> | |
</div> | |
</div> | |
<div id="b" class="piece bishop"> | |
<div class="poly-group rectangle a"> | |
<div class="poly"> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
<div class="poly-group rectangle b"> | |
<div class="poly"> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
<div class="poly-group rectangle b prim"> | |
<div class="poly"> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
<div class="poly-group corners a"> | |
<div class="poly big-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
</div> | |
</div> | |
<div class="poly-group corners b"> | |
<div class="poly big-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
</div> | |
</div> | |
</div> | |
<div id="q" class="piece queen"> | |
<div class="poly-group bottom"> | |
<div class="poly big-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
<div class="poly-group top"> | |
<div class="poly"> | |
<div class="sphere"></div> | |
</div> | |
</div> | |
</div> | |
<div id="k" class="piece king"> | |
<div class="poly-group bottom"> | |
<div class="poly big-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
<div class="poly-group top"> | |
<div class="poly small-cube"> | |
<div class="ft face"></div> | |
<div class="bk face"></div> | |
<div class="rt face"></div> | |
<div class="lt face"></div> | |
<div class="tp face"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div id="promotion"></div> | |
</div> | |
</div> | |
</body> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
I had some issues running the javascript directly into codepen, | |
I wrapped everything in one external js file. | |
The full code can be found here : https://github.com/juliangarnier/3D-Hartwig-chess-set | |
*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
BEST VIEWED IN FULL SCREEN : | |
================================================= | |
http://codepen.io/juliangarnier/fulldetails/BsIih | |
================================================= | |
*/ | |
@import url(http://fonts.googleapis.com/css?family=Lato:400,900); | |
* { box-sizing: border-box; tap-highlight-color:rgba(0,0,0,0); } | |
body { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
font-size: 100%; | |
overflow: hidden; | |
font-family: avenir, 'Lato', sans-serif; | |
font-weight: 400; | |
} | |
button { | |
font-family: 'Lato', avenir, sans-serif; | |
font-weight: 400; | |
} | |
body:not(.animated) *:not(#panes) { transition: all 0s linear; } | |
#app { | |
position: absolute; | |
width: 100%; | |
height: 100%; | |
background-color: black; | |
color: white; | |
} | |
#app a { color: #EAEAEA; } | |
#container, | |
#board, | |
#frame { | |
position: absolute; | |
left: 50%; | |
top: 50%; | |
transform-style: preserve-3d; | |
} | |
#app[data-frame="off"] #board, | |
#app[data-frame="off"] #board #container, | |
#app[data-frame="off"] #frame { | |
width: 8em; | |
height: 8em; | |
margin: -4em 0 0 -4em; | |
} | |
#app[data-frame="on"] #container, | |
#app[data-frame="on"] #board, | |
#app[data-frame="on"] #frame { | |
position: absolute; | |
left: 50%; | |
top: 50%; | |
width: 9.5em; | |
height: 9.5em; | |
margin: -4.75em 0 0 -4.75em; | |
transform-style: preserve-3d; | |
} | |
#container { | |
z-index: 1; | |
perspective: 800px; | |
transform: translateZ( -9999px ); | |
} | |
#app[data-state="game"] #container { transform: inherit; } | |
#scene { | |
position: absolute; | |
left: 50%; | |
top: 50%; | |
width: 16em; | |
height: 16em; | |
margin: -8em 0 0 -8em; | |
transform-style: preserve-3d; | |
transform: rotateX( 90deg ) rotateZ( 90deg ); | |
} | |
.sphere { transform: rotateZ( -90deg ) rotateX( -90deg ); } | |
#scene, .sphere { transition: transform 2s ease-in-out; } | |
#app[data-state="game"] #scene, | |
#app[data-state="game"] .sphere { transition-delay: .2s; } | |
#pieces { | |
visibility: hidden; | |
position: absolute; | |
left: 0; | |
top: 0; | |
} | |
#board { | |
z-index: 0; | |
transform: translateZ(.3em); | |
} | |
#board:after, #frame:after, #frame:before { | |
position: absolute; | |
content: ""; | |
width: 100%; | |
height: .3em; | |
transform-style: preserve-3d; | |
box-sizing: border-box; | |
} | |
#frame { | |
z-index: -1; | |
transform-style: preserve-3d; | |
transform: translateZ(.02em) rotateZ(90deg); | |
box-shadow: 0 0 .25em .1em rgba(0,0,0,.5); | |
} | |
#app[data-frame="on"] #board:after { transform: rotateX(90deg) translateZ(8.75em) translateY(-0.3em); | |
transform-origin: 0 0; } | |
#app[data-frame="on"] #frame:after { transform: rotateX(90deg) rotateY(90deg) translateX(9.5em) translateY(-0.02em); | |
transform-origin: 100% 0; } | |
#app[data-frame="on"] #frame:before { transform: rotateX(90deg) rotateY(0deg) translateX(0em) translateY(-0.02em); | |
transform-origin: 100% 0; } | |
#app[data-frame="off"] th { display: none; } | |
#app[data-frame="off"] #board:after { transform: rotateX(90deg) translateZ(8em) translateY(-0.3em); | |
transform-origin: 0 0; } | |
#app[data-frame="off"] #frame:after { transform: rotateX(90deg) rotateY(90deg) translateX(8em) translateY(-0.02em); | |
transform-origin: 100% 0; } | |
#app[data-frame="off"] #frame:before { transform: rotateX(90deg) rotateY(0deg) translateX(0em) translateY(-0.02em); | |
transform-origin: 100% 0; } | |
th, td { | |
position: relative; | |
width: 1em; | |
height: 1em; | |
} | |
th { | |
vertical-align: top; | |
font-size: 75%; | |
line-height: .5em; | |
} | |
tbody th { | |
vertical-align: top; | |
line-height: .9em; | |
} | |
table span { | |
display: block; | |
height: 100%; | |
font-size: .26em; | |
color: rgba(255,255,255,.75); | |
transform: translateZ(1px); | |
} | |
thead span, tbody th:last-child span{ | |
transform: rotateZ(180deg) translateZ(1px); | |
transform-origin: center; | |
} | |
thead span, tfoot span { line-height: 3.9em; } | |
tbody span { line-height: 4.5em; padding-right: 0.3em; } | |
/* ---------------------------------------------------------------------------------------------------- jail */ | |
.jail { | |
position: absolute; | |
left: 50%; | |
width: 8em; | |
height: 2.25em; | |
} | |
#app[data-frame="off"] #w-jail { bottom: 1.5em; margin-left: -4em; } | |
#app[data-frame="off"] #b-jail { top: 1.5em; margin-left: -4em; } | |
#app[data-frame="on"] #w-jail { bottom: 1em; margin-left: -4em; } | |
#app[data-frame="on"] #b-jail { top: 1em; margin-left: -4em; } | |
#w-jail { | |
bottom: 1em; | |
transform-style: preserve-3d; | |
transform: rotateZ(0deg) translateZ(2px); | |
} | |
#b-jail { | |
top: 1em; | |
transform-style: preserve-3d; | |
transform: rotateZ(180deg) translateZ(2px); | |
} | |
.jail .piece{ | |
position: relative; | |
float: left; | |
} | |
.jail .piece .face, .jail .piece .sphere, { | |
box-shadow: inset 10em 10em 1em rgba(0, 0, 0, .3); | |
} | |
#b-jail .piece { transform-origin: center; transform: rotateZ(180deg); } | |
#w-jail .piece { transform-origin: center; transform: rotateZ(0deg);} | |
@media screen and (min-width: 56em) { | |
#app[data-frame="off"] #w-jail { bottom: 6.9em; margin-left: 1.5em; } | |
#app[data-frame="off"] #b-jail { top: 6.9em; margin-left: -9.5em; } | |
#app[data-frame="on"] #w-jail { bottom: 6.9em; margin-left: 2em; } | |
#app[data-frame="on"] #b-jail { top: 6.9em; margin-left: -10em; } | |
#b-jail { transform: rotateZ(90deg) translateZ(2px); } | |
#w-jail { transform: rotateZ(-90deg) translateZ(2px); } | |
#b-jail .piece { transform: rotateZ(-90deg); } | |
#w-jail .piece { transform: rotateZ(90deg); } | |
} | |
/* ---------------------------------------------------------------------------------------------------- piece */ | |
.piece { | |
position: absolute; | |
width: 1em; | |
height: 1em; | |
transform-style: preserve-3d; | |
transform-origin: 4em; | |
transform: translateZ( 2px ); | |
} | |
.piece, | |
.poly, | |
.poly .face, | |
.poly-group:first-child, | |
.bishop .poly-group:nth-child(2) { | |
transition: transform .2s linear; | |
} | |
.piece:active { | |
cursor: grabbing; | |
cursor: -moz-grabbing; | |
cursor: grabbing; | |
} | |
.piece.grabbed { | |
transition: all 0s linear; | |
z-index: 9999; | |
} | |
.poly-group { | |
position: absolute; | |
left: 50%; | |
top: 50%; | |
font-size: 10%; | |
transform-style: preserve-3d; | |
} | |
.poly-group:first-child { | |
background: rgba(0,0,0,.4); | |
box-shadow: 0 0 1em .2em rgba(0,0,0,.6); | |
} | |
.bishop .poly-group:nth-child(2) { | |
background: rgba(0,0,0,.4); | |
box-shadow: 0 0 1em .2em rgba(0,0,0,.6); | |
} | |
.piece:active .poly, .piece.grabbed .poly{ | |
transform: translateZ( 10em ); | |
} | |
.piece.grabbed .poly-group:first-child { | |
background: rgba(0,0,0,.6); | |
box-shadow: 0 0 1em .8em rgba(0,0,0,.6); | |
} | |
.piece.grabbed.bishop .poly-group:nth-child(2) { | |
background: rgba(0,0,0,.6); | |
box-shadow: 0 0 1em .8em rgba(0,0,0,.6); | |
} | |
.poly { | |
position: absolute; | |
transform-style: preserve-3d; | |
} | |
.poly .face { | |
position: absolute; | |
transform-origin: 0 0; | |
} | |
.valid:before, | |
.valid:after, | |
.current:before, | |
.current:after, | |
.castle:before, | |
.castle:after, | |
.valid.highlight:before, | |
.valid.highlight:after, | |
.current.highlight:before, | |
.current.highlight:after { | |
content: ''; | |
z-index: 1; | |
position: absolute; | |
top: 50%; | |
left: 50%; | |
border-radius: 50%; | |
transform-style: preserve-3d; | |
-moz-box-sizing: border-box; box-sizing: border-box; box-sizing: border-box; | |
transform: translateZ( 1px ); | |
} | |
.valid:before, .current:before { | |
width: .3em; | |
height: .3em; | |
margin-left: -.15em; | |
margin-top: -.15em; | |
background: rgba(255,255,255,.5); | |
} | |
.highlight:before { | |
z-index: 2; | |
box-shadow: 0 0 1em 1em rgba(255,255,255,.4); | |
} | |
.valid.highlight:before, | |
.current.highlight:before, | |
.current:before { background: rgba(255,255,255,1); } | |
.valid.highlight:after, | |
.current.highlight:after { | |
width: .6em; | |
height: .6em; | |
margin-left: -.3em; | |
margin-top: -.3em; | |
border: .1em solid rgba(255,255,255,.8); | |
} | |
.valid.captured:after { | |
width: .8em; | |
height: .8em; | |
margin-left: -.4em; | |
margin-top: -.4em; | |
border: .1em solid rgba(255,255,255,.6); | |
} | |
.valid:before { background: rgba(255,255,255,.35); } | |
.valid:after { border: none; } | |
.valid.highlight:before { background: rgba(255,255,255,1); } | |
.valid.highlight:after { border: .1em solid rgba(255,255,255,.35); } | |
.valid.captured:before { background: rgba(255,67,47,.5); } | |
.valid.captured:after { border: .1em solid rgba(255,67,47,.5); } | |
.valid.captured.highlight:before { background: rgba(255,67,47,1); } | |
.valid.captured.highlight:after { border: .1em solid rgba(255,67,47,1); } | |
.valid[class*="O-O"]:before { background: #CC0; } | |
.valid[class*="O-O"]:after { border: .1em solid #CC0; } | |
/* ---------------------------------------------------------------------------------------------------- pawn / king head */ | |
.pawn .poly-group { | |
width: 4em; | |
height: 4em; | |
margin: -2em 0 0 -2em; | |
} | |
.poly.small-cube { | |
width: 4em; | |
height: 4em; | |
} | |
.small-cube .tp { | |
width: 4em; | |
height: 4em; | |
transform: translateZ( 4em ); | |
} | |
.small-cube .ft { | |
width: 4em; | |
height: 4em; | |
transform: rotateX(90deg) translateZ(-4em); | |
} | |
.small-cube .bk { | |
width: 4em; | |
height: 4em; | |
transform: rotateX(90deg); | |
} | |
.small-cube .rt { | |
width: 4em; | |
height: 4em; | |
transform: rotateY(90deg) translateX(-4em); | |
} | |
.small-cube .lt { | |
width: 4em; | |
height: 4em; | |
transform: rotateY(90deg) translateX(-4em) translateZ(4em); | |
} | |
/* ---------------------------------------------------------------------------------------------------- rook / queen and king bodies */ | |
.rook .poly-group { | |
width: 6em; | |
height: 6em; | |
margin: -3em 0 0 -3em; | |
} | |
.poly.big-cube { | |
width: 6em; | |
height: 6em; | |
} | |
.big-cube .tp { | |
width: 6em; | |
height: 6em; | |
transform: translateZ( 6em ); | |
} | |
.big-cube .ft { | |
width: 6em; | |
height: 6em; | |
transform: rotateX(90deg) translateZ(-6em); | |
} | |
.big-cube .bk { | |
width: 6em; | |
height: 6em; | |
transform: rotateX(90deg); | |
} | |
.big-cube .rt { | |
width: 6em; | |
height: 6em; | |
transform: rotateY(90deg) translateX(-6em); | |
} | |
.big-cube .lt { | |
width: 6em; | |
height: 6em; | |
transform: rotateY(90deg) translateX(-6em) translateZ(6em); | |
} | |
/* ---------------------------------------------------------------------------------------------------- knight */ | |
.knight .poly-group { | |
width: 6em; | |
height: 6em; | |
margin: -3em 0 0 -3em; | |
} | |
.knight .poly-group.top { transform: translateZ( 3em ) rotateZ( 180deg ); } | |
.knight .poly.a { margin: 0; } | |
.knight .poly.b { margin: 3em 0 0 0; } | |
.knight .poly.c { margin: 3em 0 0 3em; } | |
.knight .tp { | |
width: 3em; | |
height: 3em; | |
transform: translateZ( 3em ); | |
} | |
.knight .bm { | |
width: 8em; | |
height: 8em; | |
transform: translateZ( 0em ); | |
} | |
.knight .ft { | |
width: 3em; | |
height: 3em; | |
transform: rotateX(90deg) translateZ(-3em); | |
} | |
.knight .bk { | |
width: 3em; | |
height: 3em; | |
transform: rotateX(90deg); | |
} | |
.knight .rt { | |
width: 3em; | |
height: 3em; | |
transform: rotateY(90deg) translateX(-3em); | |
} | |
.knight .lt { | |
width: 3em; | |
height: 3em; | |
transform: rotateY(90deg) translateX(-3em) translateZ(3em); | |
} | |
.knight .poly.a .rt { height: 6em; } | |
.knight .poly.b .ft { width: 6em; } | |
.knight .poly.b .tp { width: 6em; } | |
.knight .bottom .poly.b .tp { box-shadow: inset -3.6em .7em 2em rgba(0, 0, 0, .7); } | |
/* ---------------------------------------------------------------------------------------------------- bishop */ | |
.bishop .rectangle { | |
width: 2em; | |
height: 6.6em; | |
margin: -3.3em 0 0 -1em; | |
} | |
.bishop .rectangle.a { transform: rotateZ( 45deg ); } | |
.bishop .rectangle.b { transform: rotateZ( -45deg ); } | |
.bishop .rectangle.a .tp { | |
position: relative; | |
width: 2em; | |
height: 6.6em; | |
transform: translateZ(6em); | |
} | |
.bishop .rectangle.a .rt { | |
width: 6em; | |
height: 6.6em; | |
transform: rotateY(90deg) translateX(-6em) translateZ(0em); | |
} | |
.bishop .rectangle.a .lt { | |
width: 6em; | |
height: 6.6em; | |
transform: rotateY(90deg) translateX(-6em) translateZ(2em); | |
} | |
.bishop .rectangle.a .tp:before, .bishop .rectangle.b .tp:before { | |
content: ""; | |
position: absolute; | |
top: -1em; | |
width: 0; | |
height: 0; | |
border-left: 1.1em solid transparent; | |
border-right: 1.1em solid transparent; | |
border-bottom: 1.1em solid #fff; | |
} | |
.bishop .rectangle.b.prim .tp:before { border: none; } | |
.bishop .rectangle.a .tp:after, .bishop .rectangle.b.prim .tp:after { | |
content: ""; | |
position: absolute; | |
bottom: -1em; | |
width: 0; | |
height: 0; | |
border-left: 1.1em solid transparent; | |
border-right: 1.1em solid transparent; | |
border-top: 1.1em solid #fff; | |
} | |
.bishop .rectangle.b .tp { | |
position: relative; | |
width: 2em; | |
height: 2.3em; | |
transform: translateZ(6em); | |
} | |
.bishop .rectangle.b .rt { | |
width: 6em; | |
height: 2.3em; | |
transform: rotateY(90deg) translateX(-6em); | |
} | |
.bishop .rectangle.b .lt { | |
width: 6em; | |
height: 2.3em; | |
transform: rotateY(90deg) translateX(-6em) translateZ(2em); | |
} | |
.bishop .rectangle.b.prim .tp { transform: translateZ(6em) translateY(4.3em); } | |
.bishop .rectangle.b.prim .rt { transform: rotateY(90deg) translateX(-6em) translateY(4.3em); } | |
.bishop .rectangle.b.prim .lt { transform: rotateY(90deg) translateX(-6em) translateZ(2em) translateY(4.3em); } | |
.bishop .corners.a { transform: rotateZ( 0deg ); } | |
.bishop .corners.b { transform: rotateZ( 180deg ); } | |
.bishop .big-cube { margin: -3em 0 0 -3em; } | |
.bishop .big-cube .ft { width: 1.5em; } | |
.bishop .big-cube .lt { height: 1.5em; } | |
.bishop .big-cube .bk { width: 1.5em; } | |
.bishop .big-cube .rt { height: 1.5em; } | |
.bishop .tp { box-shadow: 0 0 0 #fff; } | |
/* ---------------------------------------------------------------------------------------------------- queen */ | |
.queen .poly-group:first-child { | |
width: 6em; | |
height: 6em; | |
margin: -3em 0 0 -3em; | |
} | |
.queen .top { transform: translateZ(8.5em); } | |
.queen .bottom .tp:before { | |
content: ''; | |
position: absolute; | |
left: 50%; | |
top: 50%; | |
width: 1em; | |
height: 1em; | |
margin: -.5em 0 0 -.5em; | |
background: rgba(0,0,0,.6); | |
border-radius: 50%; | |
transform: rotateX( -35.3deg ) rotateY(0deg); | |
box-shadow: 0 0 1em 2em rgba(0,0,0,.6); | |
} | |
.poly div.sphere { | |
position: absolute; | |
left: 50%; | |
width: 5em; | |
height: 5em; | |
margin: -2.5em 0 0 -2.5em; | |
border-radius: 50%; | |
transform-origin: 2.5em 2.5em; | |
} | |
/* ---------------------------------------------------------------------------------------------------- king */ | |
.king .poly-group:first-child { | |
width: 6em; | |
height: 6em; | |
margin: -3em 0 0 -3em; | |
} | |
.king .top { transform: rotateZ(-45deg) translateZ(6em); } | |
.king .top .small-cube { margin: -2em 0 0 -2em; } | |
/* ---------------------------------------------------------------------------------------------------- pieces initial positions */ | |
#p { transform: translateX( -1em ) translateY( 7em ); } | |
#r { transform: translateX( -1em ) translateY( 6em ); } | |
#n { transform: translateX( -1em ) translateY( 5em ); } | |
#b { transform: translateX( -1em ) translateY( 4em ); } | |
#q { transform: translateX( -1em ) translateY( 3em ); } | |
#k { transform: translateX( -1em ) translateY( 2em ); } | |
/* ------------------------------------------------------- UI elements */ | |
h1 { | |
margin-bottom: .5em; | |
font-size: 1.75em; | |
font-weight: 900; | |
text-transform: uppercase; | |
} | |
h2 { | |
margin-top: .75em; | |
margin-bottom: .5em; | |
font-size: 1em; | |
font-weight: 900; | |
text-transform: uppercase; | |
} | |
#menu, #top-bar { | |
z-index: 100; | |
font-size: 16px; | |
text-align: center; | |
} | |
#menu { | |
opacity: 0; | |
position: absolute; | |
left: 50%; | |
width: 24em; | |
height: 9em; | |
margin: 0 0 0 -12em; | |
transition-delay: 0; | |
transition: all 1.5s ease-in-out; | |
transform: translateY(-24em) translateZ(99999px); | |
} | |
#app[data-state="menu"] #menu { | |
opacity: 1; | |
transition-delay: 1.5s; | |
transform: translateY(0em) translateZ(99999px); | |
} | |
#logoimg { | |
margin: 3em 0 1em 0; | |
} | |
#logo { | |
z-index: 100; | |
position: absolute; | |
left: 50%; | |
top: 50%; | |
width: 20em; | |
height: 4em; | |
margin-left: -10em; | |
margin-top: -4em; | |
font-size: 16px; | |
transform: translateZ(9999px); | |
perspective: 800; | |
transition: top 1.5s ease-in-out; | |
} | |
#app[data-state="game"] #logo { | |
transform: translateZ(9999px) translateY(-40em); | |
} | |
.symbol { | |
position: relative; | |
float: left; | |
width: 4em; | |
height: 4em; | |
transition : transform 2s linear; | |
transform-style : preserve-3d; | |
transform-origin : 2em 2em; | |
transition: all 1.5s ease-in-out; | |
animation : fall 2s 1 ease-in-out; | |
} | |
.loading .symbol { | |
top: 0; | |
animation : rotateX 2s 1 ease-in-out; | |
} | |
.symbol:nth-child(1) { z-index: 1; animation-delay: 400ms; } | |
.symbol:nth-child(2) { z-index: 2; animation-delay: 500ms; } | |
.symbol:nth-child(3) { z-index: 3; animation-delay: 600ms; } | |
.symbol:nth-child(4) { z-index: 2; animation-delay: 700ms; } | |
.symbol:nth-child(5) { z-index: 1; animation-delay: 800ms; } | |
@keyframes rotateX { | |
0% { transform: rotateX(0deg); } | |
100% { transform: rotateX(360deg); } | |
} | |
@keyframes fall { | |
0% { transform: rotateX(0deg) translateY(0em); opacity: 1; } | |
100% { transform: rotateX(120deg) translateY(60em); opacity: 0; } | |
} | |
.symbol > div { | |
position: absolute; | |
width: 4em; | |
height: 4em; | |
transform-style: preserve-3d; | |
background-color : white; | |
} | |
.symbol div:nth-child(1) { transform : translateZ(2em); } | |
.symbol div:nth-child(2) { transform : rotateY(90deg) translateZ(2em); background-color : #A0A0A0; } | |
.symbol div:nth-child(3) { transform : rotateY(180deg) translateZ(2em); background-color : #D0D0D0; } | |
.symbol div:nth-child(4) { transform : rotateY(-90deg) translateZ(2em); background-color : #A0A0A0; } | |
.symbol div:nth-child(5) { transform : rotateX(-90deg) translateZ(2em) rotate(180deg); background-color: #E0E0E0; } | |
.symbol div:nth-child(6) { transform : rotateX(90deg) translateZ(2em); background-color : #C0C0C0; } | |
.symbol > div:first-child { | |
background-color: #101010; | |
border: .25em solid white; | |
} | |
.symbol > div:first-child:before, | |
.symbol > div:first-child:after { | |
content: ""; | |
position: absolute; | |
} | |
.symbol:nth-child(1) > div:first-child:before { | |
top: .55em; | |
left: .55em; | |
width: 2.45em; | |
height: 2.45em; | |
transform: rotateZ(45deg); | |
background-color: white; | |
} | |
.symbol:nth-child(2) > div:first-child:before { | |
top: .05em; | |
left: .05em; | |
width: 2.5em; | |
height: 2.5em; | |
background-color: #101010; | |
border-radius: 50%; | |
border: .45em solid white; | |
} | |
.symbol:nth-child(3) > div:first-child { | |
background-color: white; | |
overflow: hidden; | |
} | |
.symbol:nth-child(3) > div:first-child:before, | |
.symbol:nth-child(3) > div:first-child:after { | |
left: 1em; | |
width: 1em; | |
height: 6em; | |
background-color: #101010; | |
} | |
.symbol:nth-child(3) > div:first-child:before { | |
top: -1em; | |
transform: rotateZ(45deg); | |
} | |
.symbol:nth-child(3) > div:first-child:after { | |
top: -1.5em; | |
-webkit-transform: rotateZ(-45deg); | |
} | |
.symbol:nth-child(4) > div:first-child:before { | |
right: 0; | |
bottom: 0; | |
width: 1.75em; | |
height: 1.75em; | |
background-color: white; | |
} | |
#panes { | |
width: 72em; | |
transition: transform .75s ease-in-out; | |
} | |
.pane { | |
opacity: 0; | |
width: 24em; | |
height: 8em; | |
position: absolute; | |
background-color: transparent; | |
transition: opacity .45s ease-in-out!important; | |
} | |
.pane:nth-child(1) { transform: translateX(-80em); } | |
.pane:nth-child(2) { transform: translateX(0em); } | |
.pane:nth-child(3) { transform: translateX(80em); } | |
#app[data-menu="themes"] #panes { transform: translateX(80em); } | |
#app[data-menu="main"] #panes { transform: translateX(0em); } | |
#app[data-menu="about"] #panes { transform: translateX(-80em); } | |
#app[data-menu="main"] #main, | |
#app[data-menu="themes"] #themes, | |
#app[data-menu="about"] #about { | |
opacity: 1; | |
} | |
#top-bar { | |
opacity: 0; | |
position: relative; | |
width: 100%; | |
max-width: 46em; | |
height: 2em; | |
margin: 0 auto; | |
transform: translateY(-3em); | |
transition: all 1.5s ease-in-out; | |
transition-delay: 0s; | |
} | |
#app[data-state="game"] #top-bar { | |
opacity: 1; | |
transform: translateY(1em); | |
transition-delay: 1s; | |
} | |
.btn { | |
display: inline-block; | |
height: 2em; | |
border: none; | |
color: white; | |
font-size: 1em; | |
line-height: 1.75em; | |
text-align: center; | |
vertical-align: middle; | |
text-decoration: none; | |
text-transform: uppercase; | |
background-color: #303030; | |
transform: translateZ(1em); | |
transition: background-color .1s ease-out!important; | |
} | |
.btn.white { | |
color: black; | |
background-color: white; | |
} | |
.btn:hover, | |
.btn:active { background-color: #5A5A5A; cursor: pointer; } | |
.btn.white:hover, | |
.btn.white:active { background-color: #CACACA; } | |
#menu .btn { | |
width: 6em; | |
margin: 1em 0em; | |
} | |
#top-bar .btn { | |
width: 4em; | |
height: 3em; | |
padding: 0; | |
background-color: rgba(255,255,255,.01); | |
} | |
#undo { float: left; } | |
#open-menu { float: right; } | |
#undo:before { background-position: 0 0; } | |
#open-menu:before { background-position: -20px 0; } | |
#undo[data-state="inactive"] { display: none; } | |
#log { | |
position: absolute; | |
left: 50%; | |
width: 24em; | |
height: 3em; | |
margin-left: -12em; | |
color: #808080; | |
text-align: center; | |
line-height: 3em; | |
} | |
.btn.icon { background-color: rgba(255, 255, 255, 0); } | |
.btn.icon:before { | |
content: ""; | |
width: 20px; | |
height: 16px; | |
display: inline-block; | |
background-image: url("https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/icons.png"); | |
background-repeat: no-repeat; | |
background-size: 40px 16px; | |
} | |
#themes .btn { width: 8em; } | |
#menu .switch { | |
line-height: 2em; | |
margin-right: 1em; | |
transition: none!important; | |
} | |
#menu .switch:hover { | |
background-color: #CACACA; | |
} | |
input[type=checkbox] { | |
display:none; | |
} | |
input[type=checkbox] + label:after { | |
content: "off"; | |
float: right; | |
display: block; | |
width: 3em; | |
height: 2em; | |
background-color: #999; | |
line-height: 2em; | |
text-align: center; | |
color: #FFF; | |
transition: none!important; | |
} | |
input[type=checkbox]:checked + label:after { | |
content: "on"; | |
background-color: #333; | |
color: #FFF; | |
} | |
input[type=checkbox]:hover + label:after { | |
color: #FFF; | |
background-color: #666; | |
} | |
#themes-box { | |
width: 19em; | |
height: 3.5em; | |
margin: 0 2.6em; | |
} | |
.set-theme { | |
float: left; | |
width: 3.375em; | |
height: 3.375em; | |
position: relative; | |
margin: 0 .65em; | |
} | |
.set-theme:hover { cursor: pointer; background: rgba(255,255,255,.3); } | |
.set-theme:hover .cube, | |
.set-theme:active .cube { transform: rotateX(146deg) rotateY(45deg) translateY(0.1em) translateX(3em); } | |
#app[data-theme="classic"] .set-theme[data-theme="classic"], | |
#app[data-theme="marble"] .set-theme[data-theme="marble"], | |
#app[data-theme="flat"] .set-theme[data-theme="flat"], | |
#app[data-theme="wireframe"] .set-theme[data-theme="wireframe"] { | |
background: rgba(255,255,255,1); | |
} | |
.cube, | |
.cube:before, | |
.cube:after { | |
content: ""; | |
width: 2em; | |
height: 2em; | |
background-color: #A0A0A0; | |
background-size: 235%; | |
transition: transform .1s ease-in-out!important; | |
box-sizing: border-box; | |
} | |
.cube { | |
position: relative; | |
margin-left: -2.15em; | |
box-shadow: inset 0 0 0 3em rgba(0,0,0,.2); | |
transform: rotateX(156deg) rotateY(45deg) translateY(-.15em) translateX(3em); | |
transform-style: preserve-3d; | |
} | |
.cube:before { | |
position: absolute; | |
left: 0; | |
top: 2em; | |
transform: rotateX(90deg); | |
transform-origin: 0 0; | |
} | |
.cube:after { | |
position: absolute; | |
left: 0; | |
bottom: 0; | |
box-shadow: inset 0 0 0 3em rgba(0,0,0,.5); | |
transform: rotateY(90deg); | |
transform-origin: 100% 0; | |
} | |
#overlay { | |
z-index: 2; | |
position: absolute; | |
left: 0; | |
top: 0; | |
width: 100%; | |
height: 100%; | |
background-color: black; | |
opacity: 0; | |
transition: opacity 1.5s ease-in-out!important; | |
transform: translateZ(9999px); | |
} | |
.loading #overlay { | |
opacity: 1; | |
background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/ajax-loader.gif); | |
background-position: 50% 60%; | |
background-repeat: no-repeat; | |
} | |
#app[data-menu="about"] #overlay { | |
z-index: 99; | |
opacity: .75; | |
} | |
#app[data-state="game"] #overlay { | |
width: 0%; | |
height: 0%; | |
} | |
#about p { line-height: 1.5em; } | |
/* ---------------------------------------------------------------------------------------------------- borders textures */ | |
thead th:first-child { background-position: left top; background-size: 332% auto; } | |
thead th { background-position: center top; background-size: 250% auto; } | |
thead th:last-child { background-position: right top; background-size: 332% auto; } | |
tbody th:first-child { background-position: left center; background-size: auto 250%; } | |
tbody th:last-child { background-position: right center; background-size: auto 250%; } | |
tfoot th:first-child { background-position: left bottom; background-size: 332% auto; } | |
tfoot th { background-position: center bottom; background-size: 250% auto; } | |
tfoot th:last-child { background-position: right bottom; background-size: 332% auto; } | |
.square, .sphere, #board:after, #frame:after, #frame:before { background-size: 100% 100%; } | |
/* ---------------------------------------------------------------------------------------------------- classic */ | |
#app[data-theme="classic"] { background-color: #E5E3DF; color: #303132; } | |
#app[data-theme="classic"] a { color: #404040; } | |
#app[data-theme="classic"] #overlay { background-color: #E5E3DF; } | |
#app[data-theme="classic"] #scene { background: radial-gradient(center, ellipse cover, #FFF 25%, #E5E3DF 72%); } | |
#app[data-theme="classic"][data-frame="off"] #frame, | |
#app[data-theme="classic"][data-frame="off"] #board:after, | |
#app[data-theme="classic"][data-frame="off"] #frame:after, | |
#app[data-theme="classic"][data-frame="off"] #frame:before { background-color: #A28157; } | |
#app[data-theme="classic"][data-frame="on"] #frame, | |
#app[data-theme="classic"][data-frame="on"] #board:after, | |
#app[data-theme="classic"][data-frame="on"] #frame:after, | |
#app[data-theme="classic"][data-frame="on"] #frame:before { background-color: #303132; } | |
#app[data-theme="classic"] .square { background-color: #212121; } | |
#app[data-theme="classic"] tbody tr:nth-child(odd) | |
.square:nth-child(even), | |
#app[data-theme="classic"] tbody tr:nth-child(even) | |
.square:nth-child(odd) { background-color: #CF9269; } | |
#app[data-theme="classic"] .black .poly > div, | |
#app[data-theme="classic"] .black .poly .sphere { background-color: #303030; } | |
#app[data-theme="classic"] .white .poly > div, | |
#app[data-theme="classic"] .white .poly .sphere { background-color: #C19666; } | |
#app[data-theme="classic"] .white.bishop .rectangle.a .tp:before, | |
#app[data-theme="classic"] .white.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid #F2BD7D; } | |
#app[data-theme="classic"] .white.bishop .rectangle.a .tp:after, | |
#app[data-theme="classic"] .white.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid #F2BD7D; } | |
#app[data-theme="classic"] .black.bishop .rectangle.a .tp:before, | |
#app[data-theme="classic"] .black.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid #434343; } | |
#app[data-theme="classic"] .black.bishop .rectangle.a .tp:after, | |
#app[data-theme="classic"] .black.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid #434343; } | |
/* ---------------------------------------------------------------------------------------------------- classic textures */ | |
#app[data-theme="classic"] th { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-frame.png); } | |
#app[data-theme="classic"][data-frame="off"] #board:after, | |
#app[data-theme="classic"][data-frame="off"] #frame:after, | |
#app[data-theme="classic"][data-frame="off"] #frame:before | |
{ background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-frame-border-off.png); } | |
#app[data-theme="classic"][data-frame="on"] #board:after, | |
#app[data-theme="classic"][data-frame="on"] #frame:after, | |
#app[data-theme="classic"][data-frame="on"] #frame:before | |
{ background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-frame-border.png); } | |
#app[data-theme="classic"] .square { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-square-black.png) } | |
#app[data-theme="classic"] .white .poly > div, | |
.set-theme[data-theme="classic"] .cube, | |
.set-theme[data-theme="classic"] .cube:before, | |
.set-theme[data-theme="classic"] .cube:after { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-piece-white.png); } | |
#app[data-theme="classic"] .black .poly > div { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-piece-black.png); } | |
#app[data-theme="classic"] .white .poly .sphere { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-sphere-white.png); } | |
#app[data-theme="classic"] .black .poly .sphere { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-sphere-black.png); } | |
#app[data-theme="classic"] tbody tr:nth-child(odd) | |
.square:nth-child(even), | |
#app[data-theme="classic"] tbody tr:nth-child(even) | |
.square:nth-child(odd) { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/classic-square-white.png); } | |
/* ---------------------------------------------------------------------------------------------------- marble */ | |
#app[data-theme="marble"] th { background-color: #303030; } | |
#app[data-theme="marble"][data-frame="off"] #frame, | |
#app[data-theme="marble"][data-frame="off"] #board:after, | |
#app[data-theme="marble"][data-frame="off"] #frame:after, | |
#app[data-theme="marble"][data-frame="off"] #frame:before { background-color: #B0B0B0; } | |
#app[data-theme="marble"][data-frame="on"] #frame, | |
#app[data-theme="marble"][data-frame="on"] #board:after, | |
#app[data-theme="marble"][data-frame="on"] #frame:after, | |
#app[data-theme="marble"][data-frame="on"] #frame:before { background-color: #202020; } | |
#app[data-theme="marble"] .square { background-color: #404040; } | |
#app[data-theme="marble"] tbody tr:nth-child(odd) | |
.square:nth-child(even), | |
#app[data-theme="marble"] tbody tr:nth-child(even) | |
.square:nth-child(odd) { background-color: #FFF; } | |
#app[data-theme="marble"] .black .poly > div, | |
#app[data-theme="marble"] .black .poly .sphere { background-color: #404040; } | |
#app[data-theme="marble"] .white .poly > div, | |
#app[data-theme="marble"] .white .poly .sphere { background-color: #FFF; } | |
#app[data-theme="marble"] .white.bishop .rectangle.a .tp:before, | |
#app[data-theme="marble"] .white.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid #EAE5E0; } | |
#app[data-theme="marble"] .white.bishop .rectangle.a .tp:after, | |
#app[data-theme="marble"] .white.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid #EAE5E0; } | |
#app[data-theme="marble"] .black.bishop .rectangle.a .tp:before, | |
#app[data-theme="marble"] .black.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid #565453; } | |
#app[data-theme="marble"] .black.bishop .rectangle.a .tp:after, | |
#app[data-theme="marble"] .black.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid #565453; } | |
/* ---------------------------------------------------------------------------------------------------- marble textures */ | |
#app[data-theme="marble"] #scene { background: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/back.jpg) no-repeat center center black; background-size: cover;} | |
#app[data-theme="marble"] th { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-frame.png); } | |
#app[data-theme="marble"][data-frame="off"] #board:after, | |
#app[data-theme="marble"][data-frame="off"] #frame:after, | |
#app[data-theme="marble"][data-frame="off"] #frame:before | |
{ background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-frame-border-off.png); } | |
#app[data-theme="marble"][data-frame="on"] #board:after, | |
#app[data-theme="marble"][data-frame="on"] #frame:after, | |
#app[data-theme="marble"][data-frame="on"] #frame:before | |
{ background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-frame-border.png); } | |
#app[data-theme="marble"] .square { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-square-black.png) } | |
#app[data-theme="marble"] .white .poly > div, | |
.set-theme[data-theme="marble"] .cube, | |
.set-theme[data-theme="marble"] .cube:before, | |
.set-theme[data-theme="marble"] .cube:after { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-piece-white.png); } | |
#app[data-theme="marble"] .black .poly > div { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-piece-black.png); } | |
#app[data-theme="marble"] .white .poly .sphere { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-sphere-white.png); } | |
#app[data-theme="marble"] .black .poly .sphere { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-sphere-black.png); } | |
#app[data-theme="marble"] tbody tr:nth-child(odd) | |
.square:nth-child(even), | |
#app[data-theme="marble"] tbody tr:nth-child(even) | |
.square:nth-child(odd) { background-image: url(https://raw.github.com/juliangarnier/3D-Hartwig-chess-set/master/img/marble-square-white.png); } | |
/* ---------------------------------------------------------------------------------------------------- flat */ | |
#app[data-theme="flat"] { background-color: #E5E3DF; color: #303132; } | |
#app[data-theme="flat"] a { color: #404040; } | |
#app[data-theme="flat"] #overlay { background-color: #E5E3DF; } | |
#app[data-theme="flat"] #scene { background: radial-gradient(center, ellipse cover, #FFF 25%, #E5E3DF 72%); } | |
#app[data-theme="flat"] #frame, | |
#app[data-theme="flat"] #board:after, | |
#app[data-theme="flat"] #frame:after, | |
#app[data-theme="flat"] #frame:before { background-color: #B7B7B4; } | |
#app[data-theme="flat"] .square { background-color: #C6C5C3; } | |
#app[data-theme="flat"] tbody tr:nth-child(odd) .square:nth-child(even), | |
#app[data-theme="flat"] tbody tr:nth-child(even) .square:nth-child(odd) { background-color: #E0DFDD; } | |
#app[data-theme="flat"] table span { color: #525150; } | |
#app[data-theme="flat"] th { background-color: #E0DFDD; } | |
#app[data-theme="flat"] .white .poly > div, | |
.set-theme[data-theme="flat"] .cube, | |
.set-theme[data-theme="flat"] .cube:before, | |
.set-theme[data-theme="flat"] .cube:after { background-color: #00A2FF; } | |
#app[data-theme="flat"] .black .poly > div { background-color: #FF432F; } | |
#app[data-theme="flat"] .white .poly .sphere { background: -webkit-radial-gradient(center, ellipse cover, rgba(0,162,255,1) 30%,rgba(0,89,141,1) 100%) 0em -1em; } | |
#app[data-theme="flat"] .black .poly .sphere { background: -webkit-radial-gradient(center, ellipse cover, rgba(255,67,47,1) 30%,rgba(141,36,25,1) 100%) 0em -1em; } | |
#app[data-theme="flat"] .white.bishop .rectangle.a .tp:before, | |
#app[data-theme="flat"] .white.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid #00A2FF; } | |
#app[data-theme="flat"] .white.bishop .rectangle.a .tp:after, | |
#app[data-theme="flat"] .white.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid #00A2FF; } | |
#app[data-theme="flat"] .black.bishop .rectangle.a .tp:before, | |
#app[data-theme="flat"] .black.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid #FF432F; } | |
#app[data-theme="flat"] .black.bishop .rectangle.a .tp:after, | |
#app[data-theme="flat"] .black.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid #FF432F; } | |
/* ---------------------------------------------------------------------------------------------------- wireframe */ | |
#app[data-theme="wireframe"] #scene { background: radial-gradient(center, ellipse cover, #1D414D 0%,#000000 70%); } | |
#app[data-theme="wireframe"] th { background-color: rgba(17,41,48,.6) } | |
#app[data-theme="wireframe"] #frame { background-color: #001B20; } | |
#app[data-theme="wireframe"] #board:after, | |
#app[data-theme="wireframe"] #frame:after, | |
#app[data-theme="wireframe"] #frame:before { background-color: #011E24; border: 1px solid #007385; opacity: .4 } | |
#app[data-theme="wireframe"] .square { background-color: rgba(17,41,48,.0); } | |
#app[data-theme="wireframe"] tbody tr:nth-child(odd) .square:nth-child(even), | |
#app[data-theme="wireframe"] tbody tr:nth-child(even) .square:nth-child(odd) { background-color: rgba(17,41,48,.6); } | |
#app[data-theme="wireframe"] .white .poly > div { background-color: #022A36; border: 1px solid #35C2D3; | |
box-shadow: inset 0 0 4em -1em #35C2D3; opacity: .5; } | |
.set-theme[data-theme="wireframe"] .cube, | |
.set-theme[data-theme="wireframe"] .cube:before, | |
.set-theme[data-theme="wireframe"] .cube:after { background-color: #022A36; border: 0px solid #35C2D3; | |
box-shadow: inset 0 0 .5em .2em #35C2D3; opacity: .8; } | |
#app[data-theme="wireframe"] .black .poly > div { background-color: #022A36; border: 1px solid #FFDD1D; | |
box-shadow: inset 0 0 4em -1em #FFDD1D; opacity: .5; } | |
#app[data-theme="wireframe"] .white .poly .lt, | |
#app[data-theme="wireframe"] .white .poly .rt { border-right: 3px solid #35C2D3; } | |
#app[data-theme="wireframe"] .white .poly .bk, | |
#app[data-theme="wireframe"] .white .poly .ft { border-top: 3px solid #35C2D3; } | |
#app[data-theme="wireframe"] .black .poly .lt, | |
#app[data-theme="wireframe"] .black .poly .rt { border-right: 3px solid #FFDD1D; } | |
#app[data-theme="wireframe"] .black .poly .bk, | |
#app[data-theme="wireframe"] .black .poly .ft { border-top: 3px solid #FFDD1D; } | |
#app[data-theme="wireframe"] .black .poly .sphere { background-color: #1D414B; } | |
#app[data-theme="wireframe"] .white .poly .sphere { background-color: #1D414B; } | |
#app[data-theme="wireframe"] .white.bishop .rectangle.a .tp:before, | |
#app[data-theme="wireframe"] .white.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid rgba(53,194,211,.4); top: -1em; left: -.18em;} | |
#app[data-theme="wireframe"] .white.bishop .rectangle.a .tp:after, | |
#app[data-theme="wireframe"] .white.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid rgba(53,194,211,.4); bottom: -1em; right: -.18em;} | |
#app[data-theme="wireframe"] .black.bishop .rectangle.a .tp:before, | |
#app[data-theme="wireframe"] .black.bishop .rectangle.b .tp:before { border-bottom: 1.1em solid rgba(255,221,29,.4); top: -1em; left: -.18em;} | |
#app[data-theme="wireframe"] .black.bishop .rectangle.a .tp:after, | |
#app[data-theme="wireframe"] .black.bishop .rectangle.b.prim .tp:after { border-top: 1.1em solid rgba(255,221,29,.4); bottom: -1em; right: -.18em;} | |
/* ------------------------------------------------------- Responsive board */ | |
@media screen and (min-width: 48em), screen and (min-height: 48em) { | |
#app[data-frame="off"] { font-size: 80px; } | |
#app[data-frame="on"] { font-size: 70px; } | |
} | |
@media screen and (max-width: 48em), screen and (max-height: 48em) { | |
#app[data-frame="off"] { font-size: 70px; } | |
#app[data-frame="on"] { font-size: 60px; } | |
#top-bar { margin-top: -.75em; } | |
} | |
@media screen and (max-width: 42em), screen and (max-height: 42em) { | |
#app[data-frame="off"] { font-size: 60px; } | |
#app[data-frame="on"] { font-size: 50px; } | |
#container { top: 55%; } | |
} | |
@media screen and (max-width: 34em), screen and (max-height: 34em) { | |
#app[data-frame="off"] { font-size: 50px; } | |
#app[data-frame="on"] { font-size: 40px; } | |
} | |
@media screen and (max-width: 26em), screen and (max-height: 26em) { | |
#app[data-frame="off"] { font-size: 40px; } | |
#app[data-frame="on"] { font-size: 30px; } | |
} | |
@media screen and (max-width: 20em), screen and (max-height: 20em) { | |
#app[data-frame="off"] { font-size: 35px; } | |
} | |
@media screen and (max-height: 36em) { | |
#logoimg { margin: 1em 0 1em 0; } | |
} | |
@media screen and (max-height: 32em) { | |
#app[data-state="menu"] #overlay { | |
z-index: 99; | |
opacity: .85; | |
} | |
#about h1 { font-size: 1em; } | |
#about h2 { font-size: .85em; } | |
#about p { font-size: .75em; } | |
} | |
@media screen and (max-width: 24em), screen and (max-height : 24em) { | |
h1 { font-size: 1.5em; } | |
h2 { font-size: 1em; } | |
#logoimg { margin: 2em 0 1em 0; } | |
#logo { font-size: 12px } | |
.loading #overlay { background-position: 50% 80%; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment