Мне интересно, есть ли возможность построить div с нерегулярными фигурами, что-то,аналогичные картам (например, Гренландия, Европа, Африка)
Я хочу создать карту, как здесь, используя CSS3 и HTML5.
То, что у вас на картинке, похоже на grid(сетку), которую вы можете получить либо со многими градиентами на div, либо с сеткой из многих div, на которые вы применяете CSS-transforms (DEMO).
Вот ключевой момент в правилах CSS, которые отвечают за трансформацию всего набора квадратов и придания ему 3D эффекта:
.grid {
transform: skewX(-45deg)
rotate(15deg)
scaleX(1.785) scaleY(.8)
translateX(-4.5em) translateY(-3em);
}
Ниже неполный код, показывающий, как реализована структура приложения:
HTML:
<div class='container'>
<div class='grid'>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<!-- and so on... -->
CSS:
div { box-sizing: border-box; }
.container {
overflow: hidden;
width: 32em;
height: 32em;
margin: 5.6em auto 0;
background: silver;
}
.grid {
transform: skewX(-45deg)
rotate(15deg)
scaleX(1.785) scaleY(.8)
translateX(-4.5em) translateY(-3em);
}
.grid-row {
width: 32em;
height: 2em;
}
.grid-cell {
float: left;
width: 2em;
height: 2em;
}
.high {
background: gainsboro;
}
.high:hover {
background: whitesmoke;
}
Полный код
div { box-sizing: border-box; }
.container {
overflow: hidden;
width: 32em;
height: 32em;
margin: 5.6em auto 0;
background: silver;
}
.grid {
transform: skewX(-45deg)
rotate(15deg)
scaleX(1.785) scaleY(.8)
translateX(7em) translateY(-4.5em);
}
.grid-row {
width: 32em;
}
.grid-cell {
float: left;
width: 2em;
height: 2em;
}
.high {
box-shadow: .2em .2em 0 dimgrey;
background: gainsboro;
cursor: pointer;
}
.high:hover {
background: whitesmoke;
}
<!-- content to be placed inside <body>…</body> -->
<div class='container'>
<div class='grid'>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
</div>
<div class='grid-row'>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
<div class='grid-row'>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
<div class='grid-cell high'></div>
</div>
</div>
Источник
Сборка персонального компьютера от Artline: умный выбор для современных пользователей