Использование PHP переменной в CSS

Иногда просто CSS файла мало, когда нужно создать динамичность изменения стиля. Конечно можно и тупо прописать стиль в HTML, но это не валидно.

Как оказалось стандартного решения нет, пришлось использовать извращенный способ…

Вот нашел на просторах интернета такое решение.


-- index.html

-- stylesheet.php

-- default.css

index.html


<span style="line-height: 1.5;"><link rel="stylesheet" type="text/css" href="stylesheet.php"></span>

Тут мы будем наблюдать текст, оформленный с помощью CSS

<span style="line-height: 1.5;">

stylesheet.php


<?

function tStyle($data){

/* Получаем таблицу стилей */
$stylesheet = @is_file($_GET['stylesheet']) && strtolower(substr(strrchr($file_name,'.'),1)) == 'css' ? $_GET['stylesheet'] : 'default.css';

/* Настраиваем заголовок */
// Выводим будет как css
header('Content-type: text/css');

// Дата истечения
$days_to_cache = 10;
header('Expires: '.gmdate('D, d M Y H:i:s',time() + (60 * 60 * 24 * $days_to_cache)).' GMT');

/* Извлекаем информацию из массива */
extract($_GET['theme'] && ${$_GET['theme']} ? ${$_GET['theme']} : $data);

/* Загружаем в таблицу стилей */
$content = preg_replace('/\$([\w]+)/e','$0',@file_get_contents($stylesheet));

/* Вывод результата */
return $content;
}

$data = array(
'block_1' => '
color:#f00;
font-size:20px;
'
);

echo tStyle($data);
?>

default.css


* { margin:0; padding:0; }
body { $block_1 }

Собственно фрагмент кода


$data = array(
'block_1' => '
color:#f00;
font-size:20px;
'
);

echo tStyle($data);

и есть вывод стилей…

Вот как оказалось все просто, хоть и таким способом…

 


   2 Comments


  1. Олег
      10.12.2016

    Пример хороший в качестве костыля, но помни, если твой CSS требует такого подхода, ты делаешь что-то не так.

    • admin
        12.12.2016

      Да, если возможно обойтись без такого подхода, лучше так и сделать!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *