【发布时间】:2020-08-07 09:05:57
【问题描述】:
我有什么:
#poly-1:hover {
stroke: green;
}
<svg width="1000" height="500" id="chart-main-canvas" style="background-color: bisque; z-index:5000;">
<path id="poly-1" d="M 5,10 C 24,88 60.99999999999998,322 100,400 C 139,478 149,470 200,400 C 251,330 295,30.000000000000007 355,50 C 415,70 470.99999999999994,410 500,500" fill="none" stroke="red" style="z-index:6000;"></path>
</svg>
如果我将鼠标准确地悬停在 path 上,这是一项棘手的任务,它会将颜色变为绿色。
我想要做的是让这条路径的悬停区域更大,所以我可以将光标移动到靠近path 区域的某个位置+-5px,它仍然会改变颜色。
我知道我能做的只有两种方法:
- 使
stroke-width变大,但我不希望它的实际大小与红色增加。 - 使用我的主路径创建具有更大
stroke-width的不可见复制路径,并添加条件,如果我将鼠标悬停在其上 - 我的主路径将改变颜色。
但是有什么简单的方法可以做到吗?
【问题讨论】:
-
我会选择选项 2。为什么你认为这很困难?
-
@RobertLongson 我是这个绘图的新手,只是想问一下我是否让事情变得复杂
-
试试这个:
<svg width="1000" height="500" id="chart-main-canvas" style="background-color: bisque; z-index:5000;"> <defs><path id="poly-1" d="M 5,10 C 24,88 61,322 100,400 C 139,478 149,470 200,400 C 251,330 295,30 355,50 C 415,70 471,410 500,500" fill="none" ></path></defs> <g id="group"> <use xlink:href="#poly-1" stroke-width="10" pointer-events="stroke"/> <use class="use" xlink:href="#poly-1" /> </g> </svg>使用这个 CSS:#group .use{stroke:red} #group:hover .use{ stroke: green; } -
@enxaneta 我认为这种方式是最简单的,你只是接受了我的假设。如果你写在下面,我会把它作为答案