html - 从 CSS 调整 SVG 的大小和颜色

标签 html css svg colors scale

我在我的页面中使用了一个 SVG 文件,我可以通过从 <object> 加载它来根据容器样式调整它的大小。标签。我需要根据 css 类更改填充颜色,但我无法执行此操作。我只能使用 JavaScript 更改颜色,但有时它不起作用。我多次加载该 SVG,~30/40 对象标签,数据指向我的 .svg 文件。所以我想知道最好的方法是:

  • 多次加载同一个 SVG 文件
  • 缩放图像以适应它的容器
  • 根据 CSS 更改填充颜色

我的尝试是:

html:

<div class="item">
   <object class="svg_icon color_1" data="file.svg"></object>
   <object class="svg_icon color_2" data="file.svg"></object>
   <object class="svg_icon color_3" data="file.svg"></object>
</div>

CSS:

.item {
    display: flex;
    flex-direction: column;
    justify-items: center;
    align-items: center;
    margin-left: 5px;
    margin-right: 5px;
}
.svg_icon{
    height: 40px;
}
.color_1{
    fill: red;
}
.color_2{
    fill: blue;
}
.color_3{
    fill: yellow;
}

我试过 .color1 > svg也是,但它不起作用

编辑
我使用内联 SVG 解决了这个问题: html:

<div class="item">
   <svg viewBox="same as svg file" class="svg_icon color_1" data="file.svg">
      <use xlink:href="file.svg#svg_id"></use>
   </svg>
   <svg viewBox="same as svg file" class="svg_icon color_2" data="file.svg">
      <use xlink:href="file.svg#svg_id"></use>
   </svg>
   <svg viewBox="same as svg file" class="svg_icon color_3" data="file.svg">
      <use xlink:href="file.svg#svg_id"></use>
   </svg>
</div>

CSS:

.item {
    display: flex;
    flex-direction: column;
    justify-items: center;
    align-items: center;
    margin-left: 5px;
    margin-right: 5px;
}
.svg_icon{
    height: 40px;
}
.color_1{
    fill: red;
}
.color_2{
    fill: blue;
}
.color_3{
    fill: yellow;
}

最佳答案

多次加载同一个 SVG 文件不是问题,因为浏览器会在第一次加载后不再加载。它在浏览器缓存中。

使用 svg,您可以随心所欲地缩放。您在这里提问的目的是什么?

您可以像这样使用 css 类更改 svg 颜色:

#mySVG {
 fill: white;
}
#mySVG.black {
 fill: black;
}

关于html - 从 CSS 调整 SVG 的大小和颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57814072/

相关文章:

javascript - 我的 Jquery CSS 不起作用

html - CSS:在单个表格中设置所有链接样式的正确方法是什么?

javascript - 如何捕捉视频的 ExitFullScreen 事件?

php - 用 PHP 处理 HTML 复选框表单

html - CSS:如何使长文本标签的文本缩进?

javascript - 在 SVG 中旋转多边形

html - 如何使用 svg/canvas 绘制不规则/手绘线?

html - 带有 CSS 关键帧的 Circles "waves"动画

css - 在 Bootstrap 3 响应式设计中避免文本换行

javascript - 如何获取子id并在其下绘制svg