标签:做了 屏幕 ado 自身 表单元素 lin 前端 isp google
最近做了百度前端学院一个小任务,其中涉及到表单布局的问题, 它要处理的布局问题:左边的标签要右对齐,右边的输入框、单选按钮等要实现左对齐。
从开始入门就被告知table布局已经过时了,当时只知道其然不知其所以然,于是我尝试用了div布局和table布局两种解法。
先上效果图:
HTML结构:
<form action="" class="clearfix" id="reg"> <table class="table-form"> <tbody> <tr> <td><label for="address">请输入邮箱地址</label></td> <td><input class="i-inpt" type="text" id="address" placeholder="这是一个文本输入框"></td> <!--<td><input type="text"></td>--> </tr> <tr> <td></td> <td colspan="2"><span class="help-text">邮箱地址请按要求格式输入 </span></td> </tr> <tr> <td><label for="password">请输入密码</label></td> <td><input class="i-inpt" type="password" id="password" placeholder="这是一个文本输入框"></td> </tr> <tr> <td><label for="confirm-password">请重新输入密码</label></td> <td><input class="i-inpt" type="password" id="confirm-password" placeholder="这是一个文本输入框"></td> </tr> <tr> <td></td> <td colspan="2"><span class="help-text">密码请问6-16位英文数字</span></td> </tr> <tr> <td><label for="sex">性别</label></td> <td> <label class="sex" for="male"><input id="male" type="radio" checked="checked" name="sex">男</label> <label class="sex" for="female"><input id="female" type="radio" name="sex">女</label> </td> </tr> <tr> <td><label for="city">城市</label></td> <td> <select name="select" id="city"> <optgroup label="热门城市"> <option value="1">北京</option> <option value="2">上海</option> <option value="3" selected="">广州</option> <option value="4">深圳</option> </optgroup> <optgroup label="最近访问的城市"> <option value="1">中山</option> <option value="2">湛江</option> <option value="3">佛山</option> <option value="4">南京</option> </optgroup> </select> </td> </tr> <tr> <td><label for="favorite">爱好</label></td> <td> <label class="hobbies" for="sport"><input id="sport" type="checkbox" name="favorite" value="运动">运动</label> <label class="hobbies" for="art"><input id="art" type="checkbox" name="favorite" value="艺术">艺术</label> <label class="hobbies" for="science"><input id="science" type="checkbox" name="favorite" value="科学">科学</label> </td> </tr> <tr> <td><label for="description">个人描述</label></td> <td> <textarea id="description" name="description" rows="5" cols="30" wrap="physical" placeholder="这是一个多行输入框,输入您的个人描述"></textarea> </td> </tr> </tbody> <tr> <td colspan="2"> <button class="submit" type="submit">确认提交</button> </td> </tr> </table> </form>
CSS代码:
table, th, td { margin: 0; padding: 0; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; } /* * 1.实现表单标签和文本输入框的宽度一致。文本居右对齐,有一定内边距 * 2.设置表单内边距 */ /*使表格的左边标签都居右,且内边距为10px*/ .table-form { height: 100%; width: 100%; /*设置表单表格宽度,使在各浏览器宽度表现一致*/ } select { width: 4em; } .table-form tr td:first-child { text-align: right; padding: 10px; } .i-inpt { width: 250px; height: 18px; } .help-text { color: #a7a7a7; } label { cursor: pointer; /* 设置光标 */ } /*提交按钮*/ .submit { /*1.设置尺寸和有颜色的边框。 2.用border-radius生成圆角并应用文本阴影。 3.通过使用图像或Webkit特有的渐变功能应用渐变的背景*/ width: 100%; line-height: 1.5em; /* 使文本居中 */ background: #4090fd; border: 1px solid #989898; border-radius: 6px; box-shadow: 2px 2px 2px #ccc; color: #FFFFFF; font-size: 1.5em; text-shadow: 1px 1px 1px #666; }
<td class="short"><input type="text" id="username" class="text" /></td>
td.short{ width:155px;}
HTML结构:
<form action="" id="reg"> <div class="box"> <label class="u-label" for="address">请输入邮箱地址</label> <input type="text" id="address" placeholder="这是一个文本输入框" class="i-inpt"> </div> <div class="box"><span class="help-text">邮箱地址请按要求格式输入 </span> </div> <div class="box"> <label class="u-label" for="password">请输入密码</label> <input type="password" id="password" placeholder="这是一个文本输入框" class="i-inpt"> </div> <div class="box"> <label class="u-label" for="confirm-password">请重新输入密码</label> <input type="password" id="confirm-password" placeholder="这是一个文本输入框" class="i-inpt"> </div> <div class="box"><span class="help-text">密码请问6-16位英文数字</span> </div> <div class="box"> <label for="sex" class="u-label">性别</label> <label class="sex" for="male"><input id="male" type="radio" checked="checked" name="sex">男</label> <label class="sex" for="female"><input id="female" type="radio" name="sex">女</label> </div> <div class="box"> <label class="u-label" for="city">城市</label> <select name="select" id="city"> <optgroup label="热门城市"> <option value="1">北京</option> <option value="2">上海</option> <option value="3" selected="">广州</option> <option value="4">深圳</option> </optgroup> <optgroup label="最近访问的城市"> <option value="1">中山</option> <option value="2">湛江</option> <option value="3">佛山</option> <option value="4">南京</option> </optgroup> </select> </div> <div class="box"> <label for="favorite" class="u-label">爱好</label> <label class="hobbies" for="sport"><input id="sport" type="checkbox" name="favorite" value="运动">运动</label> <label class="hobbies" for="art"><input id="art" type="checkbox" name="favorite" value="艺术">艺术</label> <label class="hobbies" for="science"><input id="science" type="checkbox" name="favorite" value="科学">科学</label> </div> <div class="box"> <label for="description" class="u-label">个人描述</label> <textarea id="description" name="description" rows="5" cols="30" wrap="physical" placeholder="这是一个多行输入框,输入您的个人描述"></textarea> </div> <div class="box"> <button class="submit" type="submit">确认提交</button> </div> </form>
CSS样式:
.box { margin: 1em; /*overflow: hidden; !*清理浮动的影响*!*/ } /* 清理浮动*/ .box:after { content: "."; display: block; height: 0; visibility: hidden; clear: both; } .help-text { color: #a7a7a7; margin-left: 21em; } label { cursor: pointer; /* 设置光标 */ } .u-label { float: left; /*设置浮动,此时才能设置宽度,而又不换行*/ width: 20em; text-align: right; padding-right: 1em; } .i-inpt { float: left; width: 250px; height: 18px; } select { width: 4em; }
标签:做了 屏幕 ado 自身 表单元素 lin 前端 isp google
原文地址:http://www.cnblogs.com/jecyu/p/7123956.html