90896F9318B27B4C9BB14B421C3AB437_490_301.jpg

前言   表单设计应该是网页设计中最常遇上的,而一般表单就包括说明文字即标签,以及对应的文本框、文本区域等表单元素。此时就经常遇到一个设计问题,左侧的标签该左对齐呢还是右对齐?其实各有好处,使用左对齐的表单设计能让人很容易一扫就看清楚所有标签内容,坏处就是标签文字有长有短,短的标签离右边的表单元素远了,给找到对应文本框带来不便。右对齐呢,右对齐可以使得标签和表单元素贴紧,坏处就是左边的标签显得参差不齐。此时有一种改进方法,就是表单比较长的话就分为几组,几个一组就不会很明显了,如开心网的设计:
01917659D7B2FEC4843A06ECBBE121FB_458_423.jpg
现在网上的情况是标签右对齐表单占据主流。那如何实现标签右对齐,表单元素左对齐呢?

探索   实现的方法有多种,我们先看一些主流网站使用的方法。

  1. 开心网。开心网使用的方法核心点是把标签设置为块级元素,设置相同宽度和文字右对齐,之后设置float:left ,右边的表单元素也同样设置左浮动。这样做的好处是避开绝对定位布局,让浮动来实现定位对齐。缺点呢,可能就是html的嵌套层次多了点:
    7380741D603B331F6160BCA883F2E013_457_169.jpg
    总的来说,开心网的实现方法还是很不错的,瑕不掩瑜;
  2. 人人网。人人网的方法和开心网大同小异,值得称赞的是它的html层次比较简洁。唯一比较特别是它使用 dl\dt\dd 作为标签:
    555C85CB633570C5DE10390E84C95A3C_500_104.jpg
    从html语义上来说也有点怪怪的,我试着去除样式,也不见得很特别:
    41237C916730DF89777C308CDA5DF004_421_118.jpg
  3. 腾讯微博注册页面。它用的是表格来布局,好处很显然,html代码和CSS代码的编写简单了很多,坏处也很明显,增加了一堆无语义标签同时加深了代码层次:
    6259BC6309107C05D29D42DFA55AA016_397_150.jpg

各个网站的实现各有优劣,但如果从减少嵌套层次和语义上说,没有很满足我要求的方法。于是我打算自己写。

实现  html部分。html部分从语义上考虑,使用了最简洁的表达方式,毕竟html是用来表达内容的,无语义标签越少越好:

<formclass="editPart"><fieldset><legend>评论</legend><p><label>昵称</label><inputtype="text"class="commentInput"tabindex=1/></p><p><label>邮箱</label><inputtype="text"class="commentInput"tabindex=2/></p><p><label>评论内容</label>

<divclass="lightEditor"><pclass="editor-toolbar"><inputtype="button"class="editor-toolbar-button fb btnActive"title="粗体"value="B"/><inputtype="button"class="editor-toolbar-button fi"title="斜体"value="I"/><inputtype="button"class="editor-toolbar-button unl"title="下划线"value="U"/></p><iframeid="myFrame"class="editorFrame"style="height:162px;"frameborder="0px"tabindex=3></iframe></div>

</p><inputtype="submit"class="commentSubmit"value="提交"/></fieldset></form>

CSS部分。我将布局部分都交给CSS来处理,这样符合网站重构的思想。此时我试验了两种方法:

  1. 第一种方法的核心点是:将label标签都设置为行内块级元素(display:inline-block),然后就可以对它们设置宽度了,设置统一宽度和文字右对齐,这样就搞定了。
    这种方法实现还是挺简单的,而且能兼容IE6、IE7,因为它们虽然不支持 display:inline-block ,但这句代码能触发hasLayout,使得行内元素可以设置宽度。缺点呢?一开始没发现,但是当我添加富编辑器部分后,效果如下:
    556ED44D8F662EC0A59B39400254E8B2_403_344.jpg
    此时无法让富文本编辑器跟在标签后面,实现本文开头那种效果!晕,当然我可以对富文本编辑器单独设置 position:absolute 来进行绝对定位,但这样通用性就差了。而且还有一点不好,提交按钮默认无法与文本框左对齐。
  2. 第二种方法。首先是表单元素左对齐的实现,我对form设置了 padding-left:80px ,这样fieldset的左边就空出了一定空间(等下用到)。此时fieldset里面的元素肯定是左对齐啦。接着是标签右对齐,我对fieldset设置 position:relative 作为定位标准,对 label 标签设置 position:absolute,将它们从正常文档流独立出来,然后呢,设置为块级元素,右对齐,相同宽度,向左移动到空出的位置,搞定。听起来很复杂,其实代码不复杂:
    .editPart{padding:10px 15px 15px 80px;}.editPart fieldset{position:relative;border:0}/*.editPart label{display:inline-block;width:60px;text-align:right}*/.editPart label{position:absolute;left:-72px;width:60px;text-align:right;margin-top:5px}

    (上面的 .editPart 是我应用在 form 上面的类)。实际效果就是本文开头的样子了。缺点呢?可能就是使用 position:absolute 多多少少会有一点后遗症吧。

总结   写本文,我并不是想强调我的方法就比别的主流网站的方法好,见仁见智吧。只是我认为我的方法更符合网站重构的思想多一点。另一个目的,就是感慨,前端开发这一部分很多时候对同一问题我们可以有多种解法,充满了未知性和探索的乐趣,这也是我喜欢前段的原因吧。如果想要看到完整的代码样式,可以到我的个人首页​,打开右边的留言功能,审查表单元素(注:直接查看源代码什么都看不到,要用chrome、IE等的开发人员工具才行)

