Svelte SMUI, получение цветов темы в javascript

Я использую SMUI со svelte, а в SCSS я установил цвета темы:

@use 'sass:color';

@use '@material/theme/color-palette';

@use '@material/theme/index' as theme with (
  $primary: #ef8611,
  $secondary: color.scale(#8aace1, $lightness: 90%),
  $surface: #333,
  $background: #fff,
  $error: color-palette.$red-900
);

Затем значение $primary должно быть сохранено в голой переменной css --mdc-theme-primary, но, похоже, это не так...

Вопрос простой:

Как я могу получить значение цвета $primary из scss в JavaScript? Является ли это возможным ?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
0
75
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

getComputedStyle(document.documentElement)
    .getPropertyValue('--mdc-theme-primary');

Итак, я думаю, что у меня не настроена эта переменная. это просто дает мне ''. Есть ли способ установить его прямо в моей теме? Я должен быть в состоянии сделать это вручную правильно? (например, setVar('--mdc-theme-primary', $primary)

vinalti 13.04.2023 00:43

document.documentElement .style.setProperty('--mdc-theme-primary',"#AAA");

justintimeza 13.04.2023 09:46
Ответ принят как подходящий

Файл темы SCSS:

    // bare css to scss
    :root {
      --mdc-theme-primary: #ef8611;
    }
    
    @use '@material/theme/index' as theme with (
      $primary: var(--mdc-theme-primary)
    );
    // SCSS to Bare CSS
    @use '@material/theme/index' as theme with (
      $primary: #ef8611
    );

    :root {
        --mdc-theme-primary: #{theme.$primary};
    }
    // To use the variable in css
    button {
     background-color: var(--mdc-theme-primary);
    }

В Javascript:

    const primaryColor = getComputedStyle(document.documentElement).getPropertyValue('--mdc-theme-primary');

Спасибо большое, а можно наоборот? сначала в SCSS, а затем в Bare CSS?

vinalti 13.04.2023 00:52

Да, вы можете определить цвета своей темы в SCSS, а затем экспортировать их в переменные Bare CSS.

Deniz Gokce 13.04.2023 00:54

Я не очень хорошо знаком со SCSS, должен ли я: --mdc-theme-primary: theme.$primary; ?

vinalti 13.04.2023 00:56

1. файл ($primary: #ef8611; :root { --mdc-theme-primary: #{$primary}; }) 2.file (button { background-color: var(--mdc-theme-primary); })

Deniz Gokce 13.04.2023 00:58

Хорошо, синтаксис трудно угадать, большое спасибо, не могли бы вы обновить свой ответ, чтобы следующим было легче его найти? Большое спасибо. На самом деле правильный ответ был: --mdc-theme-primary: #{theme.$primary}; потому что $primary внутри theme

vinalti 13.04.2023 01:03

Другие вопросы по теме