想让标签贴在卡片右上角,结果飞到整个页面的右上角。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

.card { position: relative; }
.card .badge { position: absolute; top: 8px; right: 8px; }

父元素没有建立定位上下文,绝对定位向上找到了更外层或根元素。这一点先确认清楚,后面就不用反复试。

碰到「绝对定位参照」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。

改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

具体做法是,给父级设置相对定位;确认父级没有 transform 改变包含块;用偏移值微调位置。

改完照着核一遍,标签稳定贴在卡片右上角,缩放窗口位置不变。

作者 9823189