Form 表单 问题多多(上)

HTML5学堂 - 刘国利:2013年8月时,曾在给学生讲解WEB前端开发的HTML和CSS基本知识,学生要面对“表单”的制作。我喜欢把“表单”称之为初入前端的人的“恶梦”。不得不说,表单这个东西在前端开发的时候,问题是相当之多的,从嵌套规则、书写习惯,到浏览器的兼容问题,有很多需要注意的地方。根据行业变化,针对本篇文章进行了内容的调整,并重新书写部分内容,调整时间2015年08月03日。

本篇博文当中主要内容

form标签必不可少

form标签的嵌套规则

关于fieldset以及legend标签

在form标签中的基本属性

form标签必不可少

<form>标签用于为用户输入创建 HTML 表单。表单能够包含 input元素,比如文本字段、复选框、单选框、提交按钮等等。表单的作用在于能够向服务器端传送所需要的数据。由于涉及数据的提交,form标签自然必不可少啦。

form的嵌套规则

在嵌套规则当中,推荐form元素不直接包含行元素。而input属于行元素,换句话说,不推荐form元素直接包含input。之所以这么要求的目的是这种结构不便于布局。因此通常使用div、table、ul、fieldset等元素辅助。关于具体选择哪种块元素辅助表单元素完成布局,需要根据具体情况来定。随着行业的发展,fieldset逐渐被弃用。对于div元素,由于其无语义性的特点,用于布局方面还是比较受人认可的。有些开发者采用ul、ol让表单元素看上去更有秩序也并非不可,而table在纵向上的垂直居中功能,让不少开发者也很是喜欢(但是table的语义性上来说,属于数据表,个人感觉还是慎用吧~)

关于fieldset以及legend标签

fieldset有何作用呢?

首先,编写WML页面的时候要考虑到设备的屏幕很小。如果试图想把一个大的form在一个屏幕里面显示,就要指定那些标签保持在一个屏幕中。那么fieldset标签将这些标签捆绑在一个屏幕上。

另外,fieldset标签将表单内容的一部分打包,生成一组相关表单的字段。也就是所谓的分组。例如,我们可以将注册信息分组成“基本信息(一般为必填)”和“详细信息(一般为可选)”两组,那我们如何更好的来实现呢?我们可考虑在表单form中加入fieldset(对表单进行分组,一个表单可以有多个fieldset)和legend(说明每组的内容描述)

这个位置需要注意的一点是:

fieldset默认是带边框的,而legend默认一般显示在左上角。但在某些页面中我们不希望让fieldset和legend的默认样式或默认布局影响设计方案中的美观。解决方法是在CSS中将fieldset的border设置为0,legend的display设置为none就可以了。通常情况下我们会使用CSS的“重置”。统一将不同浏览器的显示效果清零,或者将一些不希望出现的默认样式清除掉。

最后要说的是,当时JavaScript还不足够强大的时候,很多功能是需要依附于fieldset标签来实现的,而今的JavaScript如雄狮般崛起,fieldset的功能完全可以通过JavaScript来实现,因此很多大网站中是不存在fieldset标签的~

在form标签中的基本属性

<form>标签当中,必须出现action,最好也注明“method”

action规定当提交表单时,向何处发送表单数据。在我们做测试的时候可以使用星号*代替

method规定如何发送表单数据。有get和post两种发送方式。

为更有利于SEO,可以再书写上name属性

关于提交方法get和post的区别,很明显的区别在于,url地址当中?后面的内容,也就是一个是保密,一个是非保密传送数据。

form 实战演示

说了这么多,来做个例子感受一下,先来看我们希望达到的效果。

