Функция CSS `perspective()`
Базовая поддержка Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с марта 2022 года.
perspective() CSS функция задаёт преобразование, которое устанавливает расстояние между пользователем и плоскостью z=0 — перспективу, с которой пользователь видел бы двухмерный интерфейс, будь он трёхмерным. Результатом является тип данных <transform-function>.
Попробуйте
transform: perspective(0);
transform: perspective(none);
transform: perspective(800px);
transform: perspective(23rem);
transform: perspective(6.5cm);
<section class="default-example" id="default-example">
<div class="transition-all" id="example-element">
<div class="face front">1</div>
<div class="face back">2</div>
<div class="face right">3</div>
<div class="face left">4</div>
<div class="face top">5</div>
<div class="face bottom">6</div>
</div>
</section>
#default-example {
background: linear-gradient(skyblue, khaki);
perspective: 800px;
perspective-origin: 150% 150%;
}
#example-element {
width: 100px;
height: 100px;
perspective: 550px;
transform-style: preserve-3d;
}
.face {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
position: absolute;
backface-visibility: inherit;
font-size: 60px;
color: white;
}
.front {
background: rgb(90 90 90 / 0.7);
transform: translateZ(50px);
}
.back {
background: rgb(0 210 0 / 0.7);
transform: rotateY(180deg) translateZ(50px);
}
.right {
background: rgb(210 0 0 / 0.7);
transform: rotateY(90deg) translateZ(50px);
}
.left {
background: rgb(0 0 210 / 0.7);
transform: rotateY(-90deg) translateZ(50px);
}
.top {
background: rgb(210 210 0 / 0.7);
transform: rotateX(90deg) translateZ(50px);
}
.bottom {
background: rgb(210 0 210 / 0.7);
transform: rotateX(-90deg) translateZ(50px);
}
Функция преобразования perspective() является частью значения transform, применяемого к преобразуемому элементу. Это отличается от свойств perspective и perspective-origin, которые задаются родительскому элементу дочернего элемента, преобразуемого в трёхмерном пространстве.
Синтаксис
perspective(d)
Значения
- d
-
Представляет собой
<length>, задающую расстояние от пользователя до плоскости z=0. Плоскость z=0 — это плоскость, в которой всё отображается в двухмерном виде, то есть на экране. Значения меньше1px(включая ноль) ограничиваются значением1px. Отрицательные значения являются синтаксическими ошибками.Значения, отличные от
none, заставляют элементы с положительными координатами z выглядеть крупнее, а элементы с отрицательными координатами z — мельче. Элементы с координатами z, равными значению перспективы или превышающими его, исчезают, как если бы находились за пользователем. Большие значения перспективы соответствуют небольшому преобразованию; малые значенияperspective()— большому преобразованию;perspective(none)соответствует перспективе с бесконечного расстояния и отсутствию преобразования.
| Декартовы координаты на ℝ^2 | Однородные координаты на ℝℙ^2 | Декартовы координаты на ℝ^3 | Однородные координаты на ℝℙ^3 |
|---|---|---|---|
| Это преобразование применяется к трёхмерному пространству и не может быть представлено на плоскости. | Это преобразование не является линейным преобразованием в ℝ^3 и не может быть представлено матрицей в декартовых координатах. | ||
Формальный синтаксис
<perspective()> =
perspective( [ <length [0,∞]> | none ] )
Примеры
HTML
<p>Without perspective:</p> <div class="no-perspective-box"> <div class="face front">A</div> <div class="face top">B</div> <div class="face left">C</div> </div> <p>With perspective (9cm):</p> <div class="perspective-box-far"> <div class="face front">A</div> <div class="face top">B</div> <div class="face left">C</div> </div> <p>With perspective (4cm):</p> <div class="perspective-box-closer"> <div class="face front">A</div> <div class="face top">B</div> <div class="face left">C</div> </div>
CSS
.face {
position: absolute;
width: 100px;
height: 100px;
line-height: 100px;
font-size: 100px;
text-align: center;
}
p + div {
width: 100px;
height: 100px;
transform-style: preserve-3d;
margin-left: 100px;
}
.no-perspective-box {
transform: rotateX(-15deg) rotateY(30deg);
}
.perspective-box-far {
transform: perspective(9cm) rotateX(-15deg) rotateY(30deg);
}
.perspective-box-closer {
transform: perspective(4cm) rotateX(-15deg) rotateY(30deg);
}
.top {
background-color: skyblue;
transform: rotateX(90deg) translate3d(0, 0, 50px);
}
.left {
background-color: pink;
transform: rotateY(-90deg) translate3d(0, 0, 50px);
}
.front {
background-color: limegreen;
transform: translate3d(0, 0, 50px);
}
Результат
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
perspective |
12 |
12 |
10 |
15 |
4 |
18 |
10 |
14 |
3.2 |
1.0 |
3 |
3.2 |
none |
97 |
97 |
93 |
83 |
15.4 |
97 |
93 |
68 |
15.4 |
18.0 |
97 |
15.4 |
См. также
transform<transform-function>- Отдельные свойства преобразования:
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/transform-function/perspective