首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

响应式Web设计:使用HTML5和CSS3实践 (13)

响应式Web设计:使用HTML5和CSS3实践 (13)

第8章 用HTML5和CSS3征服表单
8.1 HTML5表单

HTML5表单不仅包含了一些新的视觉元素,还具备了基本的客户端验证的功能,而过去这些一般都需要依赖JavaScript。如下列举了这些新的表单特性:
8.1.1 一个示例表单构建

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
     
        <!-- 首先定义了一个id为redemption的表单 -->
        <form id="redemption" method="post">
            <!-- hgroup中的h1和h2用于显示标题和说明文字 -->
            <hgroup>
                <h1>Oscar Redemption</h1>
                <h2>Here's your chance to set the record straight: tell us what
                    year the wrong film got nominated, and which film <b>should</b>
                    have received a nod...</h2>
            </hgroup>
        </form>
     
        <fieldset>
            <legend>About the offending film (part 1 of 3)</legend>
            <div>
                <label for="film">The film in question?</label>
                <input id="film" name="film" type="text" placeholder="e.g. King 3
                    Kong" required aria-required="true" >
            </div>
        </fieldset>
    </body>
    </html>

因为书中的例子其实并没有提供连贯的例子,如下只贴出一些片段用于粘贴在上面的表单示例中方便查看效果。
8.1.2 placeholder

占位符是HTML5表单中非常频繁被使用的一个属性,输入框获取焦点后会自动消失。
8.1.3 required

为确保表单必须输入值,可以添加required属性,当输入不符合条件时候浏览器会给出提示,并且表单默认不会提交。注:aria-required是为了方便屏幕阅读器用户,第四章有介绍过WAI-ARIA。
8.1.4 autofocus

autofocus可以让表单加载完成时就有一个表单域被默认自动聚焦。

    <fieldset>
        <legend>autofocus example</legend>
        <div>
            <label for="search">Search the site...</label>
            <input id="search" name="search" type="search" placeholder="Wyatt Earp"
                autofocus>
        </div>
    </fieldset>

8.1.5 autocomplete

很多浏览器提供了自动完成功能来帮助用户完成输入,但是通常会关闭这个功能,因为它不仅能保护敏感数据(例如银行卡账户),还可以让用户用心填写表单而不是随便输入一个值(使用者可能通过自动完成来选择曾填写过的假的电话号码)。

下面的代码是一个禁止自动完成的表单项:

    <fieldset>
        <legend>autocomplete example</legend>
        <div>
            <label for="tel">Telephone (so we can berate you if you're wrong)</label>
            <input id="tel" name="tel" type="tel" placeholder="1-234-546758" autocomplete="off" required aria-required="true" >
        </div>
    </fieldset>

也可以给表单本身设置属性来禁止整个表单的自动完成功能:

<form id="redemption" method="post" autocomplete="off">

autofus可以让表单加载完成时就有一个表单被默认自动聚焦。
8.1.6 list及对应的detail元素

    <fieldset>
        <legend>list example</legend>
        <div>
            <label for="awardWon">Award Won</label>
            <input id="awardWon" name="awardWon" type="text" list="awards">
            <datalist id="awards">
                <select>
                    <option value="Best Picture"></option>
                    <option value="Best Director"></option>
                    <option value="Best Adapted Screenplay"></option>
                    <option value="Best Original Screenplay"></option>
                </select>
            </datalist>
        </div>
    </fieldset>

使用了list属性的输入框看起来就是一个普通的文本输入框,list属性的值就是datalist元素的id,开始输入时会显示一个数据选择框。注:使用select包裹option是为了便于老版本浏览器的降级。
8.1.7 HTML5的新输入类型

    邮箱地址 <input type="email" />
    数字 <input type="number"/>
    URL地址 <input type="url"/>
    电话号码 < input type="tel"/>
    搜索输入框 <inputtype="search"/>和普通文本框表现一样只是个别浏览器渲染上有细微差别
    正则表达式 <input pattern="([a-zA-Z])"/>
    颜色选择器 <input type="color"目前很少浏览器支持该特性(@13年)
    滑动条 <input type="range" min="1" max = "10" />

8.1.8 日期和时间输入类型

如下多种的日期时间输入类型提供了不同的度量单位,输出结果值会略有不同:

    date
    month
    week
    time
    datetime和datetime-local
返回列表