Вбудований SVG можна "стилізувати" в тому сенсі, що він вже має заливки та обведення, і навіть не в ту секунду, коли ви розміщуєте його на сторінці. Це чудовий і абсолютно прекрасний спосіб використання вбудованого SVG. Але ви також можете стилізувати вбудований SVG за допомогою CSS, що є неймовірно чудовим, оскільки, я думаю, для багатьох з нас, CSS - це місце, де ми почуваємось потужними та комфортними.
Це працює майже так, як ви очікували. Ось простий приклад:
.my-rect ( fill: blue; /* remember it's fill not background, teamsters */ )
Можна сказати, що CSS має трохи більше потужності, ніж атрибути стилю на самих елементах SVG. Якби це було подібне
fill="red"
, CSS все одно “виграв би”. Ви можете подумати протилежне, оскільки, здається, атрибути стилю були б потужними, як вбудовані стилі, але вони не є. Вбудовані стилі все ще потужні.
Так само правила CSS не каскадуються, якщо відбувається щось більш конкретне. Наприклад:
.parent ( fill: red; )
У цьому випадку CSS програє, оскільки синій колір застосовується більш конкретно до прямокутника.
Якщо я планую стилізувати SVG за допомогою CSS, мені, як правило, найпростіше просто залишити атрибути стилю поза елементами SVG.
Важлива річ, яку слід знати!
Ми витратили час на розмови . Скажімо, така ситуація:
Зрештою, цю "дитину" вкладають у цього "батька", чи не так? Правильно. То це має спрацювати?
.parent .child ( fill: red; )
Але це не так.
Цей спосіб працює, він клонує це
і поміщає його у "Тіньовий DOM" у тому другому SVG. Ви не можете проникнути крізь цей тіньовий DOM таким селектором. Просто не працює. Можливо, коли-небудь буде рішення, але зараз цього немає.
Ви можете зробити, як:
.parent ( fill: red; )
І ця заливка буде каскадувати і впливати на дочірні елементи, якщо в цьому шляху немає нічого більш конкретного. Або
.child ( fill: red; )
і впливають на всі випадки цієї дитини. Але тільки не обидва.
Якщо вам потрібні різні версії одного і того ж ...
Просто скопіюйте або все, що вам потрібно. Переважна більшість інформації буде ідентичною, і GZip їсть однаковий текст на сніданок.