YUI网页布局:自适应宽度的输入框
YUI中有一种布局思想:栅格决定宽度,内容决定高度,今天讨论的是自适应宽度的输入框,先上代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>宽度自适应输入框</title> <link rel="stylesheet" href="http://yui.yahooapis.com/3.0.0/build/cssreset/reset-min.css"> <style> .col{padding:10px;width:500px;background-color:yellow;} .fluid-input{display:inline-block;width:100%;overflow:hidden;} .fluid-input-inner{display:block;padding-right:10px;#zoom:1;} .fluid-input .text, .fluid-input textarea{border:2px #ccc solid;padding:3px;width:100%;} .fluid-input textarea{height:300px;} </style> </head> <body> <div class="col"> <b class="fluid-input"><b class="fluid-input-inner"><input class="text" type="text"></b></b> <b class="fluid-input"><b class="fluid-input-inner"><textarea></textarea></b></b> </div> </body> </html> 简单说一下原理: 为了有较好的体验,input[type=''text'']及textarea一般会有border值及padding值(鄙视某些padding设为0滴**儿),利用如下公式: .fluid-input-inner{padding-right:输入框左边框 + 输入框右边框 + 输入框左padding + 输入框右padding} 让输入框继承fluid-input-inner的宽度即可实现自适应;而IE6有个宽度超出自动撑开的bug,故再多套一层fluid-input,宽度100%,溢出隐藏即可。 col宽度随意,在宽度自适应布局中默认为auto,这里方便演示定了宽度。 这里由内而外解说,不过命名是由外而内的。 更进一步 focus时border变为4px咋整? 问的好(其实是偶自己在问),输入框focus后增加class=”focus”,即变为: <textarea class="focus"></textarea> CSS: .focus{position:relative;left:-2px;border-width:4px !important;} ———————— 乡民问答分隔线 ————————- 美女@jeannewoo反馈了个bug,IE6下textarea输入文字的时候就自己撑开了(昨晚下班路上@ivane也跟我说过,不过我没当回事,嘿~),我试了一下果真如此,解决方法很简单:触发fluid-input-inner的hasLayout即可。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |