Перейти к содержанию

transform-style

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

Демо

Трансформации

Синтаксис

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/* Keyword values */
transform-style: preserve-3d;
transform-style: flat;

/* Global values */
transform-style: inherit;
transform-style: initial;
transform-style: revert;
transform-style: revert-layer;
transform-style: unset;

Значения

flat

Дочерние элементы лежат в той же плоскости, что и их родитель.

preserve-3d

Дочерние элементы будут отображаться в 3D-пространстве.

Примечание

  • Chrome до версии 36, Safari, Opera, Android и iOS поддерживают свойство -webkit-transform-style.
  • Firefox до версии 16 поддерживает свойство -moz-transform-style.

Значение по-умолчанию: flat

Применяется к трансформируемым элементам

Спецификации

Поддержка браузерами

CSS Transform 2D:

Can I Use transforms2d? Data on support for the transforms2d feature across the major browsers from caniuse.com.

CSS Transform 3D:

Can I Use transforms3d? Data on support for the transforms3d feature across the major browsers from caniuse.com.

Описание и примеры

Пример 1:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<section 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>
</section>

<div class="checkbox">
    <label for="preserve"><code>preserve-3d</code></label>
    <input type="checkbox" id="preserve" checked />
</div>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#example-element {
    margin: 50px;
    width: 100px;
    height: 100px;
    transform-style: preserve-3d;
    transform: rotate3d(1, 1, 1, 30deg);
}

.face {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    position: absolute;
    backface-visibility: inherit;
    font-size: 60px;
    color: #fff;
}

.front {
    background: rgba(90, 90, 90, 0.7);
    transform: translateZ(50px);
}

.back {
    background: rgba(0, 210, 0, 0.7);
    transform: rotateY(180deg) translateZ(50px);
}

.right {
    background: rgba(210, 0, 0, 0.7);
    transform: rotateY(90deg) translateZ(50px);
}

.left {
    background: rgba(0, 0, 210, 0.7);
    transform: rotateY(-90deg) translateZ(50px);
}

.top {
    background: rgba(210, 210, 0, 0.7);
    transform: rotateX(90deg) translateZ(50px);
}

.bottom {
    background: rgba(210, 0, 210, 0.7);
    transform: rotateX(-90deg) translateZ(50px);
}
1
2
3
4
5
6
7
8
const cube = document.getElementById('example-element');
const checkbox = document.getElementById('preserve');

checkbox.addEventListener('change', () => {
    cube.style.transformStyle = checkbox.checked
        ? 'preserve-3d'
        : 'flat';
});

Пример 2:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!doctype html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>transform-style</title>
        <style>
            .turn {
                -webkit-transform-style: preserve-3d;
                transform-style: preserve-3d;
            }
            .turn:hover {
                -webkit-transform: rotateY(45deg);
                transform: rotateY(45deg);
            }
        </style>
    </head>
    <body>
        <p>
            <img
                src="image/igels.png"
                alt="Ёжик"
                class="turn"
            />
            <img
                src="image/igels.png"
                alt="Ёжик"
                class="turn"
            />
        </p>
    </body>
</html>

Комментарии