基本实现思路:
将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宽度随文字长度自适应操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]感谢网友“liufabin”提出的关于不支持FF的问题,第一个在FF下经过测试时支持的,第二个中的高度自适应不支持,我在网上找了一个JQUERY的插件,插件地址是:...
textarea根据内容自适应高度 组件 注意:要监听input事件改变value值 使用: 写个评论" bindinput="listenerinput"></autoheight_textarea>
react-input-autosize - React的自动调整大小输入框
不管哪种方式,Button的宽度在IE6、7下总是不能完美,接下来我们演示一个普通的Button,你可以用IE6或者IE7浏览器看看其显示宽度,然后对比Chrome或者IE8等浏览器,你会发现Bug的所在。 1、一个普通的Button: 可以很...
Vue输入自动宽度 Vue.js指令,用于调整文本输入的宽度以适合其内容。 安装 $ yarn add vue-input-autowidth 或者 $ npm install --save vue-input-autowidth 也可以在Unpkg上使用: ://unpkg....
下面小编就为大家带来一篇Input文本框随着输入内容多少自动延伸的实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
textinput###input自动宽度 autoinput.js###textarea自动高度 autotext.js###input,textarea字数限制插件 textlength.js
input type=”text” onkeydown=”this.onkeyup();” onkeyup=”this.size=(this.value.length>4?this.value.length:4);” size=”4″> 其中 size="4"就是定义初始的大小,如果这里没有定义,那就把this.size=...
我是流体布局控,经常会遇到文本框以及文本域宽度100%自适应显示的情况。 如下效果图: 在窄屏下,上面的文本框宽度也要跟着外部宽度变小。 难点对于文本框或者文本域,光标最好距离左侧边缘有一定的间距。因此,...
ICECSS 1.0 更新日志:2015年03月17日******-修改/修复-****** 再次调整按钮和表单、列表等等,使得ICECSS更加好看和优雅调整了表格的颜色使按钮、菜单等悬浮效果更加平滑修复.ice-form-icon会导致input的宽度不正确...
1. //引入layui标签 2. //body写代码 <... <div class=layui-input-inline> <select id=select name=modules lay-verify=required lay-search=> <option value=-1>--请选择--</option>
但是由于我希望图片样式是宽度固定,高度自适应的,而这个插件好像无法自适应高度,只能在固定的区域内显示图片,看的非常不舒服。 看了一下插件的源码,发现可以在预览图片时,调整图片高度。需要修改css和js,...
textarea自动调整大小 用法 您可以使用css选择器。 AutoSize.resize("#mytext") ; 演示版
3. 修正手机页面不自适应宽度问题 4. 修正查询结果页面开发模式JS会报错问题 asp txt 成绩查询系统 这是个最简单易用却又最非常实用的查询系统。广泛用于成绩查询,工资查询,物业费查询,证书查询等地方,宾...
宽度自适应可设置最小宽度 类名介绍 类名 作用 c-table-border 添加边框 c-table--noWrap 不换行 c-table--striped 斑马线表格 g-selectAll--main 复选框选择父元素 input type="checkbox" class="g-selectAll" 复...
11. input.type属性问题 3 12. event.srcElement问题 3 13. body载入问题 3 14. 事件委托方法 3 15. Table操作问题 3 16. 对象宽高赋值问题 3 Ø CSS 3 1. cursor:hand VS cursor:pointer 3 2. innerText在...