为什么这个CSS过渡不适用于锚内的SVG

前端之家收集整理的这篇文章主要介绍了为什么这个CSS过渡不适用于锚内的SVG前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试转换嵌入式SVG对象的填充和路径,但这似乎不起作用(Code Pen here):

SVG:

<a class="simple-link svg-link" href="">
  Some Text
  <svg version="1.1" id="next-page-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
      viewBox="0 0 25 25" enable-background="new 0 0 25 25" xml:space="preserve" preserveAspectRatio="xMinYMin meet">
    <circle class="the-background" cx="12.5" cy="12.5" r="12.5"/>
    <g>
      <path class="the-icon"  d="M16.088,11.421l-3.404,3.362l-3.418-3.362v-1.204l3.418,3.444l3.404-3.444V11.421z"/>
     </g>
  </svg>
</a>

萨斯:

a
{
  width:200px;
  height:200px;
  overflow: hidden;

  @include transition(color,1s);
  @include transition(background,1s);

  svg
  {
    width:200px;
    height:200px;

    .the-background
    {
      @include transition(fill,1s);
      fill: grey;
    }

    .the-icon
    {
      @include transition(fill,2.5s);
    }
  }

  &:hover
  {
    color: red;
    background: black;
    .the-background
    {
      fill: black;
    }

    .the-icon
    {
      fill: red;
    } 

  }
}

为什么填充动画不会悬停?

解决方法

转换不起作用的原因是因为它在链接中.

要修复它,请将链接放在SVG内部而不是like this SO post suggests

要么

使SVG成为链接的兄弟,并使用兄弟选择器

/* This goes within `a { ...` */
&:hover + svg { /* Or use ~ to select all */
  .the-background
  {
    fill: black;
  }

  .the-icon
  {
    fill: red;
  } 
}

猜你在找的CSS相关文章