JSFiddle - React, Tailwind, and code Playground
by rich_harris
HTML
<script src="http://cdn.ractivejs.org/edge/ractive.js"></script>
CSS
#town-hall-content div.building {
height: 200px;
text-align: left;
position: relative;
clear: both;
font-size: 12px;
padding: 5px 0 0 0;
margin: 0;
color: #66400f;
}
#town-hall-content .hr {
background: transparent url(http://static.tribul.net/game_images/layout/hr.png) no-repeat center center;
height: 1px;
padding: 0;
position: absolute;
left: 0;
bottom: 0px;
width: 100%;
}
#town-hall-content div.building .image-container {
padding: 0;
position: absolute;
top: 20px;
left: 0px;
width: 150px;
}
#town-hall-content div.building .image-container>.cover {
position: absolute;
left: 0;
top: 0;
background: transparent url(http://static.tribul.net/game_images/layout/building-mask.png) no-repeat 0 0;
width: 150px;
height: 150px;
z-index: 4;
box-shadow: 0px 0px 1px rgba(0, 0, 0, 0.6);
}
#town-hall-content div.building .image-container>.blocking-text {
position: absolute;
left: 0;
top: 0;
width: 150px;
height: 150px;
z-index: 3;
}
#town-hall-content div.building .image-container>.blocking-text>.message {
padding: 0 10px;
position: relative;
display: table-cell;
text-align: center;
width: 150px;
height: 150px;
vertical-align: middle;
z-index: 2;
line-height: 16px;
color: #37302a;
font-size: 11px;
}
#town-hall-content div.building .image-container>.blocking-text>.undercover {
position: absolute;
background: rgba(255, 223, 171, 0.7);
left: 0;
top: 0;
width: 150px;
height: 150px;
z-index: 1;
}
#town-hall-content div.building .image-container>.undercover {
position: absolute;
left: 0;
top: 0;
background: transparent url(http://static.tribul.net/game_images/layout/grass.jpg) repeat;
width: 150px;
height: 150px;
z-index: 1;
}
#town-hall-content div.building .image-container>.thumbnail {
position: absolute;
left: 0;
top: 0;
padding:...
JavaScript
var templates = {
building_1: "<div id=\"town-hall-content\">\n {{#config.buildings:building}}\n <div class=\"building\" id=\"building-item-{{building}}\">\n <div class=\"image-container\">\n <div class=\"thumbnail\" style=\"background: transparent url({{staticUrl}}\/game_images\/town\/buildings\/{{building}}\/{{building}}-1-thumbnail.png) no-repeat center center;\"><\/div>\n <div class=\"cover\"><\/div>\n <div class=\"undercover\"><\/div>\n \n <div class=\"level\">{{alreadyQueued(building,0)}}<\/div>\n <\/div>\n <div class=\"big_title\">{{lang('buildings',building)}} {{buildingMaxed(building) ? lang('general','maxed_out') : ''}} {{alreadyQueued(building,0) ? '' : lang('general','not_built')}}<\/div>\n <p class=\"{{buildingMaxed(building) ? 'maxed' : ''}}\">{{lang('buildings',building+'_description')}}<\/p>\n <div on-click=\"upgradeBuilding:{{building}}\" class=\"upgrade-button {{(buildingMaxed(building) || !enoughResources(building) || !slotsAvailable(player.premium) || neededBuildings(building,true)) ? 'disabled' : ''}}\"><\/div>\n <div on-click=\"downgradeBuilding:{{building}}\" class=\"downgrade-button disabled\"><\/div>\n {{^ buildingMaxed(building)}}\n <div class=\"resources\">\n <div class=\"resource\">\n <img class=\"thumbnail\" src=\"{{staticUrl}}\/game_images\/resources\/woodB.png\">\n <label class=\"res-count-wood\">{{config.buildings[building][alreadyQueued(building,1)].wood}}<\/label>\n <\/div>\n <div...