2015-01-29 1 views
3

Я пытаюсь построить простую игру с 3D CSS, структура которого напоминает Stratego, или любая другая игра с вертикальными картами, которые получают опрокинулся:Составные перспективы с CSS 3d преобразований

enter image description here

Установка перспективы доска легко:

<div id="table"> 
    <div id="board"></div> 
</div> 

С помощью CSS:

#table { 
    perspective: 1000px; 
    perspective-origin: 50% 50px; 
    margin: 0 auto; 
    width: 500px; 
    height: 500px; 
} 

#board { 
    transform: rotateX(50deg); 
    background-color: pink; 
    width: 500px; 
    padding: 10px; 
} 

достаточно просто:

enter image description here

Затем я добавил кучу дивы, представляющих фрагменты, используя this handy tutorial в качестве руководства. Если вы нажмете один из разделов, он перевернется.

Но сине-серые разделители застревают к плоскости первоначального вращения. Верх не увеличивается, когда происходит переворот. Если я дам им какой-либо вращения по умолчанию, они не появляются, чтобы выйти из самолета и сидеть в вертикальном положении:

enter image description here

Вот live example.

Я новичок в CSS 3D-преобразованиях, и я подозреваю, что это просто. Я думаю, что, по сути, это каскадные вращения. Большое спасибо.

ответ

3

Fiddle/

Поэтому в основном то, что вам нужно было в перспективе в перспективе.
Это можно сделать, но это не дает реалистичного взгляда. Что я сделал в скрипке выше:
Установить дочерние элементы, чтобы быть братьями и сестрами вместо

<div class="board"></div> 
<div class="card"> 
    <figure class="front"></figure> 
    <figure class="back"></figure> 
</div> 

Это вы можете себе вашу точку зрения, к обеим из них в отдельности.
Чтобы избежать установки двойной перспективы, вы можете просто добавить родительский div и установить перспективу там, поскольку она будет поддерживать перспективу в дочерних элементах.

+0

Блестящий! С некоторыми мастерами я сделал его более естественным: http://jsfiddle.net/v6pemrt4/2/ –

+0

Я не совсем понимаю перевод, но –

+0

Когда я пытаюсь использовать z-значения, я думаю, ** мяч на струне **. Если вы вращаете мяч без струны, он будет вращаться только на своей оси. Прикрепите строку, и внезапно шар будет вращаться вокруг конца строки не на своей собственной оси. Это в основном то, что делает translateZ (-100px). – Persijn

0

Попробуйте это:

.card-container .card.flipped { 
    transform: rotateX(180deg); 
    transform-origin:top 
} 

Я предлагаю также попробовать установить границу на карту, как это могли бы сделать лучше.

+0

Не повезло, к сожалению. Но независимо от того, что решение также должно стоить вначале, когда карта «вертикальна». Карточка должна выходить из экрана, так сказать. –