-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscaler.v1.php
98 lines (76 loc) · 2.5 KB
/
scaler.v1.php
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
94
95
96
97
98
<?php
/*!
scaler.v1.php v^1.0 | MIT License | https://github.com/zenril/scaler
Copyright (c) Aaron Meredith
*/
$scaledata = array(
'prefix' => 'scale-',
'queries' => array(
array(
'min-width' => null,
'prefix' => 'xs-',
'increments' => 5,
'min' => 5,
'max' => 200
),
array(
'min-width' => 768,
'prefix' => 'sm-',
'increments' => 5,
'min' => 5,
'max' => 200
),
array(
'min-width' => 992,
'prefix' => 'md-',
'increments' => 5,
'min' => 5,
'max' => 200
),
array(
'min-width' => 1200,
'prefix' => 'lg-',
'increments' => 5,
'min' => 5,
'max' => 200
)
)
);
$newlines = true;
$endOfLine = $newlines ? PHP_EOL : " ";
$innerDiv = "";
$outerDiv = "";
$output = "";
$fallBack = "";
$fallBackMap = array();
foreach ($scaledata['queries'] as $key => $data) {
if($data['min-width']){
$output .= $endOfLine."@media (min-width: ".$data['min-width']."px) {".$endOfLine;
}
for ($i=$data['min']; $i <= $data['max']; $i = $i + $data['increments']) {
$class = "div.".$scaledata['prefix'].$data['prefix'].$i;
$css = "{padding-bottom:".$i."%;}";
if(!isset($fallBackMap[$i] )) $fallBackMap[$i] = array( "classes" => array(), "css" => $css);
$fallBackMap[$i]["classes"][] = $class;
$outerDiv .= $class.", ";
$innerDiv .= $class." > div, ";
// if($data['min-width']){
$output .= $class . $css . $endOfLine;
//}
}
if($data['min-width']){
$output .= $endOfLine."}".$endOfLine;
}
}
foreach ($fallBackMap as $key => $data) {
$fallBack .= implode(",",$data['classes']).$data['css'].$endOfLine;
}
$output = "
/*!
scaler.v1.css v^1.0 | MIT License | https://github.com/zenril/scaler
Copyright (c) Aaron Meredith
*/
$outerDiv div.scale{width: 100%;position: relative;}
$innerDiv div.scale > div{ position: absolute; top: 0; bottom: 0; left: 0; right: 0; text-align: center;}"
.$endOfLine.$fallBack.$output;
file_put_contents('scaler.v1.css', $output);