Style.php
2.34 KB
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
namespace Nextend\Framework\Style;
use Nextend\Framework\Parser\Color;
class Style {
/**
* @param string $tab
*
* @return string
*/
public function style($tab) {
$style = '';
$extra = '';
if (isset($tab['extra'])) {
$extra = $tab['extra'];
unset($tab['extra']);
}
foreach ($tab as $k => $v) {
$style .= $this->parse($k, $v);
}
$style .= $this->parse('extra', $extra);
return $style;
}
/**
* @param $property
* @param $value
*
* @return mixed
*/
public function parse($property, $value) {
$fn = 'parse' . $property;
return $this->$fn($value);
}
public function parseBackgroundColor($v) {
$hex = Color::hex82hex($v);
if ($hex[1] == 'ff') {
return 'background: #' . $hex[0] . ';';
}
$rgba = Color::hex2rgba($v);
return 'background: RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
}
public function parseOpacity($v) {
return 'opacity:' . (intval($v) / 100) . ';';
}
public function parsePadding($v) {
$padding = explode('|*|', $v);
$unit = array_pop($padding);
$padding[] = '';
return 'padding:' . implode($unit . ' ', $padding) . ';';
}
public function parseBoxShadow($v) {
$boxShadow = explode('|*|', $v);
if ($boxShadow[0] == '0' && $boxShadow[1] == '0' && $boxShadow[2] == '0' && $boxShadow[3] == '0') {
return 'box-shadow: none;';
} else {
$rgba = Color::hex2rgba($boxShadow[4]);
return 'box-shadow: ' . $boxShadow[0] . 'px ' . $boxShadow[1] . 'px ' . $boxShadow[2] . 'px ' . $boxShadow[3] . 'px RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
}
}
public function parseBorder($v) {
$border = explode('|*|', $v);
$rgba = Color::hex2rgba($border[2]);
return 'border: ' . $border[0] . 'px ' . $border[1] . ' RGBA(' . $rgba[0] . ',' . $rgba[1] . ',' . $rgba[2] . ',' . round($rgba[3] / 127, 2) . ');';
}
public function parseBorderRadius($v) {
return 'border-radius:' . $v . 'px;';
}
public function parseExtra($v) {
return $v;
}
}