улучшить и упростить CSS с парсером PHP - PullRequest
0 голосов
/ 23 мая 2011

Я хочу улучшить синтаксис CSS несколькими способами, такими как:

  • определение переменных
    link-color1 = #fff
  • математические вычисления
    width:500-3-2 thisкажется глупым, но с переменными:
    width: container - inner - 3px;
  • расширение стиля
    #foo{background:#ddd;color:#eee;} #bar {@extend: #foo;color:#fff;}
  • кросс-браузерные функции
    -moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px; замена на
    border-radius:3px;

это только примеры, мои идеи, но библиотека может быть другой

Я ищу библиотеку php, которую анализирует файл, синтаксис которого похож на css, и генерирует действительный документ CSS.

Это важно, что Я не хочу вставлять php-синтаксис в мой файл css , потому что:

  • PHP выглядит сложным и уродливым
    #foo {color:<?php echo $color1; ?>;}
  • Notepad ++ совершенно запутался. Я тоже

SASS - очень хорошее решение для автономной работы , но я все еще ищу решение PHP, потому что:

  • Улучшенные файлы CSS будут доступны для других разработчиков, чтобы они могли модифицировать и протестировать его.Для более крупного сообщества php-парсер, используемый на сервере, - это более простой способ.
  • PHP также может сэкономить ресурсы с помощью простой системы ревизий, основанной на дате изменения файла и хэш-кодах.

Вот пример что я написал: php parser at /css/index.php

использование:

@color1: #1a1a1a;
@color2: #444444;

div#container {background:@color1;}
div#inner {background:@color2;}

HTML-ссылка:

<link rel="stylesheet" type="text/css" href="/css/?main.css" />

Работает только с цветами.Мне нужен парсер для перечисленных опций.

Ответы [ 6 ]

5 голосов
/ 23 мая 2011

Попробуйте SASS .Он поддерживает переменные, математические вычисления, наследование стилей и многие другие функции.Он не реализован в PHP, но генерирует статические файлы.

4 голосов
/ 27 мая 2011

Вы пробовали CSS Crush ?

1 голос
/ 25 мая 2011

Я не думаю, что это хорошая идея, особенно в производственной среде, но если вы настаиваете на этом, я бы предложил просто установить SASS и запустить его из php с помощью passthru ()

http://sass -lang.com /

http://www.php.net/manual/en/function.passthru.php

Как это

<?php
$css_path = '/';  // location of your real css files
$sass_cmd = 'sass -f';  // sass cmd
passthru($sass_cmd . $css_path . $_GET['cssfile'];
?>

вызывается через

cssparse.php?cssfile=xyz.css

Если вы хотите получить фантазию, вы можете использовать правило перезаписи, чтобы направить все ваши * .css запросы через ваш PHP-скрипт.

например:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.css$
RewriteRule   ^(.*\.css)$  cssparse.php?cssfile=$1

таким образом, когда вы запрашиваете /example.css в браузере, он переписывается как /cssparse.php?cssfile=example.css который вызывает SASS и возвращает вывод

1 голос
/ 23 мая 2011

Вы можете включить свой CSS с PHP с:

<link href="style.php" rel="stylesheet" type="text/css" />

В вашем style.php вы делаете:

header("Content-Type: text/css");

На данный момент вы можете использовать всю мощь PHP, чтобы делать то, что вы хотите:

<?php

 $rules = 'font-size:11px;padding:5px;';

?>

td { <?php echo $rules; ?> }

Addedum

Наследование:

<?php

   $parent=array( 'td' => 'color:;padding;etc;'
                  'p' => 'other rules'
                   //> other rules
               );
?>

.inheritance {
    <?php echo $parent['td']; ?>
   //> other rules here
 }
0 голосов
/ 27 мая 2011

LessPhp

Благодаря @Kru я нашел Less.js , который является очень хорошим и умным парсером CSS, но, как я уже сказал, лучшим решением будетPHP.После небольшого поиска по форумам и Google я нашел LessPhp , который является портом PHP для Less.js

Документацию можно найти здесь .

LessPhp также включен на github .

0 голосов
/ 23 мая 2011

То, что вы хотите сделать, просто не очень хорошая идея. Каждый раз, когда пользователь загружает ваш CSS-файл, он сначала должен пройти через функцию PHP, которая генерирует CSS-файл из вашей «улучшенной» версии. Он необходим только, например, для сайтов социальных сетей , на которых пользователи могут создавать собственные макеты . Затем пользовательские стили должны быть загружены из базы данных и вставлены в файл CSS с использованием PHP.

Для веб-сайта без этой функциональности после анализа CSS разницы нет. Создание файла CSS было проще и эффективнее.

Кроме того, если ваш CSS должен пройти через синтаксический анализатор PHP, невозможно изменить CSS в автономном режиме.

...