whisker_css/prop/
transform.rs1use crate::css::Css;
4use crate::data_type::Length;
5use crate::data_type_ext::Position;
6use crate::keyword::{BackfaceVisibility, TransformBox, TransformStyle};
7
8impl Css {
9 pub fn transform_origin(self, v: Position) -> Self {
12 self.push("transform-origin", v)
13 }
14
15 pub fn transform_box(self, v: TransformBox) -> Self {
18 self.push("transform-box", v)
19 }
20
21 pub fn transform_style(self, v: TransformStyle) -> Self {
24 self.push("transform-style", v)
25 }
26
27 pub fn backface_visibility(self, v: BackfaceVisibility) -> Self {
30 self.push("backface-visibility", v)
31 }
32
33 pub fn perspective(self, v: Length) -> Self {
36 self.push("perspective", v)
37 }
38
39 pub fn perspective_origin(self, v: Position) -> Self {
42 self.push("perspective-origin", v)
43 }
44}
45
46#[cfg(test)]
47mod tests {
48 use crate::data_type_ext::{Position, PositionKeyword};
49 use crate::ext::*;
50 use crate::keyword::*;
51 use crate::Css;
52
53 #[test]
54 fn transform_origin_keywords() {
55 let s = Css::new().transform_origin(Position::Keyword(PositionKeyword::Center));
56 assert_eq!(s.to_string(), "transform-origin: center;");
57 }
58
59 #[test]
60 fn transform_box_styles() {
61 let s = Css::new()
62 .transform_box(TransformBox::BorderBox)
63 .transform_style(TransformStyle::Preserve3d)
64 .backface_visibility(BackfaceVisibility::Hidden);
65 assert_eq!(
66 s.to_string(),
67 "transform-box: border-box; transform-style: preserve-3d; backface-visibility: hidden;"
68 );
69 }
70
71 #[test]
72 fn perspective_props() {
73 let s = Css::new()
74 .perspective(500.px())
75 .perspective_origin(Position::Keyword(PositionKeyword::Center));
76 assert_eq!(
77 s.to_string(),
78 "perspective: 500px; perspective-origin: center;"
79 );
80 }
81}