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

如何实现文本框填充内容后浮动label保持悬浮不回落?

浮动标签效果修复方案

核心问题点

  • 输入框未添加required属性,:valid伪类无法正常生效,无法判断输入框是否已有内容
  • 仅定义了输入框聚焦时的标签上浮规则,未给输入框有内容的:valid状态添加相同的上浮规则,导致失焦后标签回落
  • 底部蓝色边框的:valid状态动画规则写错了选择器和位移方向,无法正常显示激活状态的底部边框

修复后的完整代码

HTML代码

<div class="main">
    <input class="textbox" type="text" required/>
    <label class="label-name">
        <span class="span-name">Name</span>
    </label>
</div>

CSS代码

.main{
    font-size:15px;
    position:relative;
    left:20%;
    overflow:hidden;
}
.textbox{
    height:30px;
    width:100%;
    color: grey;
    padding-top:20px;
    border: none;
    border-bottom: 1px solid black;
}
.label-name{
    position:absolute;
    bottom:0px;
    top:0px;
    padding:0px 2px 0px 2px;
    height:30px;
    width:100%;
    pointer-events:none;
}
.label-name::after{
    content:"";
    position: absolute;
    left:0px;
    bottom:-23px;
    height:30px;
    width:100%;
    border-bottom: 3px solid blue;
    transform: translateX(-100%);
    transition: transform 0.3s ease;
}
.span-name{
    position:absolute;
    bottom:-15px;
    transition: all 0.3s ease;
}
/* 同时适配聚焦和有内容两种状态下标签上浮 */
.textbox:focus + .label-name .span-name,
.textbox:valid + .label-name .span-name {
    transform: translateY(-150%);
    font-size: 13px;
    color: #5fa8d3;
}
.textbox:focus, .textbox:valid{
    box-shadow:none;
    outline:none;
}
/* 修正底部蓝线的触发规则和位移方向 */
.textbox:focus + .label-name::after,
.textbox:valid + .label-name::after {
    transform:translateX(0%);
}

效果说明

  • 输入框添加required属性后,只要有输入内容就会触发:valid状态
  • 标签上浮规则同时覆盖聚焦和有内容两种状态,输入内容后失焦标签会保持在顶部不会回落遮挡输入内容
  • 底部蓝色边框的动画逻辑修正后,聚焦和有内容状态下都会显示激活状态的蓝线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:36:02