JSFiddle - React, Tailwind, and code Playground

by shtrih

HTML

<!-- Концепт ачивок в раздел арта -->
<div class="achievment-dummy">
    <div class="achievment">
        <div class="image"></div>
        <div class="title"></div>
        <div class="date">24.11.2013</div>
        <div class="description"></div>
    </div>
</div>
<!-- "долбоёб, добавляющий за других теги", "переводоблядок", "заливатор говна", "модератор года", "хомяк, срущий в комментариях" -->
<!-- Итак, виды ачивок:
® Комбо (надо совершить ряд действий, чтобы получить ачивку)
® Количественная (просто выполнить какое-то действие N раз)
® Процентная (соотношение чего-то к чему-то в процентах)
® Разовые и левельные (например, http://wiki.anidb.net/w/Achievements)
-->

CSS

.achievment-dummy {
    display: none;
}
.achievment {
    position: relative;
    float: left;
    width: 31.2%;
    box-sizing: border-box; 
    -moz-box-sizing: border-box; 
    margin: 10px 1%;
    padding: 10px;
    border: 1px solid #ccc;
    box-shadow: 0 0 0 3px #ddd;
}
.achievment .image {
    float: left;
    width: 50px;
    height: 50px;
    margin-right: 10px;
    background-repeat: no-repeat;
    background-position: center center;
    background-image: url('http://placehold.it/50');
    border: 1px solid #ddd;
    padding: 1px;
}
.achievment .date {
    position: absolute;
    top: 1px;
    right: 1px;
    font-size: 0.7em;
    color: #ddd;
}
.achievment .title {
    font-size: 1.1em;
}
.achievment .description {
    font-size: 0.9em;
}
@media screen and (max-width: 780px) {
    .achievment {
        width: 47.3%;
    }
}
@media screen and (max-width: 540px) {
    .achievment {
        width: 98%;
    }
}

JavaScript

var achievments = [
        {
            "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAACkElEQVRIS72WzXHaQBTHvTADxzgVWKkgdgWRK4hdgaGC6MLHLeTGx8FyBYYKDBVErsC4guAKgm/ADJD/X9FqnpaVhAz2zuiyu3q/9/1WnXzwUkV57XbbWa/XZ/yvXC6/dLvdWREZuUAAatvt9huEuvicFOGEBrgX9Pv9UZYCqcBms+kppX5kQNLkEu73er0724UdYKPROAfoHt95EVeZd2HtFF99MBhM5VkCGLnv3gbCz490W6lUogU6bs5ms6GbXShIt+8s7NcR56E+iIEpsFeA/NVq5WPNsyz2PO+0UqkwDB7ufUpYJaAhkJkHTZ9w+VRcnCyXy1oeyFSC4Gq1Sou+6zMoPYdnLpjRIRAJEkiX4MII2VY7JIaQOYTMGyEjQCJdKiYJ6E9Cm0fA3ENg+l/TEHjxQpmaQKsvRYs5TTmGCt76I4wZESjd+QyzDyoHE95qtVgWX7nPTFfY2IpLdwAyy462IN+HMDYQAucJIDZ+IX6do9H+J2QHYfqpZRIYm4zNCSy8OiYQ8se6RGDQC4HxBkGovc9Fay9Nwagm/4rzCZPmCiY/vEccZfyiGF7rwp8BGs44LrP/vcXFZqukO5EfjgaaVpLhpY2YPAWi0XYr78GIS9R3EDdvM5uiy0NA63kAfQ6rXFjCjHSNf+JyS4wnS/9j7VzDFUysEyaBTCj93ID2BNBLO03D7Ms7A9ji+xHGk4cJwMQyNc8ynqOtA2VZ+PGyPjFkuwu7Q3Js7ePhCeeirSdbgUhnDtvEEM2jhEWt1Bifn9X8bS5l4H/bAIwH9mf6TDw3ZvtOmAQw6gycjY4BfI1cNMyzNO9cvmlcDMhbI9MY+DEs6exrwV5AMfWfoySZAjxdLBbjY/VVrcg/cBBkna9i7QcAAAAASUVORK5CYII=",
            "title": "Комментатор",
            "description": "Написать N комментариев"
        },
        {
            "image": "",
            "title": "Заливатор",
            "description": "Добавить N картинок"
        },
        {
            "image": "",
            "title": "Пиривотчик",
            "description": "Добавить N переводов"
        },
        {
            "image": "",
            "title": "Почетный редактор",
            "description": "Отредактировать N чужих переводов"
        },    
        {
            "image": "",
            "title": "Тег-master",
            "description": "Добавить теги для чужих артов N раз"
        },
        {
            "image": "",
            "title": "Модератор года",
            "description": "Зааппрувить больше всех артов за год"
        },
        {
            "image": "",
            "title": "Заливатор говна",
            "description": "Иметь N артов c отрицательным рейтингом"
        },
 ...