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

使用CSS变量实现非关联元素悬停显隐的方法

问题解答

原有写法失效原因

CSS自定义属性(CSS变量)存在DOM作用域限制:你在#copyright-ft:hover下修改的--copy-vsb变量,仅对#copyright-ft自身和它的后代元素生效。但#copyright-ft-details是和前者平级、无嵌套的独立元素,无法读取到这个被修改的变量值,自然不会触发显示效果。

纯CSS实现方法

完全不需要JavaScript,利用CSS兄弟选择器即可实现,你的HTML结构里两个元素正好是前后相邻的兄弟节点,适配性很好。

修正后的代码

首先调整CSS,去掉作用域失效的CSS变量写法,改用相邻兄弟选择器匹配hover状态:

#copyright-ft
{
    position: absolute; 
    overflow: visible; 
    font-family: roboto, cus-roboto, sans-serif; 
    font-size: 70px; 
    padding-left: 25px; 
    padding-right: 22px; 
    color: rgba(0,0,0,0.45); 
    border: 4px rgba(236,96,202,0.24) solid; 
    border-radius: 80px; 
    top: 14px; 
    left: 25px; 
    padding-top: 10px; 
    padding-bottom: 7px;
}
#copyright-ft-details
{
    position: absolute; 
    overflow: visible; 
    font-family: roboto, cus-roboto, sans-serif; 
    font-size: 40px; 
    padding-left: 35px; 
    padding-right: 35px; 
    color: rgba(255,255,255,0.7); 
    border: 0px rgba(236,96,202,0.24) solid; 
    border-radius: 10px; 
    top: 325px; 
    left: 120px; 
    padding-top: 15px; 
    padding-bottom: 15px;
    background: rgba(0,0,0,0.7);
    /* 默认隐藏 */
    visibility: hidden;
}
/* 匹配悬停元素后方相邻的详情块,设置为显示 */
#copyright-ft:hover + #copyright-ft-details
{
    visibility: visible;
}

小提示:你当前的HTML写法存在规范问题——行内元素<span>不能嵌套块级元素<p>,建议把#copyright-ft的标签从<span>改成<div>,避免不同浏览器出现渲染异常。

扩展优化

如果想要实现平滑的淡入淡出效果,可以把visibility替换为opacity搭配pointer-events,支持CSS过渡动画:

#copyright-ft-details
{
    /* 替换原有visibility属性 */
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease;
    /* 其余原有样式保持不变 */
}
#copyright-ft:hover + #copyright-ft-details
{
    /* 替换原有visibility属性 */
    opacity: 1;
    pointer-events: auto;
}

如果后续两个元素中间插入了其他平级节点,只需要把相邻兄弟选择器+换成通用兄弟选择器~即可,只要详情节点在触发节点的DOM位置之后,就能被正常选中。


内容的提问来源于stack exchange,提问作者Soumya Roy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:39:19