Подтвердить что ты не робот

В чем разница между перспективой и преобразованием перспективных свойств в CSS?

В нашем приложении мы используем временное преобразование css как переход на страницу.

С последней версией google chrome (37) это перестало работать. Трансформация уже не имеет перспективы.

С помощью инструментов разработчика я смог восстановить правильное поведение, изменив определение перспективы на родительский элемент из

perspective: 2000px;

к

transform: perspective(2000px);

Мой вопрос: что-то не так с нашей существующей декларацией (с использованием свойства perspectice), или это ошибка в google chrome?

Я попытался воссоздать проблему ниже, но в приведенном примере я вижу обратный эффект, что теперь перспектива работает и преобразуется: перспектива не.

Любые мысли?

.perspective-Parent {
    /*-moz-transform: perspective(2000px);
    -ms-transform: perspective(2000px);
    -o-transform: perspective(2000px);
    -webkit-transform: perspective(2000px);
    transform: perspective(2000px);*/
  
    -moz-perspective: 2000px;
    -ms-perspective: 2000px;
    -webkit-perspective: 2000px;
    perspective: 2000px; 
  
    -moz-perspective-origin: 50% 50%;
    -ms-perspective-origin: 50% 50%;
    -webkit-perspective-origin: 50% 50%;
    perspective-origin: 50% 50%; 
 }

.page {
  	background-color: red;
    
  	-moz-transform-origin: right center;
  	-ms-transform-origin: right center;
  	-o-transform-origin: right center;
	-webkit-transform-origin: right center;
  	transform-origin: right center;
  	
  	-ms-transform: rotateY(75deg);
  	-moz-transform: rotateY(75deg);
  	-o-transform: rotateY(75deg);
  	-webkit-transform: rotateY(75deg);
    transform: rotateY(75deg);
  
    width: 200px;
    height: 100px;
}
<p>
<div class="perspective-Parent">
  <div class="page">
  </div>
</div>
4b9b3361

Ответ 1

Мое основное понимание перспективы перспективы и перспективы просто заключается в том, что атрибут простой перспективы - это то, что вы обычно используете в родительском элементе, чтобы предоставить нескольким дочерним пользователям одну и ту же перспективу, тогда как перспектива преобразования будет использоваться для дочернего элемента или отдельного элемента для дать ему свою собственную перспективу.

Это наиболее легко увидеть, когда вы применяете эти эффекты к нескольким элементам:

perspective: ; в родительском элементе:

.perspective-Parent {
  -moz-perspective: 2000px;
  -ms-perspective: 2000px;
  -webkit-perspective: 2000px;
  perspective: 2000px;
  -moz-perspective-origin: 50% 50%;
  -ms-perspective-origin: 50% 50%;
  -webkit-perspective-origin: 50% 50%;
  perspective-origin: 50% 50%;
}
.page {
  background-color: red;
  -moz-transform-origin: right center;
  -ms-transform-origin: right center;
  -o-transform-origin: right center;
  -webkit-transform-origin: right center;
  transform-origin: right center;
  -ms-transform: rotateY(75deg);
  -moz-transform: rotateY(75deg);
  -o-transform: rotateY(75deg);
  -webkit-transform: rotateY(75deg);
  transform: rotateY(75deg);
  width: 200px;
  height: 100px;
  margin: 10px; /* added to make difference more visible */ 
}
<div class="perspective-Parent">
  <div class="page"></div>
  <div class="page"></div>
  <div class="page"></div>
</div>

Ответ 2

Принятый ответ здесь неверен.

Вы действительно можете преобразовать перспективу в родительский элемент. Для этого вам нужно установить transform-style: preserve-3d; на родительском.

.perspective-Parent{
  transform: perspective(2000px);
  transform-style: preserve-3d;
}

.page {
  background-color: red;
  transform-origin: right center;
  transform: rotateY(75deg);
  width: 200px;
  height: 100px;
  margin: 10px;
}
<div class="perspective-Parent">
<div class="page">
</div>
<div class="page">
</div><div class="page">
</div>
</div>

Ответ 3

Чтобы активировать 3D-пространство, элемент нуждается в перспективе. Это можно применить двумя способами: с использованием свойства transform, с перспективой в качестве функциональной нотации.

transform: perspective( 600px );

или используя свойство перспективы:

perspective: 600px;

Перспективная проекция против Перспективной трансформации

Перспективная проекция вычисляет перспективный вид (т.е. ракурс) трехмерного объекта на двумерную плоскость проекции. Эффект обзора в перспективе, и, конечно, значения z (информация о глубине) отбрасываются в процессе.

Перспективная трансформация позволяет нам увидеть, как наперед обозреваемые и проецируемые полигоны будут перекрываться, не отбрасывая z-значения (которые мы должны использовать позже для сравнения глубины).

Ответ 4

Порядок имеет значение при объявлении свойства и функции, функция "перспективы" должна появляться сразу после свойства "transform"!

НЕПРАВИЛЬНЫЙ КОД

transform:rotateX(45deg) perspective(100px);

CORRECT CODE

transform:perspective(100px) rotate(45deg);