当前位置: 首页 > 知识库问答 >
问题:

使用css控制svg的大小和颜色

景信瑞
2023-03-14

我煞费苦心地创建了一个搜索图标,并将其导出为svg。这现在出现在一个网站的标题上,但我正试图让css控制它的大小和颜色,这样我就可以相应地调整图标的大小,匹配网站上文本的颜色,并且当用户滚动图标时,还会有某种滚动颜色的变化或变亮/变暗。我不想使用内联svg,但我很乐意使用下面的img-src或对象技术。

<a href="#" onClick={this.onSearchClick} title="Search site">
<img src="//example-image-server/i/search_classic.svg" height="20" alt="Search the site"/>
<object type="image/svg+xml" data="//example-image-server/i/search_classic.svg" height="20" className="search-classic">Your browser does not support SVGs</object>
<span>Search</span>

如果不使用javascript,我如何控制颜色和大小。

我尝试过创建一个css类“search-classic”并设置fill: value,但是没有效果。

请注意,这段代码是针对React的,因此使用了className=“search classic”,而不仅仅是class=“search-classic”

共有2个答案

龚同
2023-03-14

问题的作者写道:

我不想使用内联svg,但我很乐意使用下面的imgsrc或对象技术。我尝试创建一个css类“searchclassic”并设置fill:value,但没有效果。

如果我理解正确,您希望从外部样式表中更改图标的样式。

>

  • 修改SVG文件图标

    1. 在SVG图标文件的第一行中添加将使用哪个样式表的指示:

    这应该正好是第一行,否则可能会出现问题。

    将 svg 代码包装为

      <?xml-stylesheet type="text/css" href="svg.css" ?>
    <svg  version="1.1"  xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" 
    	 width="48px" height="48px" viewBox="0 0 48 48">
    <symbol id="searchIcon" viewBox="0 0 48 48">
    	 <path id="myPath" d="M35,40H11v-0.051C5.947,39.447,2,35.186.... z"/>
    </symbol> 
      	</svg>  

  • 段干华皓
    2023-03-14

    我只是引用两次谷歌搜索的结果。提问前请自行研究。

    […]您可以通过使用< code >链接到SVG文件,并保留使用CSS影响其部分的能力

    <svg ...>
      <style>
        /* SVG specific fancy CSS styling here */
      </style>
      ...
    </svg>
    

    [...]SVG有一种方法可以声明外部样式表,这对于创作和缓存等等都很好。这仅适用于

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

    来源:“使用SVG”-CSS-Tricks

    我查看了您在评论中提供的codepen项目。让我们获取以下文件并修复它:

    <svg xmlns="http://www.w3.org/2000/svg" width="136" height="136" viewBox="0 0 136 136">
      <style type="text/css" media="screen">
          <![CDATA[
          g {
              fill: yellow;
              stroke: black;
              stroke-width: 1;
              transition: fill 1s linear 0s;
          }
          g:hover {
              fill: blue;
          }
          ]]>
      </style>
      <path d="M121…Z"/>
    </svg>
    

    您正在尝试样式 g,这是一个 SVG 组。一个组可以包含多个路径、圆形、正方形等。不幸的是,您在此SVG图标中没有任何组。你只有一条路

    此外,要启用< code>:hover选择器,您必须在元素上启用< code>pointer-events。这份文件应该提供更多这方面的信息。

    总而言之,这是一个工作示例:

    <svg xmlns="http://www.w3.org/2000/svg" width="136" height="136" viewBox="0 0 136 136">
      <style type="text/css" media="screen">
          <![CDATA[
          path { /* TARGET THE CORRECT ELEMENT */
              fill: yellow;
              stroke: black;
              stroke-width: 1;
              transition: fill 1s linear 0s;
              pointer-events: all; /* ENABLE POINTER EVENTS */
          }
          path:hover { /* TARGET THE CORRECT ELEMENT */
              fill: blue;
          }
          ]]>
      </style>
      <path d="M121…Z"/>
    </svg>
    
     类似资料:
    • (对象SVG和img SVG不能为我的目的工作。它必须是内联的。解决方案不必是CSS...JavaScript绝对是一个可以接受的解决方案。)

    • 如何不是用 width 和 height 控制 svg 的渲染大小? 下面的网站 https://nicegui.io/ 首页左上角的的 「NiceGUI」的尺寸不大不小刚刚好,对应的 svg 是:https://github.com/zauberzeug/nicegui/blob/main/website/static/nicegui_word.svg https://nicegui.io/ 这

    • 我的html文件中有以下svg图像: 现在,我试图改变颜色使用这个css代码: 然而,一切都没有改变。使用css更改svg图像路径颜色的正确方法是什么?谢谢

    • 问题内容: 这是我想出的一小段代码的自我问答。 当前,没有一种简单的方法可以嵌入SVG图像,然后可以通过CSS访问SVG元素。有多种使用JS SVG框架的方法,但是如果您要做的只是制作带有过渡状态的简单图标,它们将过于复杂。 所以这就是我想出的,我认为这是迄今为止在网站上使用SVG文件的最简单方法。它的概念来自早期的文本到图像替换方法,但据我所知,从未对SVG进行过处理。 这是问题: 如何在不使用

    • 这是我想出的一段方便的代码的自我问答。 目前,还没有一种简单的方法来嵌入SVG图像,然后通过CSS访问SVG元素。使用JS SVG框架的方法多种多样,但如果您所做的只是制作一个带有滚动状态的简单图标,那么这些方法就过于复杂了。 所以这里是我想出的,我认为这是迄今为止在一个网站上使用SVG文件的最简单的方法。它的概念来自早期的文本到图像的替换方法,但据我所知,SVG从来没有这样做过。 这就是问题所在

    • 问题内容: 有一个iframe,其内容基本上超出了框架的容量。框架的大小基于浏览器的屏幕尺寸,并允许溢出滚动,这在除iOS之外的所有浏览器上均能完美运行。在iOS上,Safari决定调整框架大小以适合内容。不是您所期望的。 HTML: CSS: 问题答案: 您可以通过添加带有和的包装div使其工作。