【问题标题】:Hover over svg does not work when mouse is over text within the svg item当鼠标悬停在 svg 项目中的文本上时,悬停在 svg 上不起作用
【发布时间】:2018-05-20 12:14:19
【问题描述】:

我想在其中的形状和文本上应用一个简单的悬停。当指针位于形状或文本上时,它应该更改颜色(在本例中为填充)。我认为如果文本在 svg 元素内部,悬停也将应用于它。除非它不是。

我不擅长 svg,事实上,这是我第一次与他们合作。试图在这里和谷歌中找到答案,但没有任何问题适用于我的问题。请帮忙。

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 170">
      <path class="a" fill={funnels[funnel].bgColor} d="M378.24,59.8l33.39,88.73a11.82,11.82,0,0,0,11.07,7.66h54.6a11.82,11.82,0,0,0,11.07-7.66L521.76,59.8a11.82,11.82,0,0,0-11.07-16H389.31A11.82,11.82,0,0,0,378.24,59.8Z"></path>
      <text x="50%" y="60%" dominant-baseline="middle" text-anchor="middle" font-family="Lato" font-size="2rem" fill="#f2f2f2"> Hello </text>
    </svg>


svg {
      filter: drop-shadow(0px 0px 10px rgba(0,0,0,0.2));

      .a {
        transition: all ease-in 0.5s;

        &:hover {
          fill: darken(red, 10%);
          cursor: pointer;
        }
      }
    }

这是我的小提琴:https://jsfiddle.net/Madzik/bkbgf1os/

【问题讨论】:

    标签: css svg sass hover


    【解决方案1】:

    将悬停效果应用于svg 而不是.a

    svg {
      filter: drop-shadow(0px 0px 10px rgba(0,0,0,0.2));
    
      .a {
        transition: all ease-in 0.5s;
      }
    
      &:hover {
        fill: darken(red, 10%);
        cursor: pointer;
      }
    }
    

    svg {
      filter: drop-shadow(0px 0px 10px rgba(0,0,0,0.2));
    }
    
    svg .a {
      transition: all ease-in 0.5s;
    }
    
    svg:hover {
      fill: green;
      cursor: pointer;
    }
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 900 170">
      <path class="a" fill={funnels[funnel].bgColor} d="M378.24,59.8l33.39,88.73a11.82,11.82,0,0,0,11.07,7.66h54.6a11.82,11.82,0,0,0,11.07-7.66L521.76,59.8a11.82,11.82,0,0,0-11.07-16H389.31A11.82,11.82,0,0,0,378.24,59.8Z"></path>
      <text x="50%" y="60%" dominant-baseline="middle" text-anchor="middle" font-family="Lato" font-size="2rem" fill="#f2f2f2"> Hello </text>
    </svg>

    【讨论】:

    • 我这样做了,但是指针:光标位于 svg 元素占据的整个区域,远远超出了图像本身。
    • 因为你没有设置svg的大小。您应该设置此元素的宽度和高度。
    • 我添加了 svg 大小,但它并没有改变任何东西。指针在整个 svg 区域上仍然可见,而不是路径。我想你想让我把 svg 变小,问题是我有几个元素(见这里:jsfiddle.net/Madzik/bkbgf1os),它们都有不同的大小,最大的几乎等于 viewbox。我希望它们具有相同的视图框以保持相对尺寸。有什么方法可以使文本可悬停且视图框除路径外不可悬停吗?或任何解决方法?
    • 有两个问题:css没有prev element选择器,所以你不能说“嘿css,当我悬停文本元素时用红色填充路径元素。”第二个问题是文本元素被放置在路径元素上。而当你悬停文本时,路径会损失悬停效果。您可以将pointer-events: none; 添加到文本中。并且此元素对于所有操作都是“透明的”。 css-tricks.com/almanac/properties/p/pointer-events
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2020-07-13
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多