Встроенный динамический CSS возможен через PHP? - PullRequest
1 голос
/ 17 января 2012

Я стремлюсь динамически генерировать некоторые встроенные CSS, и мне было интересно, возможно ли это через PHP.

По сути, я передаю несколько переменных через строку запроса и выполняю некоторую арифметику со значениями для создания значений для CSS. Вот как выглядит моя страница:

<?php
$var1 = "var1";
$var2 = "var2";
$divided_amount = $var1/$var1;
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Derp</title>
</head>
        <div style="height: <?php echo $divided_amount ?>px;">
Dynamic height content here
        </div>

</body>
</html>

Это не работает для меня, и я действительно стараюсь избегать использования внешней таблицы стилей, если это возможно.

Любая помощь / понимание очень ценится!

Ответы [ 3 ]

5 голосов
/ 17 января 2012

Вы делите $var1 с той же переменной ($var1). Предполагая, что вы на самом деле используете числа, а не строки, это всегда приводит к 1. Это означает, что ваш элемент div всегда будет иметь высоту 1px.

Во-вторых, вы должны ceil() или floor() ваш результат, просто чтобы убедиться, что вы не используете поплавки для установки высоты пикселя.

И не забудьте проверить ваш HTML - это доказало бы, что что-то не так.

Вот рабочий пример:

<?php
$var1 = "111";
$var2 = "7";
$divided_amount = floor($var1/$var2);
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Derp</title>
    </head>
    <body>

        <div style="height: <?php echo $divided_amount ?>px; background-color: #F2F;">
Dynamic height content here
        </div>

    </body>
</html>
0 голосов
/ 17 января 2012

Я не думаю, что вы можете иметь десятичные дроби в ширину пикселя, и если вы возвращаете значение из деления с десятичным числом (что почти вероятно), то вы должны округлить число.Тогда я не вижу причин, почему бы это не сработало.

0 голосов
/ 17 января 2012

Это должно работать без проблем.

Некоторые вещи, которые нужно посмотреть:

  • Вы делите строки, а не числа.
  • Ваш пример HTML не работаетиметь открывающий тег body.
  • Вы можете привести результат к int, чтобы убедиться, что это действительное число.
...