`

input自适应宽度

阅读更多
基本实现思路:
  将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
分享到:
评论

相关推荐

    Vue实现input宽度随文字长度自适应操作

    根据文档提供的示例,我们可以采用以下几种方法来实现input宽度的自适应: 1. 使用Vue的计算属性动态设置宽度 通过Vue的计算属性,我们可以根据输入内容的长度动态返回一个合适的宽度值。例如,我们可以设置一个...

    input 宽度自适应

    标题“input 宽度自适应”涉及到的是网页表单元素中输入框(`&lt;input&gt;`)的宽度动态调整问题。在网页设计中,为了提供良好的用户体验,有时候需要让输入框的宽度根据用户输入的内容长度自动调整,即宽度自适应。这种...

    宽度自适应的按钮。button,方便实用

    "宽度自适应的按钮"是现代网页设计的一个重要特性,这种按钮能够根据其内容或者容器的宽度自动调整大小,以提供更好的用户体验。在响应式设计中,自适应按钮扮演着至关重要的角色,因为它能够在不同设备和屏幕尺寸上...

    聊天气泡背景自适应内容宽度高度

    设计一个聊天气泡背景,使其能够自适应内容的宽度和高度,是一个提高用户体验的关键因素。本话题将深入探讨如何实现这样一个功能,并提供一个简单的示例(BgFitContentLabel)。 首先,我们需要理解聊天气泡的基本...

    用CSS对TD中INPUT的宽度设置

    而当我们将INPUT的宽度设置为100%时,它的宽度将等于其父元素(这里是TD)的宽度,这可能会覆盖输入框的边框。 题目中提到的问题是,当INPUT的宽度设置为100%,其边框可能会被遮住。这是因为浏览器默认的样式处理...

    Button在IE6、7下的自适应宽度问题解决方法

    本文将深入探讨一个常见的问题,即“Button在IE6、7下的自适应宽度问题”,并提供有效的解决方案。 在HTML中,按钮元素(Button)的创建有两种主要方式:直接使用`&lt;button&gt;`标签或使用`&lt;input&gt;`标签配合`type=...

    react-reactinputautosizeReact的自动调整大小输入框

    `react-input-autosize`就是这样一个库,它专为React设计,能够自动调整输入框的宽度以适应用户输入的内容。这个库使得创建动态输入框变得更加简单,无需手动处理输入框尺寸变化的复杂逻辑。 `react-input-autosize...

    js实现文本框宽度自适应文本宽度的方法

    本文将介绍如何使用JavaScript技术实现文本框宽度自适应输入文本的长度。 JavaScript是目前广泛使用的网页编程语言,它允许网页开发者在用户界面添加动态功能。JavaScript能够通过操作DOM(文档对象模型)来实现对...

    微信小程序 内容自适应textarea表单组件(autoheight_textarea)

    textarea根据内容自适应高度 组件 注意:要监听input事件改变value值 使用: 写个评论" bindinput="listenerinput"&gt;&lt;/autoheight_textarea&gt;

    Unity UGUI组件 InputField 根本文本内容自适应大小

    下载完是一个C#脚本 直接挂到带有InputFeild组件的Obj上就行 Obj的RectTransform min.x max.x pivot.x 都 设置为0

    html图片自适应手机屏幕大小的css写法

    `width: 100%`则是让图片宽度自动扩展以填充其父容器的宽度,从而实现自适应。 4. 浮动清除与盒模型 文档中包含清除浮动的代码(#clear),以及使用box-sizing属性定义盒模型的行为: ```css * { -webkit-box-...

    解决自动换行,自适应高度。常见与标签样式的 ViewGroup

    当我们在设计用户界面时,有时需要创建一个标签样式(Tag-style)的ViewGroup,这种组件通常包含多个标签,它们需要自动换行以适应有限的屏幕宽度,并且整个组件能自适应高度,以显示所有标签而不被截断。...

    输入框自适应大小

    3. **JavaScript/jQuery监听事件**: 可以使用JavaScript或jQuery监听`input`或`keydown`事件,每当用户输入内容时,更新输入框的宽度。例如,使用jQuery: ```javascript $('.input-field').on('input', function()...

    Vue下textarea文本框根据内容自适应改变高度

    在样式部分,我们设置了`.auto-height-textarea`的宽度为100%,使其充满容器。 然而,IE浏览器有一个已知问题,即在某些情况下,`scrollHeight`属性可能不会正确反映textarea的高度。为了解决这个问题,我们需要...

    vue-input-autowidth:Vue.js指令,用于调整文本输入的宽度以适合其内容

    Vue输入自动宽度 Vue.js指令,用于调整文本输入的宽度以适合其内容。 安装 $ yarn add vue-input-autowidth 或者 $ npm install --save vue-input-autowidth 也可以在Unpkg上使用: ://unpkg....

    Input文本框随着输入内容多少自动延伸的实现

    在网页设计中,有时我们需要创建一个输入框(Input Text),它能根据用户输入的内容自动扩展长度,以适应用户的输入需求。...这样的设计使得输入框能够自适应用户输入的文本长度,提高用户在填写表单时的交互体验。

Global site tag (gtag.js) - Google Analytics