基本实现思路:
将input的宽度设置为100%,这样就可以填充整个div的区域,然后在input的后面添加一个span元素,span的visibility属性设置为hidden不可见但占据文档流的位置,这时发现input排布在span的上面,于是把input的position属性设置为absolute决定定位,这样就可以将input覆盖在span的上面。在这里需要注意的时当input设置为absolute时,他的定位根据第一已定位的祖先元素,所以应把他的第一个父元素div设置成relative相对定位。然后你会发现input的宽度还是充满了整个文档,因为父元素为div他默认是填满他的父元素,但是如果把父元素设置成display:inline发现还是没效果,因为行内元素是不能设置宽度高度的,所以input的宽度就取了div的父元素body的宽度。这时就必须用到display:inline-block;这个css了。不要以为大功告成了,突然间你就会发现IE6 7不完全支持这个属性,可恨的浏览器。幸亏有了大牛们的hack
{
display:inline-block;
*display:inline;
*zoom:1;
}
这样就能在IE6 7中很好的实现了
最后html+css结果:
.container {
position:relative;
display:inline-block;
*display:inline;
*zoom:1;
}
.selfAdapta {
width:100%;
position:absolute;
}
input,span{
font-family:verdana,Arial,Helvetica,sans-serif;
font-size: 12px;
}
<div id="container" class="container">
<input type="text" class="selfAdapta"/>
<span style="visibility:hidden"></span>
</div>
接下来就是js的事儿了,简单的想法就是时刻监听着input的输入将input的输入值拷贝到span中,这样就可以让span撑大div元素,通过input的width:100%属性,input也就回随之变大
$(function(){
function valueChange(tid,sid){
var jsUserName = "";
if($.browser.msie) {// IE浏览器
$("#" + tid).get(0).onpropertychange = setJsUserName;
}else{ // 其他浏览器
setJsUserName();
$("#"+tid).get(0).addEventListener("input",setJsUserName,false);
}
// 设置span的值
function setJsUserName(){
$("#"+sid).text($("#"+tid).val());
}
}
valueChange("input","span");
});
(在IE6下还存在问题 ,有待改进)
在IE6下虽然用hack方法解决了inline-block问题但是,其元素还是必须设置宽度,才对里面的input实现Width:100%产生效果,但这样做就失去了宽度自适应的效果了,嗨...,没办法~。因为自己项目的原因只能通过将input的z-index属性设置为-1,让后面的元素显示在input的上方,在感觉上有了自适应的效果,看图:
因为span的原因,后面元素就被往后挤了
- 大小: 4.1 KB
分享到:
相关推荐
根据文档提供的示例,我们可以采用以下几种方法来实现input宽度的自适应: 1. 使用Vue的计算属性动态设置宽度 通过Vue的计算属性,我们可以根据输入内容的长度动态返回一个合适的宽度值。例如,我们可以设置一个...
标题“input 宽度自适应”涉及到的是网页表单元素中输入框(`<input>`)的宽度动态调整问题。在网页设计中,为了提供良好的用户体验,有时候需要让输入框的宽度根据用户输入的内容长度自动调整,即宽度自适应。这种...
"宽度自适应的按钮"是现代网页设计的一个重要特性,这种按钮能够根据其内容或者容器的宽度自动调整大小,以提供更好的用户体验。在响应式设计中,自适应按钮扮演着至关重要的角色,因为它能够在不同设备和屏幕尺寸上...
设计一个聊天气泡背景,使其能够自适应内容的宽度和高度,是一个提高用户体验的关键因素。本话题将深入探讨如何实现这样一个功能,并提供一个简单的示例(BgFitContentLabel)。 首先,我们需要理解聊天气泡的基本...
而当我们将INPUT的宽度设置为100%时,它的宽度将等于其父元素(这里是TD)的宽度,这可能会覆盖输入框的边框。 题目中提到的问题是,当INPUT的宽度设置为100%,其边框可能会被遮住。这是因为浏览器默认的样式处理...
本文将深入探讨一个常见的问题,即“Button在IE6、7下的自适应宽度问题”,并提供有效的解决方案。 在HTML中,按钮元素(Button)的创建有两种主要方式:直接使用`<button>`标签或使用`<input>`标签配合`type=...
`react-input-autosize`就是这样一个库,它专为React设计,能够自动调整输入框的宽度以适应用户输入的内容。这个库使得创建动态输入框变得更加简单,无需手动处理输入框尺寸变化的复杂逻辑。 `react-input-autosize...
本文将介绍如何使用JavaScript技术实现文本框宽度自适应输入文本的长度。 JavaScript是目前广泛使用的网页编程语言,它允许网页开发者在用户界面添加动态功能。JavaScript能够通过操作DOM(文档对象模型)来实现对...
textarea根据内容自适应高度 组件 注意:要监听input事件改变value值 使用: 写个评论" bindinput="listenerinput"></autoheight_textarea>
下载完是一个C#脚本 直接挂到带有InputFeild组件的Obj上就行 Obj的RectTransform min.x max.x pivot.x 都 设置为0
`width: 100%`则是让图片宽度自动扩展以填充其父容器的宽度,从而实现自适应。 4. 浮动清除与盒模型 文档中包含清除浮动的代码(#clear),以及使用box-sizing属性定义盒模型的行为: ```css * { -webkit-box-...
当我们在设计用户界面时,有时需要创建一个标签样式(Tag-style)的ViewGroup,这种组件通常包含多个标签,它们需要自动换行以适应有限的屏幕宽度,并且整个组件能自适应高度,以显示所有标签而不被截断。...
3. **JavaScript/jQuery监听事件**: 可以使用JavaScript或jQuery监听`input`或`keydown`事件,每当用户输入内容时,更新输入框的宽度。例如,使用jQuery: ```javascript $('.input-field').on('input', function()...
在样式部分,我们设置了`.auto-height-textarea`的宽度为100%,使其充满容器。 然而,IE浏览器有一个已知问题,即在某些情况下,`scrollHeight`属性可能不会正确反映textarea的高度。为了解决这个问题,我们需要...
Vue输入自动宽度 Vue.js指令,用于调整文本输入的宽度以适合其内容。 安装 $ yarn add vue-input-autowidth 或者 $ npm install --save vue-input-autowidth 也可以在Unpkg上使用: ://unpkg....
在网页设计中,有时我们需要创建一个输入框(Input Text),它能根据用户输入的内容自动扩展长度,以适应用户的输入需求。...这样的设计使得输入框能够自适应用户输入的文本长度,提高用户在填写表单时的交互体验。