想实现这样一个需求,点击不同的tab时,高亮对应的线,目前使用svg写的,但是三角形的颜色没办法跟随线去控制。
尝试了使用currentColor,但是并没有达到期望值。
demo是使用hover代替点击事件,原以为marker-end之后,三角会属于当前路径的子集,所以想着给三角一个currentColor
,但是实际尝试下来发现无法达到预期。于是代码由一个三角形改成了三个,目前只能通过单独去修改对应的路径才能实现需求。
期望可以使用一个三角形,鼠标经过不同线时,高亮对应线条及其尾部三角形。
代码段
要实现点击不同Tab时高亮对应线条及其尾部三角形,你可以利用SVG的CSS样式和JavaScript事件处理。下面是一个简化的解决方案:
定义一个类(例如highlight
),用于设置高亮状态的样式。
.highlight { stroke: red; /* 假设你想要的高亮颜色 */ fill: red; /* 假设你想要的高亮颜色 */}
确保你的SVG线条和三角形都有唯一的类或ID,这样可以通过CSS和JavaScript单独选中它们。
<svg width="400" height="200" xmlns="http://www.w3.org/2000/svg"> <line class="line" id="line1" x1="50" y1="50" x2="200" y2="50" stroke="black" stroke-width="3" marker-end="url(#triangle)" /> <line class="line" id="line2" x1="50" y1="100" x2="200" y2="100" stroke="black" stroke-width="3" marker-end="url(#triangle)" /> <!-- 更多的线条... --> <defs> <marker id="triangle" viewBox="0 -5 10 10" refX="10" refY="0" markerWidth="6" markerHeight="6" orient="auto"> <path d="M 0 -5 L 10 0 L 0 5 z" fill="black" /> </marker> </defs></svg>
使用JavaScript监听每个线条的点击事件,并添加或移除highlight
类。
// 获取所有的线条元素const lines = document.querySelectorAll('.line');// 为每个线条添加点击事件监听器lines.forEach(function(line) { line.addEventListener('click', function() { // 移除所有线条的高亮状态 lines.forEach(function(otherLine) { otherLine.classList.remove('highlight'); }); // 为被点击的线条添加高亮状态 this.classList.add('highlight'); // 假设三角形使用相同的颜色,不需要额外处理 // 如果需要单独控制三角形,你可能需要修改三角形的颜色或者引用 });});
marker-end
添加的,并且你想要三角形颜色和线条颜色一致,那么你可能需要为每个线条定义不同的marker
,并在点击时修改marker
的fill
属性。根据你的具体需求,你可能需要对上述代码进行适当的调整。如果需要更详细的指导,请提供更多的SVG结构和代码示例。
本文向大家介绍如何在HTML5 SVG中画一条线?,包括了如何在HTML5 SVG中画一条线?的使用技巧和注意事项,需要的朋友参考一下 SVG代表可伸缩矢量图形,是一种用于描述XML中的2D图形和图形应用程序的语言,然后由SVG查看器呈现XML。大多数网络浏览器可以显示SVG,就像显示PNG,GIF和JPG一样。 要在HTML SVG中绘制一条线,请使用SVG <line>元素。 示例 您可以尝试
svg图标是可点击的。 示例代码: 错误: 没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“/*[@id=“SearchForm”]/div[1]/span/div[1]/div[2]/svg/path”}
SVG 曲线 - <polyline> 实例 1 <polyline> 元素是用于创建任何只有直线的形状:Sorry, your browser does not support inline SVG. 下面是SVG代码:<svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <polyline points="20,20 40,25 60,4
SVG 直线 - <line> <line> 元素是用来创建一个直线: 下面是SVG代码: <svg xmlns="http://www.w3.org/2000/svg" version="1.1"> <line x1="0" y1="0" x2="200" y2="200" style="stroke:rgb(255,0,0);stroke-width:2"/> </svg> 对于Ope
给饼图添加点击事件,点击对应区块放大,再次点击正常,这种交互如何实现呢?
我有一个图标svg喜欢: 它显示很好,但我想在某些情况下改变颜色(如悬停或选择) 我用过: 它不会改变颜色。任何帮助都将不胜感激。