You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过DOM操作修改SVG线条stroke描边颜色不生效如何解决

问题根因

你当前的stroke属性定义在内部的子元素上,但你的JS代码一直操作的是外层的根节点,所以修改不会生效。

可选解决方法

方法一:直接修改line元素的stroke属性

不需要修改现有SVG结构,直接调整JS选择器选中子元素即可,同时优化了原React事件绑定逻辑避免内存泄漏:

useEffect(() => {
  const scrollFunction = () => {
    const lineEl = document.querySelector("#svg line")
    if (!lineEl) return
    if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 50) {
      document.getElementById("header").style.background = "red";
      document.getElementById("header").style.transition = "0.70s";
      document.getElementById("logotext").style.color = "white";
      lineEl.setAttribute("stroke","red")
    } else {
      document.getElementById("header").style.background = "";
      lineEl.setAttribute("stroke","#FF0A0A")
    }
  }
  window.addEventListener('scroll', scrollFunction)
  // 组件卸载时解绑事件避免内存泄漏
  return () => window.removeEventListener('scroll', scrollFunction)
}, []) // 空依赖确保只绑定一次事件

方法二:调整SVG结构把stroke属性移到外层

修改你的SVG代码,将上的stroke属性挪到标签上,子元素会自动继承父元素的stroke属性,你原有修改svg节点的代码就可以正常生效:

<svg id="svg" width="4" height="71" viewBox="0 0 4 71" fill="none" stroke="#FF0A0A" xmlns="http://www.w3.org/2000/svg">
  <line x1="2.49985" y1="0.0214264" x2="1.49985" y2="70.0214" stroke-width="8"/>
</svg>

内容的提问来源于stack exchange,提问作者Naman Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 13:18:04