Если в 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>'
}
(Примечание: в реальном коде это происходит из базы данных)
Если вы используете 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>'
}
Других решений пока нет …