[ID CC2023] Помогите изменить отображение svg в зависимости от темы в программе чтения

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
класс .dark-theme и light-theme должен появляться у тэга <body>, тогда сработает
 

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
непонятно где класс появляется .dark-theme и light-theme
это есть только в CSS, я боролся за то, что бы цвет менялся в зависимости от темы - темная или светлая. Судя по тому что вчера читал - это можно было налету реализовать через fill: currentColor, но ничего не получилось т.к. если как Вы выше заметили если svg встроен как image, то чуда не происходит...
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
найдите в css файле класс book-title, посмотрите как он связан dark-theme и light-them
Заголовок же меняет цвет. Надо сделать по аналогии.
 

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
найдите в css файле класс book-title, посмотрите как он связан dark-theme и light-them
Заголовок же меняет цвет. Надо сделать по аналогии.
у меня там два вхождения всего book-title но связи я не вижу.
 

Вложения

  • PredefinedStyles_112.css.zip
    1.7 КБ · Просм.: 77

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
у вас есть такие классы?
body.dark-theme и body.light-them
если вы в этих классах определили переменную currentColor, то она сильнее и будет забивать .dark-theme .meta-logo svg
 

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
у вас есть такие классы?
body.dark-theme и body.light-them
если вы в этих классах определили переменную currentColor, то она сильнее и будет забивать .dark-theme .meta-logo svg
у меня в CSS есть только
}
.meta_logo svg {
fill: currentColor;
}
.light-theme .meta_logo svg {
fill: #000000;
}
.dark-theme .meta_logo svg {
fill: #ffffff;
}
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
Посмторел я ваш css.
Там тэг body вообще не связан с классами .dark-theme и .light-theme.
Т.е. у вас при переключение темы не факт, что добавляется такой класс. Соответственно, dark-theme .meta_logo svg никогда не появится.
Нужно изучать как меняется тема в epub или в читалках.
Может там тупо добавляется body color: white; background-color: black.

В вашем случае вы откуда-то взяли два класса, которых по факту нет в вашем коде. Надо гуглить как меняется тема в читалках, что добавляется в код, и тогда решим проблему.
 
  • Спасибо
Реакции: Tango

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
Посмторел я ваш css.
Там тэг body вообще не связан с классами .dark-theme и .light-theme.
Т.е. у вас при переключение темы не факт, что добавляется такой класс. Соответственно, dark-theme .meta_logo svg никогда не появится.
Нужно изучать как меняется тема в epub или в читалках.
Может там тупо добавляется body color: white; background-color: black.

В вашем случае вы откуда-то взяли два класса, которых по факту нет в вашем коде. Надо гуглить как меняется тема в читалках, что добавляется в код, и тогда решим проблему.
Когда я это прочитал, то не думал что это превратится в два дня чтения и экспериментов.... Спасибо за Ваше время.

Чтобы разделители и логотип адаптировались под темную тему:

  1. Создайте их в векторном редакторе, например Inkscape, в черном цвете на прозрачном фоне.
  2. Сохраните в формат SVG.
  3. При вставке в EPUB-файл укажите параметр fill="currentColor", чтобы заливка брала текущий цвет темы.
  4. В CSS EPUB пропишите цвет разделителей для светлой и темной тем соответственно, например:
.light-theme .divider { color: #000000; }

.dark-theme .divider { color: #ffffff; }

Таким образом разделители будут автоматически менять цвет при смене тем оформления в приложениях для чтения EPUB. Аналогично можно реализовать и для логотипа.
 
  • Спасибо
Реакции: eugeny

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
ну надо пробовать
.light-theme .divider { color: #000000; }
.dark-theme .divider { color: #ffffff; }

В svg коде в начале есть строчка: <g style="clip-path:url(#b); ">
попробуйте ее изменить <g style="clip-path:url(#b);fill:currentColor ">

это меняет цвет без класса, в самом svg
 
  • Спасибо
Реакции: Tango

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
Когда я это прочитал, то не думал что это превратится в два дня чтения и экспериментов.... Спасибо за Ваше время.

Чтобы разделители и логотип адаптировались под темную тему:

  1. Создайте их в векторном редакторе, например Inkscape, в черном цвете на прозрачном фоне.
  2. Сохраните в формат SVG.
  3. При вставке в EPUB-файл укажите параметр fill="currentColor", чтобы заливка брала текущий цвет темы.
  4. В CSS EPUB пропишите цвет разделителей для светлой и темной тем соответственно, например:
.light-theme .divider { color: #000000; }

.dark-theme .divider { color: #ffffff; }

Таким образом разделители будут автоматически менять цвет при смене тем оформления в приложениях для чтения EPUB. Аналогично можно реализовать и для логотипа.
Написано складно - только не заработало
 

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
ну надо пробовать
.light-theme .divider { color: #000000; }
.dark-theme .divider { color: #ffffff; }

В svg коде в начале есть строчка: <g style="clip-path:url(#b); ">
попробуйте ее изменить <g style="clip-path:url(#b);fill:currentColor ">

это меняет цвет без класса, в самом svg
Screenshot 2023-09-22 at 13.07.49.png
 
  • Спасибо
Реакции: eugeny

Tango

Топикстартер
15 лет на форуме
Сообщения
150
Реакции
9
ну надо пробовать
.light-theme .divider { color: #000000; }
.dark-theme .divider { color: #ffffff; }

В svg коде в начале есть строчка: <g style="clip-path:url(#b); ">
попробуйте ее изменить <g style="clip-path:url(#b);fill:currentColor ">

это меняет цвет без класса, в самом svg
Вы таки нашли серебрянную пулю!! Снимаю шляпу :) Подскажите ещё парню из песочницы как логотип в размер загнать, а то он у меня по всей странице растянут, хотя в коде svg размер вроде задан.
 

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
у класса .meta_logo задайте width: 20% ну или какой подберете удобный размер
в коде он задан, но там такая хитрожопая система пропорций ))
 
Последнее редактирование:

eugeny

15 лет на форуме
Сообщения
859
Реакции
210
надо задать у .meta_logo
а не у .meta_logo svg
т.е. вверху у класса где он без svg добавьте width
 
  • Спасибо
Реакции: Tango