推荐直接用box-shadow实现hover发光边框,轻量易维护;基础设border,hover时加扩散阴影和transition;伪元素方案需absolute定位、精准缩放,属过度设计。
直接给卡片加 box-shadow 就够了,没必要非用
::before叠加高光边框——更轻量、更易维护、兼容性更好。推荐做法:hover 时加发光边框(box-shadow)
利用
box-shadow的多层投影能力,模拟“亮边”效果,视觉干净且性能好:
border: 1px solid #e0e0e0)box-shadow: 0 0 0 2px rgba(66, 153, 225, 0.4);transition 让亮起过程平滑:transition: box-shadow 0.2s ease;需注意几个关键点,否则容易错位或遮挡内容:
::before 必须设为 position: absolute,父容器(card)要加 position: relativetop: 0; left: 0; right: 0; bottom: 0; margin: -2px;opacity 或 box-shadow,避免突然显示造成闪烁不用伪元素,清爽实现“边框一亮”效果:
.cssCard {
border: 1px solid #ddd;
transition: box-shadow 0.2s ease;
position: relative; /* 为可能的伪元素留余地 */
}
.cssCard:hover {
box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.3);
}
基本上就这些。伪元素方案不是不行,但多数场景下属于过度设计——简单需求,优先选语义清晰、浏览器优化好的原生属性。