- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
/* Задача такова: пользователь может по своему вкусу настраивать дизайн приложения (шрифт, фон и т.д.)
* При этом,
* 1. настройки должны применяться мгновенно,
* 2. сохраняться после перезагрузки
*/
// Было сделано так:
// Клиент собирает информацию со всех крутилочек, и генерирует JSON-репрезентацию CSS в подобном формате:
css_data = [
{selector : 'body', css : {'color' : 'rgb(255, 179, 0)','background' : '#4D3339 url(../images/bg134.png) repeat scroll 0 0'}},
{selector : '#omv table', css : {'box-shadow' : 'rgba(0, 0, 0, 0.4) 0px 0px 9px 2px'}},
{selector : '.well,.info', css : {'background-color' : 'rgba(66, 31, 105, 0.46)'}}
];
// Таким нехитрым образом применяется на страницу:
$.css = function ( query, propertyObject )
{
var elements = document.querySelectorAll(query);
for (var i = 0; i < elements.length; i++)
for (var property in propertyObject){
elements[i].style[property] = propertyObject[property];
}
}
css_data.map(function(data){
$.css(data.selector, data.css)
});
// И сразу же отправляется на сервер (в БД).
// Тут начинается самый сок - генерация CSS на PHP, который будет выведен на страницу в следующий раз:
function JSON2CSS($data){
$json = json_decode($data, true);
$result = "<style type=\"text/css\">";
foreach($json as &$rule){
$result .= $rule['selector'].'{';
$props = array_keys($rule['css']);
foreach($props as $property)
$result .= $property . ':' . $rule['css'][$property] . ';';
$result .= '}';
}
$result .= "</style>";
return $result;
}