IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

模拟宽度自适应的输入框

WEB前端开发 2010-11-24 23:10:19 累计浏览 3,093 次
本机暂存

很早以前就看过ytzong的《宽度自适应的输入框》这篇文章,感觉很不错,非常详实,YUI的栅格决定宽度,内容决定高度确实很实用。

个人认为ytzong的这个方法有两点非常麻烦:

  • <b><b><input type=”text”></b></b>需要套2层b标签;
  • 公式:.fluid-input-inner{padding-right:输入框左边框 + 输入框右边框 + 输入框左padding + 输入框右padding}也很麻烦经常忘记。

前段时间在一个项目中真好用到,同事啄米鸟模拟了一个宽度自适应的输入框,原理和ytzong的大致相同,但是解决了以上两个麻烦点。当然也有不足的地方。

看代码:

 
01 < !DOCTYPE HTML>
02 <html>
03 <head>
04 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
05 <style type="text/css">
06 h2 { margin:0; padding:10px 0; font-size:14px; }
07 .mod-retweet { background:#E4EFF4; border:1px solid #A8D1E0; padding:3px 5px 5px; margin-top:5px; }
08 .mod-retweet .mod-retweet-textarea { background-color: #FFFFFF; border:1px solid #64B2D1; margin-bottom:5px; overflow:hidden; padding:2px; position:relative; zoom:1 }
09 .mod-retweet .mod-retweet-textarea textarea {padding: 0;margin: 0; border:0 none; font-size:12px; height:80px; line-height:1.5em; width:100%; display:block }
10 .mod-retweet .mod-retweet-textarea input { border:0 none; font-size:12px; height:20px; line-height:1.5em; width:100%; }
11 </style>
12 <title>模拟宽度自适应的输入框</title>
13 </meta></head>
14   
15 <body>
16 <h1>模拟宽度自适应的输入框</h1>
17 <div class="mod-retweet">
18 <h2>模拟input的自适应:</h2>
19 <div class="mod-retweet-textarea">
20 <input type="text" name="textfield" id="textfield"/>
21 </div>
22 </div>
23 <hr />
24 <div class="mod-retweet">
25 <h2>模拟textarea的自适应:</h2>
26 <div class="mod-retweet-textarea">
27 <textarea maxlength="500" rows="5" cols="45" name="bookcontent"></textarea>
28 </div>
29 </div>
30 </body>
31 </html>

可以发现一个非常讨厌的地方就是:

  • textarea 和 input 文本输入框的边框是用套在其外层的容器的border来模拟的,textarea 和 input 文本输入框的本身边框 border:0 none。这样webkit下输入框focus后,输入框的边框在模拟的边框里面,体验上有点不爽。
  • 还有一点非常值得注意的是:textarea的padding和margin一定要重置为0,否则在webkit和opera下会有细小的bug。

查看demo:http://www.css88.com/demo/input-textarea-adaptive/

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,350)
  2. 50个活力和动感的网页设计-颜色的灵感 (累计阅读 34,442)
  3. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,404)
  4. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,933)
  5. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,849)
  6. 天朝第二代身份证号码的验证机制 (累计阅读 14,763)
  7. HTML 5 的data-* 自定义属性 (累计阅读 14,349)
  8. 分享一个JQUERY颜色选择插件 (累计阅读 14,223)
  9. 什么是全栈工程师? (累计阅读 14,038)
  10. 视觉设计前瞻实用性研究(PNVD) 第二期 (累计阅读 12,977)