Свойство transform-style
определяет, как дочерние элементы будут отображаться в 3D-пространстве. Это свойство должно использоваться совместно с transform
.
Демо Трансформации Синтаксис /* 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:
HTML CSS JS Результат
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 : 50 px ;
width : 100 px ;
height : 100 px ;
transform-style : preserve-3d ;
transform : rotate3d ( 1 , 1 , 1 , 30 deg );
}
. face {
display : flex ;
align-items : center ;
justify-content : center ;
width : 100 % ;
height : 100 % ;
position : absolute ;
backface-visibility : inherit ;
font-size : 60 px ;
color : #fff ;
}
. front {
background : rgba ( 90 , 90 , 90 , 0.7 );
transform : translateZ ( 50 px );
}
. back {
background : rgba ( 0 , 210 , 0 , 0.7 );
transform : rotateY ( 180 deg ) translateZ ( 50 px );
}
. right {
background : rgba ( 210 , 0 , 0 , 0.7 );
transform : rotateY ( 90 deg ) translateZ ( 50 px );
}
. left {
background : rgba ( 0 , 0 , 210 , 0.7 );
transform : rotateY ( -90 deg ) translateZ ( 50 px );
}
. top {
background : rgba ( 210 , 210 , 0 , 0.7 );
transform : rotateX ( 90 deg ) translateZ ( 50 px );
}
. bottom {
background : rgba ( 210 , 0 , 210 , 0.7 );
transform : rotateX ( -90 deg ) translateZ ( 50 px );
}
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 ( 45 deg );
transform : rotateY ( 45 deg );
}
</ style >
</ head >
< body >
< p >
< img
src = "image/igels.png"
alt = "Ёжик"
class = "turn"
/>
< img
src = "image/igels.png"
alt = "Ёжик"
class = "turn"
/>
</ p >
</ body >
</ html >