HTML — изменить CSS: раньше из PHP с несколькими вхождениями

Если в PHP, программа выводит <div>, который имеет :before часть этого, для которого мой код должен выбрать атрибуты. Поскольку мой код имеет несколько случаев, когда :before должны иметь разные атрибуты, я не могу просто редактировать .css файл или создать <style> тег наверху.

Я пытался создать новый <style> тег перед каждым <div>, но все атрибуты заканчиваются тем же самым последним <style> (Да, я знаю почему). Так что мое текущее мышление заключается в том, чтобы иметь возможность редактировать :before изнутри <div style=""> но я не могу получить :before быть измененным там.

Кто-нибудь знает, как редактировать :before часть внутри тега style = "" если это вообще возможно или другое решение этого?

Моя текущая гипотеза (что не сработало из-за того, что первая буква в CSS означает Каскадирование) :

$array = [["text" => "Example 1", "colour" => "#880000"],["text" => "Example 2", "colour" => "#008800"]
foreach($array as $current){
echo '<style>
div.before{
color: '.$current["colour"].';
}
</style>';
echo '<div><p>'.$current["text"].'</p></div>'
}

(Примечание: в реальном коде это происходит из базы данных)

0

Решение

Если вы используете PHP для определения стиля, я настоятельно рекомендую создать собственную таблицу стилей, которую вы условно контролируете.

HTML

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

CSS

<?php
header("Content-type: text/css; charset: UTF-8");

$brandColor = "#990000";
$linkColor = "#555555";
$CDNURL = "http://cdn.blahblah.net";

#header {
background: url("<?php echo $CDNURL; ?>/images/header-bg.png") no-repeat;
}
a {
color: <?php echo $linkColor; ?>;
}

ul#main-nav li a {
color: <?php echo $linkColor; ?>;
}
?>

Пример источника http://css-tricks.com/css-variables-with-php/

На основе вашего кода я бы назначил класс для div в зависимости от цвета. Вам нужно будет заменить # с письмом для CSS, чтобы прочитать его.

$array = [["text" => "Example 1", "colour" => "#880000"],["text" => "Example 2", "colour" => "#008800"]

foreach($array as $current){
$className = str_replace('#', 'C', $current["colour"]);
echo '<style>';
echo 'div.'.$className.':before {
color: '.$current["colour"].';
}';
echo '</style>';
echo '<div class="'.$className.'"><p>'.$current["text"].'</p></div>'
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector