CSS悬停在SVG上导致光标错误。

huangapple go评论89阅读模式
英文:

CSS SVG on hover causes cursor bug

问题

我正在尝试在我的网站上将光标在悬停在SVG上时更改为指针。但是由于某种原因,当我在它们之间切换时,光标看起来非常奇怪。有什么可能导致这种情况以及如何解决呢?

我正在使用Firefox,当我在右侧的三个SVG上来回移动光标时,会出现两个水平线。我移动得越快,就越容易看到那些水平线。

这里是我创建的一个jsfiddle,展示了这个问题:https://jsfiddle.net/ztr4scfu/

.right > div > svg:hover {
  cursor: pointer;
  fill: orange;
}

我从另一个网站复制了这些SVG代码/路径,它们没有这个问题。当我移除悬停效果时,我就没有这个问题。

英文:

I'm trying to make the cursor change to a pointer while hovering over SVG's on my website. But for some reason when I jump between them the cursor looks very weird. Any ideas what might be causing this and how to resolve it?

I'm using Firefox and I see two horizontal bars appearing when I go back and forth with my cursor over the three SVG's on the right. The faster I move, the easier it is to see those horizonal lines.

Here's a jsfiddle I put together showing the issue: https://jsfiddle.net/ztr4scfu/

.right > div > svg:hover {
  cursor: pointer;
  fill: orange;
}

I copied those SVG codes/paths from another website, and they do not have that issue. I do not have that issue when I remove the hover effect.

答案1

得分: 1

你可以这样做,使其看起来正常:

.right:hover {
  cursor: default;
}

我猜你的问题是图标之间的光标是文本,这应该解决它。

英文:

What you can do to make it look like normal is

.right:hover {
  cursor: default;
}

I guess your issue is that the cursor between the icons is text, this should fix it.

答案2

得分: 0

你可以简化你的HTML代码部分如下:

<style>
  .bar {
    display: flex;
    align-items: justify;
    width: 300px;
    background: lightgreen;
  }
  svg {
    display: inline-block;
    width: 100%;
    height: 100%;
    background: pink;
  }
  svg+svg {
    margin-left: 1em;
  }
  svg:hover {
    cursor: pointer;
    fill: orange;
  }
</style>

<div class="bar">
  <svg alt="User" viewBox="0 0 44 36">
    <path d="M22 16.81a8.08 8.08 0 118.08-8.08A8.08 8.08 0 0122 16.81zm0-14.46a6.38 6.38 0 106.38 6.38A6.38 6.38 0 0022 2.35zm15 33a.85.85 0 01-.85-.85 14.15 14.15 0 00-28.3 0 .85.85 0 01-1.7 0 15.85 15.85 0 0131.7 0 .85.85 0 01-.85.85z"></path>
  </svg>
  <svg alt="Heart" viewBox="0 0 44 36">
    <path d="M22 34.35a1 1 0 01-.33-.06c-17-7-18.94-16.35-19-20A11.58 a11.58 0 019.3 3.46c4.08-1.87 8.78-1 12.7 2.16 3.92-3.21 8.62-4 12.70-2.16a11.58 11.58 0 016.63 10.81c-.06 3.67-2 13-19 20a1 1 0 01-.33.08zM13.85 4.16A9.16 9.16 0 0010 5a9.86 9.86 0 00-5.64 9.23c.06 3.31 1.9 11.7 17.63 18.34 15.73-6.64 17.57-15 17.63-18.34A9.86 9.86 0 0034 5c-3.7-1.69-7.86-.83-11.42 2.36a.86.86 0 01-1.14 0 11.41 11.41 0 00-7.59-3.20z"></path>
  </svg>
  <svg alt="Bag" viewBox="0 0 44 36">
    <path d="M20.77 35.35h-9a5.6 5.6 0 01-4.42-1.86 7 7 0 01-1.19-5.08l1.9-15.91a.84.84 0 01.84-.75h23.67a.84.84 0 01.84.75l1.92 16a6.88 6.88 0 01-1.19 5 5.58 5.58 0 01-4.4 1.86zM9.66 13.45L7.83 28.66a5.24 5.24 0 00.82 3.75 4 4 0 003.12 1.24h18a4 4 0 003.1-1.24 5.27 5.27 0 00.83-3.72l-1.88-15.24zm18.06-4.12a.85.85 0 01-.85-.85 6.14 6.14 0 00-12.27 0 .85.85 0 01-1.7 0 7.84 7.84 0 0115.67 0 .85.85 0 01-.85.85z"></path>
  </svg>
