超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
嗨,我来帮你一步步拆解这个问题:
这是最关键的点——当你用<object>标签嵌入SVG时,浏览器会给SVG创建一个独立的文档上下文,主页面的外部style.css根本无法穿透这个隔离去控制SVG内部的元素样式。这就是为什么你修改a:hover path完全没效果,而cursor可能生效的原因:cursor要么是<object>本身的样式,要么是浏览器对可点击元素的默认行为,和SVG内部元素的样式不是一个层级。
<object>
style.css
a:hover path
你提到“About”悬停时stroke变白、“Pricing”没变化,大概率是因为SVG文件内部本身就给About对应的path设置了stroke属性,而Pricing的path没有,或者SVG内部有局部样式只作用在About上,但因为<object>的隔离,你外部的CSS根本干预不了这些内部元素。
stroke
最简单直接的办法就是放弃<object>,把SVG代码直接写在HTML页面里。这样主页面的CSS就能直接选中SVG内部的a、path元素了:
a
path
<!-- HTML页面内直接插入SVG --> <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> <a href="#pricing"> <path d="M10 20 L30 20 L30 40 L10 40 Z" fill="#ccc" /> <text x="20" y="35" text-anchor="middle">Pricing</text> </a> <a href="#about"> <path d="M50 20 L70 20 L70 40 L50 40 Z" fill="#ccc" stroke="#000" /> <text x="60" y="35" text-anchor="middle">About</text> </a> </svg> <!-- 主页面的style.css --> <style> /* 直接控制SVG内部的a hover状态 */ svg a:hover path { fill: #ffffff; stroke: #ffffff; /* 统一控制stroke */ } </style>
如果必须用<object>嵌入SVG,那就在SVG文件本身的代码里添加<style>标签,把悬停样式写在SVG内部:
<style>
<!-- 你的SVG文件内容 --> <svg viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg"> <style> /* 直接在SVG内部定义hover样式 */ a:hover path { fill: #ffffff !important; /* 如果path有inline fill,加!important提高优先级 */ } /* 单独控制About的stroke */ a#about-link:hover path { stroke: #ffffff; } </style> <a href="#pricing"> <path d="M10 20 L30 20 L30 40 L10 40 Z" fill="#ccc" /> <text x="20" y="35" text-anchor="middle">Pricing</text> </a> <a href="#about" id="about-link"> <path d="M50 20 L70 20 L70 40 L50 40 Z" fill="#ccc" stroke="#000" /> <text x="60" y="35" text-anchor="middle">About</text> </a> </svg>
如果需要动态控制,也可以监听<object>的加载事件,获取SVG文档对象后添加样式:
const svgObject = document.querySelector('object'); svgObject.addEventListener('load', () => { const svgDoc = svgObject.contentDocument; // 给所有a标签添加hover事件 const links = svgDoc.querySelectorAll('a'); links.forEach(link => { link.addEventListener('mouseover', () => { link.querySelector('path').setAttribute('fill', '#ffffff'); }); link.addEventListener('mouseout', () => { link.querySelector('path').setAttribute('fill', '#ccc'); // 恢复原有颜色 }); }); });
fill="#xxx"
!important
<a>
xlink:href
href
内容的提问来源于stack exchange,提问作者Pixie
模型自由,工具不限,最新支持 DeepSeek-V4 系列与 GLM-5.1,受邀下单叠加9.5折
7×24在线专属智能伙伴
创作无限可能,一键生成电影级 AI 视频
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