Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2023, 10:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

доступ к CSS переменной.
Такая ситуация.
В каком то прилинкованном css есть
Код:
:root {
 --my-var: 42;
}
Можно ли как то получить к ней доступ из js?
Не изменить (установить) ее через style.setProperty, а именно получить ее.
Или хотя бы узнать определена ли такая переменная.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2023, 13:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

voraa, ну переменную смотреть надо на каком-то конкретном элементе, т.к. она в каскаде 10 раз поменяться могла. А так - как обычно: getComputedStyle(element).getPropertyValue('--my-var').
__________________
29375, 35

Последний раз редактировалось Aetae, 09.02.2023 в 13:29.
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2023, 14:10
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

Спасибо. И действительно.
Я пробовал
getComputedStyle(document.documentElement)['--my-var']
не получалось.
И в девтулсе смотрел результат getComputedStyle(document.documentElement) - не находил там переменных.
Ответить с цитированием
  #4 (permalink)  
Старый 10.02.2023, 02:19
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Как пример.
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><style> 
body { --my-var: #FF0000;} 
.ss { background-color: var(--my-var);} 
</style><script>
function fu (color) { document.styleSheets[0].rules[0].style.cssText = '--my-var: '+ color + ';';} // OR .setProperty
</script></head><body>
<div class="ss">какой то случайный текст</div>
<input type="button" value="Button 1" onclick="fu ('#00FF00')" />
<input type="button" value="Button 2" onclick="fu ('#0000FF')" />
</body></html>


>> Можно ли как то получить к ней доступ из js?
Да можно CSS это такая же часть документа как и все остальное в документе.
Главное понимать принципы работы браузера по построению страницы они в целом довольно простые
В ответ на запросы браузера приходят потоки байтов которые разбивается на 4ре отдельных парсера HTML CSS JS и отдельные объекты (картинки ифреймы музыка и т.д.)
В данном случае парсер CSS создает каскадные таблицы стилей которые доступны через объектную модель документа как свойство самого документа "document.styleSheets" где их можно найти и изменить
getComputedStyle только делает запрос к уже сформированным таблицам стилей не изменяя их а только возвращая новый объект.
Ответить с цитированием
  #5 (permalink)  
Старый 10.02.2023, 07:22
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,703

MallSerg,
ТО, что можно перебрать все таблицы стилей и все правила я знаю, но не хотелось заморачиваться.
Нужно было, просто определить, подключен ли файл с такой переменной, определенной для :root или нет.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Одновременный доступ к переменной сокеты монго thechicho Node.JS 0 18.04.2016 22:29
доступ к переменной заданой внутри setTimeout извне.. oxxy Общие вопросы Javascript 2 22.07.2014 14:52
Доступ к элементу по имени переменной sanyomix Общие вопросы Javascript 2 28.12.2012 11:31
Доступ к общей переменной из события isergey Events/DOM/Window 1 28.01.2011 15:24
Доступ к input или css файла bobroff jQuery 7 22.12.2009 22:21