Подтвердить что ты не робот

Можно ли изменить цвет заливки SVG-пути с помощью CSS?

У меня есть следующий код:

  <span>
     <svg height="32" version="1.1" width="32" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative; left: -0.0166626px; top: -0.983337px;">
        <desc></desc>
        <defs/>
        <path style="" fill="#333333" stroke="none" d="M15.985,5.972C8.422,5.972,2.289999999999999,10.049,2.289999999999999,15.078C2.289999999999999,17.955,4.302999999999999...............1,27.68,22.274Z"/>
      </svg>&nbsp;
  </span>

Можно ли изменить цвет заливки SVG-пути с помощью CSS или каких-либо других средств без фактического изменения его в теге пути?

4b9b3361

Ответ 1

Да, вы можете применить CSS к SVG, но вам нужно сопоставить элемент, как при стилизации HTML. Если вы просто хотите применить его ко всем путям SVG, вы можете использовать, например:

​path {
    fill: blue;
}​

Внешний CSS, по-видимому, переопределяет атрибут path fill, по крайней мере, в проверенных на WebKit и Gecko браузерах. Конечно, если вы пишете, скажем, <path style="fill: green">, то это также переопределит внешний CSS.

Ответ 2

если вы хотите изменить цвет, зависая в элементе, попробуйте следующее:

path:hover{
  fill:red;
}

Ответ 3

Если вы перейдете в исходный код SVG файла, вы можете изменить заливку цвета, изменив свойство заливки.

<svg fill="#3F6078" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
</svg> 

Используйте свой любимый текстовый редактор, откройте файл SVG и поиграйте с ним.

Ответ 4

вы помещаете этот css для круга SVG.

svg:hover circle{
    fill: #F6831D;
    stroke-dashoffset: 0;
    stroke-dasharray: 700;
    stroke-width: 2;
}

Ответ 5

Я наткнулся на удивительный ресурс по css-трюкам: https://css-tricks.com/using-svg/

Там есть несколько решений, объясненных там.

Я предпочел тот, который требовал минимального редактирования исходного svg, а также не требовал, чтобы он был встроен в HTML-документ. Эта опция использует <object>.


Добавьте файл svg в ваш html используя <object>; Я также объявил html атрибуты width и height. Используя эти ширину и высоту, документ svg не масштабируется, я обошел это с помощью оператора css transform: scale(...) для тега svg в моем связанном файле svg css.

<object type="image/svg+xml" data="myfile.svg" width="64" height="64"></object>

Создайте файл CSS, чтобы прикрепить его к документу SVN. Мой исходный путь SVG был масштабирован до 16 пикселей, я увеличил его до 64 с коэффициентом четыре. У него был только один путь, поэтому мне не нужно было выбирать его более конкретно, однако путь имел атрибут fill, поэтому мне пришлось использовать !IMPORTANT чтобы заставить css создать прецедент.

#svg2 {
    width: 64px; height: 64px;
    transform: scale(4);
}
path {
    fill: #333 !IMPORTANT;
}

Отредактируйте целевой файл SVG перед открывающим тегом <svg, чтобы включить таблицу стилей; Обратите внимание, что href относится к URL-адресу файла svg.

<?xml-stylesheet type="text/css" href="myfile.css" ?>

Ответ 6

Вы можете использовать этот синтаксис, но он потребует некоторых изменений в файле SVG. И удалите любую заливку/обводку из самого SVG.

icon.svg

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<!-- use symbol instead of defs and g, 
  must add viewBox on symbol just copy yhe viewbox from the svg tag itself
  must add id on symbol
-->
<symbol id="location" viewBox="0 0 430.114 430.114">
  <!-- add all the icon paths and shapes here -->
  <path d="M356.208,107.051c-1.531-5.738-4.64-11.852-6.94-17.205C321.746,23.704,261.611,0,213.055,0   C148.054,0,76.463,43.586,66.905,133.427v18.355c0,0.766,0.264,7.647,0.639,11.089c5.358,42.816,39.143,88.32,64.375,131.136   c27.146,45.873,55.314,90.999,83.221,136.106c17.208-29.436,34.354-59.259,51.17-87.933c4.583-8.415,9.903-16.825,14.491-24.857   c3.058-5.348,8.9-10.696,11.569-15.672c27.145-49.699,70.838-99.782,70.838-149.104v-20.262   C363.209,126.938,356.581,108.204,356.208,107.051z M214.245,199.193c-19.107,0-40.021-9.554-50.344-35.939   c-1.538-4.2-1.414-12.617-1.414-13.388v-11.852c0-33.636,28.56-48.932,53.406-48.932c30.588,0,54.245,24.472,54.245,55.06   C270.138,174.729,244.833,199.193,214.245,199.193z"/>
</symbol>

icon.html

<svg><use xlink:href="file_path/location.svg#location"></use></svg>