先来做基本的布局处理,并放置三个基本块,分别是标题、姓名文本框、保存(提交)按钮:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>HTML5学堂</title>
        <meta author='独行冰海 - 利利'/>
        <style>
            /*HTML5学堂 - CSS reset*/
            html{color:#000;background:#FFF;font-family:Microsoft YaHei,sans-serif,Arial;}
            body,div,form,fieldset,legend,input,button,textarea,p{padding:0;margin:0;font-family:Microsoft YaHei,sans-serif,Arial;}
            fieldset,img{border:0;}            
            legend{color:#000;}
            input,button,textarea,select,optgroup,option{font-family:inherit; font-size:inherit;font-style:inherit;font-weight:inherit;}
            input,button,textarea,select{*font-size:100%;}
            /*HTML5学堂 - 表单样式处理*/
            .main{margin: 0 auto;width: 900px;height: 760px;background: #f9fbea;}
            form{width: 800px;height: 730px;padding: 0 50px 30px;}
        </style>
    </head>
 
    <body>
        <div class='main'>
            <form name='个人信息表' action='*' method='get'>
                <fieldset>
                    <legend>个人信息填写</legend>
                    <div>姓名:<input type="text" /></div>
                    <div><button type='submit'>提交</button></div>    
                </fieldset>
            </form>
        </div>
    </body>
</html>

今天就先从结构上讲这么多吧,下一篇文章里再具体讲解如何处理样式。

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2015-12-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

《小白HTML5成长之路31》半透明背景的自定义弹窗是怎么用CSS布局的

北方的冬天最怕有风,空气虽然好了,但是异常的冷,吸几口冷风感觉肺都结了冰。一大早小白来到办公室琢磨用户交互方面的问题,看了几个网站发现很多网站的弹窗都是自定义的...

1869
来自专栏地方网络工作室的专栏

CSS 幽灵元素方案垂直居中注意事项

之前,我们转载了一篇博文CSS居中完全指南,在这篇文章中,提到了一种使用幽灵元素方式的解决垂直居中的问题的方案。 这种方案非常适合解决一些图片布局,因此我也在项...

1885
来自专栏新工科课程建设探讨——以能源与动力工程专业为例

2.2 HTML5基础入门

网页就是HTML?这么理解大致准确。通常网页中包含了文字,图片、视频、小游戏,动画效果等等内容。我们以本章开头的html为例说明:

800
来自专栏木子昭的博客

媒体查询(前端面试题)

? 一个小游戏的公司的前端面试题 ? 效果演示.gif 考点 基础的布局知识, 左侧浮动脱离标准流, 右侧marg...

3505
来自专栏练小习的专栏

css实现未知宽度的正方形需求

今天群里有哥们问了一下,百分比宽度的正方形如何用css实现。其实就是不定宽的正方形如何用css实现。 第一个方法利用图片的等比例缩放,用base64写一个1*1...

1986
来自专栏coding for love

CSS常用布局实现03-水平垂直居中

其实,水平居中和垂直居中都是水平垂直居中的一部分,所以这一章节所讲到的方法稍微改下就可用于前面两章。说道水平垂直居中,那么居中的元素肯定是有宽度和高度的,要么是...

751
来自专栏Android机动车

完美兼容4.4及以上系统实现沉浸式状态栏

Google允许开发者在Android 4.4以上设置状态栏透明或半透明,布局填充全屏;而在5.0以上可直接设置状态栏颜色。

561
来自专栏web前端

Vuejs --01 起步

一、是什么      1、是一套构建用户界面的渐进式框架,Vue采用自底向上增量开发的设计           1.1     解释:框架譬如angular,是...

2065
来自专栏IMWeb前端团队

[小技巧]巧妙使用flex, letter-spacing实现过渡动画

本文作者:IMWeb DeepKolos 原文出处:IMWeb社区 未经同意,禁止转载 巧妙利用flex, 实现下面的效果~ 无需js来获取clien...

1727
来自专栏服务端技术杂谈

iOS 开发从 UIView 动画说起

毋庸置疑的:在iOS开发中,制作动画效果是最让开发者享受的环节之一。一个设计严谨、精细的动画效果能给用户耳目一新的效果,吸引他们的眼光 —— 这对于app而言是...

3417

扫码关注云+社区