Как использовать переменную в css?

#1 24 марта 2021 в 17:29
Здравствуйте. Подскажите пожалуйста, никак не могу дотумкать. Есть стили, встроенные прямо в шаблон. Например:

  1.  
  2. <style>
  3.  
  4. .per1 {...}
  5.  
  6. </style>
  7.  
Пытаюсь сделать так, чтобы было так:

  1.  
  2. <style>
  3.  
  4. .<?php echo $per1; ?> {...}
  5.  
  6. </style>
  7.  
Но, выходит ошибка. Я так понимаю из-за точки перед <?php echo $per1; ?>

Подскажите пожалуйста, как правильно составить сею конструкцию? Поиск по интернету к сожалению ничего не дал…
#2 24 марта 2021 в 17:37
Так не работает это.
#3 24 марта 2021 в 17:40
Присвойте стиль или класс переменной и выведите в самом html коде.
#4 24 марта 2021 в 18:00
Вы имеете ввиду сделать так?

  1.  
  2. <div class = "per1" style = "width: <?php echo $per1; ?>px;"
  3.  
Да, так-то сделать без проблем, меня к сожалению интересует именно тот вариант, о котором я писал в шапке темы.
#5 24 марта 2021 в 18:05

Как использовать переменную в css?

Нет в приведённом вами в старттопике коде ни переменных CSS, ни переменных PHP
По простому, так пробуйте:
  1.  
  2. <?php
  3. $per1 = 'background-color: #000; color: #fff;';
  4. ?>
  5. <style>
  6. .per1 {
  7. <?php echo $per1; ?>
  8. }
  9. </style>
  10.  
#6 24 марта 2021 в 18:09

выходит ошибка. Я так понимаю из-за точки перед <?php echo $per1; ?>

GWK
Что за ошибка? Чему равна переменная $per1? Если ничему, то ничего и не получится. Скорее всего выходит нотис, что переменная не определена. Да?
#7 24 марта 2021 в 18:16
Олег Васильевич я, правильно подсказывает. Php код должен выполняться до стилей
#8 24 марта 2021 в 21:21
Нифигаccе о-го-гошеньки, переменная равна значению из виджета. То есть выглядит это примерно так: есть простой виджет, в котором всего одно поле, где нужно указать переменную. После указания этой переменной, в файл шаблона виджета должна записаться эта переменная. Если делать так:

  1.  
  2. <style>
  3.  
  4. .per {background-color: <?php echo $per1; ?>;}
  5.  
  6. <style>
  7.  
То все работает нормально — код выполняется. Но у меня стоит другая задача — мне нужно чтобы вот здесь (где подчеркнуто):

.per {background-color: <?php echo $per1; ?>;}

был вывод этой самой переменной из виджета. Если выводить без точки — то все в порядке. Но проблема то в общем в том, что точка обязательна нужна, иначе из-за этого теряется весь смысл.
#9 24 марта 2021 в 21:23
Tolya,

<?php echo '.'.$per1; ?> {...}

так я пробовал в самую первую очередь. Не помогло.
#10 24 марта 2021 в 21:25
Олег Васильевич я, нет, это тоже не то. Вы не поняли просто вопроса) Ладно, буду копаться, может на StackOverflow кто-нибудь подскажет)
#11 24 марта 2021 в 22:25

Но, выходит ошибка.

GWK
Какая?
#12 24 марта 2021 в 22:37
@IamB, ну, по факту ошибки нет. Просто в исходном коде нет этой точки у селектора.
#13 24 марта 2021 в 22:41
GWK,
Четыреста лет назад все философский камень добывали и вот опять...
В движке есть файлы, которые обслуживают логику и файлы, которые выводят эту логику в браузер в виде html.
Если Вы пытаетесь из файлов компонента стили вывести на странице — ничего не получится.
Но Вы можете передать вашу переменную в шаблон и далее, в файле шаблона, который выводит страницу в браузер (***.tpl.php) сделать так:
В самом низу файла ***.tpl.php, после закрытия тэга php ?> допишите:
  1. <style>
  2. ваш_элемент {
  3. параметр: <?php echo $ваша_переменная; ?> ;
  4. </style>
#14 24 марта 2021 в 22:45

Ладно, буду копаться, может на StackOverflow кто-нибудь подскажет)

GWK
И там вам скажут "приведите код"
Вы б описали задачу (которую, по всей видимости, сами себе и усложняете) до показали реализацию.
---------------------------
Что в поле вводится (целое правило, тип селектора, имя селектора, тип и название, свойство, значение свойства...)
Что из этого в переменную пишете?
Как и для чего используете переменную?
--------------------------
А по ходу продолжаем гадать: в поле вводится тип (класс) и имя селектора; имя селектора совпадает со значением свойства в селекторе. На выходе должно получиться правило типа:
  1.  
  2. .red {background-color: red;}
  3.  
И вот вам теперь в значении свойства мешает точка.
Угадал?

<?php
$red = '.red';
?>
<style>
<?php echo $red; ?> {background-color: <?php echo ltrim($red, '.'); ?>;}
</style>
#15 24 марта 2021 в 22:49
Ris, ему такой вариант не подходит, видимо в переменной имя класса.
GWK, вы так и не сказали, какую выдает ошибку. Точка в вашем случае может вызвать ошибку только если переменная содержит класс вместе с точкой.
$per1 = ".per"
Вы что-то не договариваете.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.