javascript - SVG 不仅悬停路径而且悬停所有 View 框

标签 javascript svg

在这个例子中是否可行

#p1:hover {
  opacity: 0.2
}
#p1 {
    fill:none;
    stroke:black;
    pointer-events:all;
}
<svg id="icon" xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 48.086 48.09">
  <path id="p1" d="M1.006 48.088c-.256 0-.498-.103-.68-.288-.217-.207-.324-.45-.324-.71L0 33.213c0-.523.426-.95.95-.95s.95.427.95.95l.003 11.62L18.905 27.84c.18-.18.418-.278.672-.278.254 0 .493.1.672.28.37.368.37.972 0 1.342L3.236 46.188h11.64c.523 0 .95.428.95.95s-.426.95-.95.95H1.007zM28.51 20.535c-.253 0-.492-.1-.67-.28-.37-.37-.37-.972 0-1.342L44.85 1.906H33.21c-.525 0-.95-.426-.95-.95s.425-.95.95-.95h13.87c.256 0 .498.103.68.29.217.208.324.45.324.71l.002 13.873c0 .523-.426.95-.95.95s-.95-.426-.95-.95l-.002-11.62-17 16.997c-.18.18-.42.278-.673.278zM19.58 20.525c-.253 0-.492-.1-.67-.28L1.9 3.236 1.9 14.876c0 .525-.426.95-.95.95S0 15.4 0 14.876l.002-13.87c0-.257.104-.5.29-.68C.5.107.743 0 1.003 0L14.876 0c.524 0 .95.426.95.95s-.426.95-.95.95l-11.62.002 16.997 17c.37.372.37.975 0 1.345-.18.18-.42.278-.672.278zM33.21 48.086c-.524 0-.95-.427-.95-.95 0-.254.098-.492.277-.672.18-.18.418-.277.672-.278l11.62-.003L27.833 29.18c-.37-.37-.37-.973 0-1.343.18-.18.418-.278.67-.278.255 0 .494.098.673.277L46.183 44.85V33.207c0-.523.426-.95.95-.95s.95.427.95.95v13.87c0 .26-.105.5-.293.683-.207.216-.45.322-.71.322l-13.87.004z"/>
</svg>

不仅在指针位于路径上方时启动悬停操作,而且在指针通常位于图标上方甚至路径之间时启动悬停操作?我不添加任何额外的标记非常重要。 HTML 部分需要保持原样。

最佳答案

:hover 移动到 SVG (#icon) 元素,就像使用任何其他 HTML 结构一样:

#icon:hover #p1 {
  opacity: 0.2
}
#p1 {
    fill:none;
    stroke:black;
    pointer-events:all;
}
<svg id="icon" xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 48.086 48.09">
  <path id="p1" d="M1.006 48.088c-.256 0-.498-.103-.68-.288-.217-.207-.324-.45-.324-.71L0 33.213c0-.523.426-.95.95-.95s.95.427.95.95l.003 11.62L18.905 27.84c.18-.18.418-.278.672-.278.254 0 .493.1.672.28.37.368.37.972 0 1.342L3.236 46.188h11.64c.523 0 .95.428.95.95s-.426.95-.95.95H1.007zM28.51 20.535c-.253 0-.492-.1-.67-.28-.37-.37-.37-.972 0-1.342L44.85 1.906H33.21c-.525 0-.95-.426-.95-.95s.425-.95.95-.95h13.87c.256 0 .498.103.68.29.217.208.324.45.324.71l.002 13.873c0 .523-.426.95-.95.95s-.95-.426-.95-.95l-.002-11.62-17 16.997c-.18.18-.42.278-.673.278zM19.58 20.525c-.253 0-.492-.1-.67-.28L1.9 3.236 1.9 14.876c0 .525-.426.95-.95.95S0 15.4 0 14.876l.002-13.87c0-.257.104-.5.29-.68C.5.107.743 0 1.003 0L14.876 0c.524 0 .95.426.95.95s-.426.95-.95.95l-11.62.002 16.997 17c.37.372.37.975 0 1.345-.18.18-.42.278-.672.278zM33.21 48.086c-.524 0-.95-.427-.95-.95 0-.254.098-.492.277-.672.18-.18.418-.277.672-.278l11.62-.003L27.833 29.18c-.37-.37-.37-.973 0-1.343.18-.18.418-.278.67-.278.255 0 .494.098.673.277L46.183 44.85V33.207c0-.523.426-.95.95-.95s.95.427.95.95v13.87c0 .26-.105.5-.293.683-.207.216-.45.322-.71.322l-13.87.004z"/>
</svg>

因为您正在影响整个元素,所以不需要 #p 选择器,因此您可以进一步简化:

#icon:hover {
  opacity: 0.2
}
#p1 {
    fill:none;
    stroke:black;
    pointer-events:all;
}
<svg id="icon" xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 48.086 48.09">
  <path id="p1" d="M1.006 48.088c-.256 0-.498-.103-.68-.288-.217-.207-.324-.45-.324-.71L0 33.213c0-.523.426-.95.95-.95s.95.427.95.95l.003 11.62L18.905 27.84c.18-.18.418-.278.672-.278.254 0 .493.1.672.28.37.368.37.972 0 1.342L3.236 46.188h11.64c.523 0 .95.428.95.95s-.426.95-.95.95H1.007zM28.51 20.535c-.253 0-.492-.1-.67-.28-.37-.37-.37-.972 0-1.342L44.85 1.906H33.21c-.525 0-.95-.426-.95-.95s.425-.95.95-.95h13.87c.256 0 .498.103.68.29.217.208.324.45.324.71l.002 13.873c0 .523-.426.95-.95.95s-.95-.426-.95-.95l-.002-11.62-17 16.997c-.18.18-.42.278-.673.278zM19.58 20.525c-.253 0-.492-.1-.67-.28L1.9 3.236 1.9 14.876c0 .525-.426.95-.95.95S0 15.4 0 14.876l.002-13.87c0-.257.104-.5.29-.68C.5.107.743 0 1.003 0L14.876 0c.524 0 .95.426.95.95s-.426.95-.95.95l-11.62.002 16.997 17c.37.372.37.975 0 1.345-.18.18-.42.278-.672.278zM33.21 48.086c-.524 0-.95-.427-.95-.95 0-.254.098-.492.277-.672.18-.18.418-.277.672-.278l11.62-.003L27.833 29.18c-.37-.37-.37-.973 0-1.343.18-.18.418-.278.67-.278.255 0 .494.098.673.277L46.183 44.85V33.207c0-.523.426-.95.95-.95s.95.427.95.95v13.87c0 .26-.105.5-.293.683-.207.216-.45.322-.71.322l-13.87.004z"/>
</svg>

关于javascript - SVG 不仅悬停路径而且悬停所有 View 框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744115/

相关文章:

javascript - 如何向数组中的数组添加 JavaScript

javascript - 正则表达式在JS中排除符号前的字符

javascript - ES6 标记模板实用性

javascript - 如何在javascript中使svg动画循环连续

svg - c3.js donut chart : Making the separator line visible on a 100% arc?

javascript - 将 JSON 文件从 webpack 主包移动到自己的文件

javascript - 使用javascript从给定单词向后匹配

javascript - 指针事件 : none VML raphael solution

javascript - 在 mxGraph javascript 中将 XML 转换为 SVG

svg - 如何编辑 Font Awesome(或包含我自己的图标)?