转载于:https://www.cnblogs.com/weberpan/archive/2011/10/07/2200333.html

CSS:标签右对齐,文本框左对齐的实现相关推荐

  1. css文本向左对齐怎么设置,css怎么设置文本左对齐

    在css中,可以利用text-align属性来设置文本左对齐,只需要给文字所在标签添加"text-align:left"样式即可.text-align属性用于指定元素中的文本的水平 ...

  2. html div居中左对齐,div对齐 CSS实现DIV居中对齐 div居右对齐 div居左对齐

    div对齐 CSS实现DIV居中对齐 div居右对齐 div居左对齐 使用CSS浮动属性实现DIV各种对齐,比如DIV层左对齐,DIV居中对齐,DIV居右对齐等(DIV靠右 居中 靠左对齐介绍篇) 实 ...

  3. C++对齐输出(左对齐和右对齐)

    语法: 头文件:#include<iomanip> std::left左对齐 std::right右对齐 setw(宽度) 例: #include<iostream> #inc ...

  4. word段落居中的快捷键_段落快捷键是什么-段落居中对齐快捷键-段落左对齐的快捷键...

    WPS使用,段落调整快捷键没了,求解救! 右边小箭头点开 有个工具---选项--- 再设置一下最后两项 看看是否有选上 WPS,选中文字左边有个段落快捷设置的选项,取消以后,怎幺恢复它呢? 1.[经典 ...

  5. Python使用tkinter库制作带有Laber标签、Entry文本框、Progressbar进度条、text日志框等元素的GUI操作界面

    本文通过实例介绍Python的tkinter库的title.iconbitmap.geometry.attributes.grid等类的功能,并制作带有Laber标签.Entry文本框.Progres ...

  6. mysql 左对齐_CSS:左对齐标签,右对齐(CSS : Align label left, text right)

    CSS:左对齐标签,右对齐(CSS : Align label left, text right) 我有这样的文字: AAA : aaaaaaaaaaaaaaaaaa B : bbbbb CCCCC ...

  7. html让文本框左剧中对齐_HTML 样式 CSS

    CSS (Cascading Style Sheets) 用于渲染HTML元素标签的样式. Look! Styles and colors Manipulate Text Colors,  Boxes ...

  8. html让文本框左剧中对齐_HTML的部分知识

    1.标签 常用的单标签 < !- xx –>:注释标签 快捷键:ALT+/ < br/>:换行标签 注释:自动生成空白行 < hr/> :水平线标签 常用的双标签 ...

  9. html让文本框左剧中对齐_Python—Text:功能强大的文本框

    一.组件简介 Text 组件,文本框,一个非常灵活而又强大的组件,主要用于显示和处理多行文本. Text 组件用于显示文本文档,包含纯文本或格式化文本,比如使用不同字体.嵌入图片.显示链接,甚至是带 ...

  10. html div布局位置横,div位置布局 CSS实现DIV居中对齐 div居右对齐 div居左对齐

    使用CSS浮动属性实现DIV各种对齐,比如DIV层左对齐,DIV居中对齐,DIV居右对齐等(DIV靠右 居中 靠左对齐介绍篇) 实现DIV对齐用到关键属性有两个,一个为float一个为margin. ...

最新文章

  1. mysql如何导入JSON数据-navigate管理数据库,导入JSON数据不显示。需要整体关闭再打开!
  2. 实战Cacti网络监控(1)——基础安装配置
  3. 统计消息总数_2019年度我国出国留学人员总数为70.35万人
  4. pycharm的debug
  5. RTX——第10章 任务调度-抢占式、时间片和合作式
  6. LeetCode第617题:合并二叉树
  7. Android Flutter实践内存初探
  8. 个人电脑完整重装WINDOWN XP 详解--博主推荐
  9. 祝贺父亲节快乐的python代码_父亲节快乐的祝福语贺词(最新)
  10. 启用Administrator账户解决windows10家庭版修改c盘Users下的中文用户名
  11. 一键去“码”的AI,还能认出带上口罩的脸
  12. 根据日期、时间和当地经纬度计算太阳天顶角和方位角的原理
  13. 为不喝的朋友准备的!如何委婉地拒绝劝酒
  14. C语言使用fgetc()函数
  15. 在本地写一个以市净率为因子的回测结果
  16. 政策解读 | 传言PayPal要封杀独立站卖家?绝对不可能!
  17. GPS 入门 8 —— GPS定位基本原理浅析
  18. 网站收录查询-批量网站收录查询软件
  19. 成都华为OD面试(补充中)
  20. SPSS调查问卷多重响应分析【011-3期】

热门文章

  1. 红米Redmi品牌独立后首发新品 雷军:『友商就不要用性价比这个词了』...
  2. radio change事件
  3. 【好书试读】Docker全攻略
  4. Asp.Net Mvc4分页,扩展HtmlHelper类
  5. 使用ubuntu自带的文件管理器通过ssh管理远程文件
  6. Varnish加速网站图片显示
  7. 用R读取Excel的新方法
  8. IDEA 这样配置注释模板,让你高出一个逼格!
  9. 好险!一入职,就遇到MySQL这么大Bug!差点背锅走人~
  10. 阿里巴巴16字真言 | 管理者的基本要求是什么?