输入框(input)的宽度根据内容自适应

一、概述

这可以通过使用CSS的width属性和一些JavaScript来完成。

二、案例

1、基础案例

HTML部分:

<input type="text" id="autoWidthInput" oninput="adjustWidth(this)">

在这个示例中,我们创建了一个<input>元素,并为它指定了一个id属性,以便稍后在JavaScript中引用它。我们还使用oninput属性来调用adjustWidth函数,该函数将在输入框的内容发生变化时被触发。

JavaScript部分:

function adjustWidth(inputElement) {
  // 获取输入框中的文本内容
  var inputText = inputElement.value;

  // 获取文本内容的宽度
  var textWidth = getTextWidth(inputText);

  // 设置输入框的宽度,加上一些额外的像素作为填充
  inputElement.style.width = textWidth + 10 + "px";
}

function getTextWidth(text) {
  // 创建一个隐藏的临时元素,用于计算文本宽度
  var tempElement = document.createElement("span");
  tempElement.style.visibility = "hidden";
  tempElement.style.whiteSpace = "pre"; // 保持空格和换行的格式
  tempElement.style.display = "inline-block";
  tempElement.textContent = text;

  // 将临时元素添加到文档中
  document.body.appendChild(tempElement);

  // 获取文本的宽度
  var width = tempElement.offsetWidth;

  // 从文档中移除临时元素
  document.body.removeChild(tempElement);

  return width;
}

在这段JavaScript代码中,adjustWidth函数被调用以根据输入框中的文本内容来调整输入框的宽度。它首先获取输入框的文本内容,然后使用getTextWidth函数来计算文本的宽度,并将宽度设置为输入框的width属性。getTextWidth函数创建一个临时的隐藏元素,用于计算文本的宽度,然后返回计算得到的宽度。

通过这种方式,输入框的宽度将根据输入的内容自动调整,以适应文本的宽度。你可以根据需要进一步自定义样式和调整函数中的像素值以满足你的要求。

2、进阶案例

基础案例需要给每个input元素绑定方法,这样方法就不能放入闭包中。

我们可以通过 .self-adaption-input 类来实现对 input 元素的方法绑定,并且可以支持还未创建的input

$('body').on('input', '.self-adaption-input', function(event) {
    $(this).width(getTextWidth($(this).val())+10);
});
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值