HTML Input text标签宽度自适应内容
方法一:CSS + Javascript实现
在HTML中定义element,同时定义并注册oninput事件
<label class="input-sizer" data-value="default value">
<input class="number-input1" type="text" oninput="this.parentNode.dataset.value = this.value" size="15" value="default value" placeholder="placeholder" >
</label>
在CSS中定义样式
.number-input1{
font-family: inherit;
font-size: inherit;
}
.input-sizer {
display: inline-grid;
vertical-align: top;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
position: relative;
font-family: inherit;
font-size: inherit;
}
.input-sizer::after
{
content: attr(data-value) " ";
visibility: hidden;
font-family: inherit;
font-size: inherit;
white-space: pre-wrap;
}
方法二:纯Javascript实现
在HTML中定义element,注册oninput事件
<input type="text" oninput="setWidthByContent(this);">
在Javascript中定义oninput事件
setWidthByContent = (self, font = null) => {
// re-use canvas object for better performance
const canvas = setWidthByContent.canvas || (setWidthByContent.canvas = document.createElement("canvas"));
const context = canvas.getContext("2d");
context.font = font || getComputedStyle(self).font || getComputedStyle(document.body).font;
const metrics = context.measureText(self.value);
self.style.width = "" + metrics.width + "px";
return metrics.width;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!