Мне интересно, есть ли возможность построить 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>
Источник
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Я экспериментировал с CSS, пытаясь создать 3d box, в котором можно выбрать передний план фигуры с помощью javascriptОн просто меняет имя класса box divs и использует...
Как поменять тему в Sublime Text 3 ? А то уже глаза кровью наливаются от розового текста HTML-документа :(