
通过调整 css 中 `.login` 元素在 `#chk:checked` 状态下的 `transform` 值、显式设置 `height: 100%`(或 `500px`)及重置 `border-radius`,可确保登录区域完全覆盖注册区域,消除残留可见部分。
在你当前的滑动登录/注册切换效果中,.login 区域使用 transform: translateY(-180px) 初始偏移,并在复选框勾选时通过 #chk:checked ~ .login 触发位移动画。但问题在于:位移量 translateY(-500px) 不足以使其完全上移至父容器顶部,且其原始 height: 460px 和圆角 border-radius: 60% / 10% 导致视觉上无法填满整个 .main 容器(高 500px),从而露出底部注册内容。
✅ 正确解法是三步协同修正:
- 精确控制位移终点:将 #chk:checked ~ .login 的 transform 改为 translateY(-500px)(即完全向上移动自身高度),但更健壮的做法是设为 translateY(0) 并配合 top: 0 + position: absolute —— 不过本例采用更轻量的 transform 方案,需确保数值匹配容器高度;
- 强制撑满父容器:添加 height: 500px(与 .main 高度一致)或更推荐 height: 100%,避免因内容高度不足导致背景透出;
- 清除干扰样式:将 border-radius: 60% / 10% 重置为 border-radius: 0,防止圆角切割造成视觉缺口。
以下是关键修复代码(整合进你的 css):
#chk:checked ~ .login { transform: translateY(-500px); /* 精确上移至顶部 */ height: 100%; /* 自适应父容器高度,比写死 500px 更健壮 */ border-radius: 0; /* 移除圆角,确保边缘严丝合缝 */ }
⚠️ 注意事项:
- 原 .login 的 height: 460px 是硬编码值,若未来修改 .main 高度,需同步更新;使用 height: 100% 可自动继承,更易维护;
- transform 的位移值必须 ≥ .main 高度减去 .login 初始 height,此处 500px – 460px = 40px 的初始偏移已存在,因此 -500px 能确保其顶部对齐 .main 顶部;
- 所有 ~(通用兄弟选择器)依赖 html 中 .login 必须位于 #chk 后方且与 .signup 同级——你的结构符合此要求,无需调整 HTML;
- 若仍见细微缝隙,检查是否有默认 margin 或 padding 未归零(如 form 标签),建议全局重置:form { margin: 0; padding: 0; }。
最终效果:点击“Login”按钮(即勾选隐藏复选框)后,.login 区域将无间隙、无圆角、无缩放地完全覆盖整个 .main 容器,注册表单彻底不可见,实现真正意义上的全区域切换。