html - CSS 并在悬停时更改 SVG 图标

标签 html css svg

这是我的 boostrap 菜单中的菜单项:

<li class="nav-item">
 <a href="#" class="icon"><span class="number">1</span>
   <img src="images/svg-icons/notifications-active.svg" alt="" />
 </a>
</li>

如您所见,有一个 SVG 图像被拉入,并附加了一个类作为“图标”

这是我认为可以使其切换为不同颜色的 CSS:

<style media="screen">
.icon:hover {
    fill: #DA4567;
    }
</style>

知道我做错了什么或者它不是那样工作的吗?

谢谢!

最佳答案

内联 SVG 的

我个人建议您使用内联 svg。它们更易于管理,并且加载时间也增加了,因为它们与页面请求异步加载。

使用内联 svg 将允许您直接操作 svg 元素甚至其中的特定路径。

.icon:hover {
  fill: #DA4567;
}
<div style="height: 0; width: 0; position: absolute; visibility: hidden;">
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
  <symbol id="icon-donut" viewBox="0 0 483 483">
    <path d="M184.824,159.112L84.293,58.582C126.683,22.104,181.792,0,242.104,0c126.567,0,230.391,97.138,241.124,220.921H340.714 c-9.734-45.534-50.164-79.695-98.609-79.695C220.812,141.226,201.099,147.852,184.824,159.112z M141.226,242.104 c0-19.077,5.399-36.859,14.593-52.076L54.666,88.889C20.507,130.628,0,183.964,0,242.104c0,126.567,97.138,230.378,220.921,241.124 V340.714C175.387,330.979,141.226,290.543,141.226,242.104z M263.289,340.714v142.515 c116.797-10.131,209.809-103.148,219.939-219.939H340.714C332.439,301.992,301.993,332.439,263.289,340.714z" />
  </symbol>
  </svg>
</div>

<li class="nav-item">
  <a href="#" class="icon">
    <span class="number">1</span>
    <svg class="Icon">
      <use href="#icon-donut" />
   </svg>
  </a>
</li>


背景 SVG

如果您想使用图像路径,那么将其设置为背景图像将允许您使用 filter 属性。

.icon {
  background: url(https://upload.wikimedia.org/wikipedia/commons/8/81/Octicons-link-external.svg) no-repeat;
  height: 100px;
  width: 100px;
  background-size: contain;
  display: block;
}

.icon:hover {
  filter: invert(38%) sepia(79%) saturate(658%) hue-rotate(301deg) brightness(88%) contrast(95%);
}
<li class="nav-item">
  <a href="#">
    <span class="number">1</span>
    <span class="icon"></span>
  </a>
</li>


SVG 蒙版

.icon {
  mask: url(https://upload.wikimedia.org/wikipedia/commons/8/81/Octicons-link-external.svg) no-repeat;
  display: block;
  width: 100px;
  height: 100px;
  background: black;
  mask-size: contain;
}

.icon:hover,
.icon:focus {
  background: #DA4567;
}
<li class="nav-item">
  <a href="#"><span class="number">1</span>
  <span class="icon"></span>
 </a>
</li>

关于html - CSS 并在悬停时更改 SVG 图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58618219/

相关文章:

带有 SVG 圆的 Angular2 *ngFor

php - 如何让 msnbot 不会落入我的机器人陷阱?

html - SVG - 使路径相互平滑变形

jQUery 选择的库和 fancybox

javascript - jQuery Mobile ListView ,将投票按钮添加到行元素

javascript - 构建后如何使CSS过滤器在VueJS中工作?

javascript - SVG + Javascript : how can I access elements using classes?

html - 如何设置样式的宽度以匹配外部DIV

javascript - 反转颜色 HTML5 Canvas 教程

javascript - 从单选按钮传递变量