Здравствуйте, у меня есть такой SVG файл, который должен показывать разную мощность принимаемого сигнала.
<svg id="cell-strength" viewBox="0 0 29 18" xmlns="http://www.w3.org/2000/svg">
<style>
rect { fill: #545454; }
</style>
<rect rx="1" id="bar_1" height="7.2" width="5" y="10.8" x="0"/>
<rect rx="1" id="bar_2" height="10.8" width="5" y="7.2" x="8"/>
<rect rx="1" id="bar_3" height="14.4" width="5" y="3.6" x="16"/>
<rect rx="1" id="bar_4" height="18" width="5" y="0" x="24"/>
</svg>
В html встраивается таким образом:
<object class="cell-svg" type="image/svg+xml" data="cell.svg"></object>
Я бы хотел указывая разные классы для этого svg, задавать нужную силу сигнала, например:
<object class="cell-svg cell-svg--stength-2" type="image/svg+xml" data="cell.svg"></object>
Должно было бы дать результат:
Я решил, что будет неплохой идеей сгруппировать rect в svg по силе сигнала, задав им имена и потом этим группам менять цвет фона, изменил svg так:
<svg id="cell-strength" viewBox="0 0 29 18" xmlns="http://www.w3.org/2000/svg">
<style>
rect { fill: #545454; }
</style>
<g id="str-4">
<g id="str-3">
<g id="str-2">
<g id="str-1">
<rect rx="1" id="bar_1" height="7.2" width="5" y="10.8" x="0"/>
</g>
<rect rx="1" id="bar_2" height="10.8" width="5" y="7.2" x="8"/>
</g>
<rect rx="1" id="bar_3" height="14.4" width="5" y="3.6" x="16"/>
</g>
<rect rx="1" id="bar_4" height="18" width="5" y="0" x="24"/>
</g>
</svg>
Код класса
cell-svg--stength-2 сделал таким:
.cell-svg--stength-2 g#str-2 rect {
fill: #fff;
}
Но никакого эффекта это не дает. Пробовал и другие комбинации - без результата. Каким образом можно реализовать изменение картинки внешними классами в CSS?