</div>
英文:

You can simplify your HTML

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

&lt;style&gt;
  .bar {
    display: flex;
    align-items: justify;
    width: 300px;
    background: lightgreen;
  }
  svg {
    display: inline-block;
    width: 100%;
    height: 100%;
    background: pink;
  }
  svg+svg {
    margin-left: 1em;
  }
  svg:hover {
    cursor: pointer;
    fill: orange;
  }
&lt;/style&gt;

&lt;div class=&quot;bar&quot;&gt;
  &lt;svg alt=&quot;User&quot; viewBox=&quot;0 0 44 36&quot;&gt;
    &lt;path d=&quot;M22 16.81a8.08 8.08 0 118.08-8.08A8.08 8.08 0 0122 16.81zm0-14.46a6.38 6.38 0 106.38 6.38A6.38 6.38 0 0022 2.35zm15 33a.85.85 0 01-.85-.85 14.15 14.15 0 00-28.3 0 .85.85 0 01-1.7 0 15.85 15.85 0 0131.7 0 .85.85 0 01-.85.85z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;
  &lt;svg alt=&quot;Heart&quot; viewBox=&quot;0 0 44 36&quot;&gt;
    &lt;path d=&quot;M22 34.35a1 1 0 01-.33-.06c-17-7-18.94-16.35-19-20A11.58 11.58 0 019.3 3.46c4.08-1.87 8.78-1 12.7 2.16 3.92-3.21 8.62-4 12.7-2.16a11.58 11.58 0 016.63 10.81c-.06 3.67-2 13-19 20a1 1 0 01-.33.08zM13.85 4.16A9.16 9.16 0 0010 5a9.86 9.86 0 00-5.64 9.23c.06 3.31 1.9 11.7 17.63 18.34 15.73-6.64 17.57-15 17.63-18.34A9.86 9.86 0 0034 5c-3.7-1.69-7.86-.83-11.42 2.36a.86.86 0 01-1.14 0 11.41 11.41 0 00-7.59-3.2z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;
  &lt;svg alt=&quot;Bag&quot; viewBox=&quot;0 0 44 36&quot;&gt;
    &lt;path d=&quot;M20.77 35.35h-9a5.6 5.6 0 01-4.42-1.86 7 7 0 01-1.19-5.08l1.9-15.91a.84.84 0 01.84-.75h23.67a.84.84 0 01.84.75l1.92 16a6.88 6.88 0 01-1.19 5 5.58 5.58 0 01-4.4 1.86zM9.66 13.45L7.83 28.66a5.24 5.24 0 00.82 3.75 4 4 0 003.12 1.24h18a4 4 0 003.1-1.24 5.27 5.27 0 00.83-3.72l-1.88-15.24zm18.06-4.12a.85.85 0 01-.85-.85 6.14 6.14 0 00-12.27 0 .85.85 0 01-1.7 0 7.84 7.84 0 0115.67 0 .85.85 0 01-.85.85z&quot;&gt;&lt;/path&gt;
  &lt;/svg&gt;
&lt;/div&gt;

<!-- end snippet -->

huangapple
  • 本文由 发表于 2023年8月10日 19:07:44
  • 转载请务必保留本文链接:https://go.coder-hub.com/76875151.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定