当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > YUI网页布局:自适应宽度的输入框

CSS样式表
DIV和CSS排版中制作细线条的方法小结
在解决ul居中问题时想到的几点
网页编辑中CSS样式表技巧总结
一个老外弄的Clearing floats(清除浮动的方法)
常用的DIV+CSS的基本框架结构但不推荐都放一个div里
无js5款纯div+css制作的弹出菜单标准
超强推荐CSS打造经典鼠标触发显示选项
CSS网页布局入门教程5:二列宽度自适应
CSS网页布局入门教程6:左列固定,右列宽度自适应
CSS网页布局入门教程7:二列固定宽度居中
CSS网页布局入门教程9:用CSS设计网站导航——横向导航
CSS网页布局入门教程10:带当前标识的标签式横向导航
CSS网页布局入门教程11:带当前标识的标签式横向导航图片美化版
CSS网页布局入门教程12:纵向导航菜单
CSS网页布局入门教程13:下拉及多级弹出式菜单
CSS网页布局入门教程14:纵向下拉及多级弹出式菜单
解读css发展历史
让用户自己控制网页字体的大小的css书写方法
CSS注释、命名、继承性、样式排序等CSS技巧的小结
CSS标签切换代码实例教程 比较漂亮

CSS样式表 中的 YUI网页布局:自适应宽度的输入框


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-03-17   浏览: 175 ::
收藏到网摘: n/a

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即可。