三天学会HTML5 之第一天

引言

HTML5 一直是非常热门的话题,因此此系列文章主要从一些基本功能开始讲起,逐步深入了解HTML5的新概念。

首先了解一些基本的术语和概念。

    • SGML, HTML,XML三者之间的区别
    • Doc类型是什么
    • HTML5 有什么新特点新优势。
    • 学习HTML5

      在开始之前首先来区分SGMC,HTML,XML 三者的概念。

      SGML 即 Standard Globalized Markup Language 是用来定义标准的标记语言,简单的说,就是定义文档的元语言。

      HTML 是基于SGML 的超链接语言,可以用于创建Web页面。在DTD 内部定义了标签的规则,DTD就是使用SGML 语言创建的。

      XML 是从SGML 衍生而来的,它主要处理互联网方面的需求,HTML 有很多限制,XML 是SGML 的子集,可用于表示数据。

      Doc 类型

      创建HTML 页面时会自动生成以下代码:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    • 这句代码简单的介绍了HTML 版本号,有了Doctype,就引入了对应的DTD(定义了HTML文档的组织结构),在页面中添加的所有标签才会是合法的,简单的说DTD 就是定义HTML的语法规则。

      即使在没有引入DTD的情况下,很多浏览器也可以识别HTML元素,因为它们自身包含对HTML 元素的定义,这就是为什么很多开发人员没有感受到DTD 的存在。

      HTML5 与之前的版本区别

      HTML5不是基于SGML 语言的,因此不需要DTD ,它是一种全新的标记语言,有自己的解析规则,HTML5的语法规则与之前版本有很大的差别,可以称的上是一种全新的语言。

      HTML5 的Doctype 非常简单:

      <!DOCTYPE html>
    • HTML5 新特性

      1. 理解新的页面结构语义

      HTML 旧版本并没有标准的文档定义规则,比如如何定义文档Header或Footer等,很多人都在使用div来修饰一些CSS ,常常会导致不一致性。

      HTML5 定义标准tag如Header,Footer,nav,FlipCaption等。这些标签可使得标记语言更有意义。

      注意: 这些标签不提供特殊的渲染功能,仅仅使的HTML 文档结构更具有意义。

      Lab2_ 新的输入属性

      新类型值

      之前为了获得不同的UI 元素,如DatePicker,range Picker,color Picker等,会使用不同的类库。

      HTML5 为输入元素引入了新属性“type”,看以下示例:

    • Number

      <input type="number" name="MyNuberElement" id="MyNumberElement" />
    • Range
      <input type="range" name="MyRangeElement" id="MyRangeElement"/>
    • Color
      <input type="color" id="MyColorElement" name="MyColorElement" />

    • Date

      <input type="date" id="MyDateElement" name="MyDateElement" />

    • Time
      <input type="time" id="MyTimeElement" name="MyTimeElement"/>
    • Datetime-local
      <input type="datetime-local" id="MyDateTimeLElement" name="MyDateTimeLElement" />
    • DateTime (Also include time zone)
      <input type="datetime" id="MyDateTimeElement" name="MyDateTimeElement"/>

    • Month
      <input type="month" id="MyMonthElement" name="MyMonthElement" />

    • Week

      <input type="week" id="MyWeekElement" name="MyWeekElement" />

    • 下面列举一些有用的属性:
    • Autofocus 该属性表示在页面加载时,可初始化焦点。
      &hellip;
      
      <label for="birthMonth">Birth Month</label>
      
      <input type="month" id="MyMonthElement" name="MyMonthElement" autofocus />
      
      &hellip;
      上面代码实现了,当页面加载时,鼠标聚焦于“MyMonthElement”控件,“autofocus” 则绑定到多控件。
    • Placeholder 新的输入控件
       
    • <input type="text" placeholder="Enter Value" id="MyPlaceHolderControl"
      
                     name="MyPlaceHolderControl" />

       

      实验3——了解HTML5 Datalist 控件

      DataList是HTML5中的新标签,能够在输入框中,实现自动完成功能。
      可通过3个步骤实现:
      1. 创建DataList
      <datalist id="Hobbies">
      
          <option>Reading books</option>
      
          <option>Watching movies</option>
      
          <option>Playing games</option>
      
      </datalist>
    • 2. 创建输入控件,绑定List

      <input type="text" name="TxtHobbies" value="" list="Hobbies" />
    • 3. 运行测试

      实验 4  输出元素

      HTML5 中引入标准的语义“Output”元素

      <div oninput=
      
              "document.getElementById(MyOutputElement).value =
      
              (document.getElementById(‘input1‘).valueAsNumber) +
      
              (document.getElementById(‘input2‘).valueAsNumber)">
      
          <input id="input1" name="input1" type="number" value="1"> +
      
          <input id="input2" name="input2" type="number" value="2"> =
      
          <output id="MyOutputElement">3</output>
      
      </div>
    • 实验 5,6,7-学习HTML5 验证功能

      验证是开发应用最重要的功能,之前都会使用JQuery 验证等功能,在新版的HTML5中提供了验证支持。

      Lab5—使用输入元素的type属性,实现验证功能:

      <form>
      
       <table>
      
        <tr>
      
          <td>
      
              <label>E-mail:</label>
      
              <input type="email" id="email" name="email" />
      
              <label>URL:</label>
      
              <input type="url" id="url" name="url" />
      
              <label>Telephone</label>
      
              <input type="tel" id="phone" name="phone" />
      
              <label>Number Demo:</label>
      
              <input type="number" name="MyNumberElement" id="MyNumberElement" />
      
              <label>Range Demo:</label>
      
              <input type="range" name="MyRangeElement" id="MyRangeElement" />
      
              <label>Color Demo</label>
      
              <input type="color" id="MyColorElement" name="MyColorElement" />
      
          </td>
      
          <td>
      
              <label>Date Demo</label>
      
              <input type="date" id="MyDateElement" name="MyDateElement" />
      
              <label>Time Demo</label>
      
              <input type="time" id="MyTimeElement" name="MyTimeElement" />
      
              <label>DateTime Local Demo</label>
      
              <input type="datetime-local" id="datetime" name=" datetime" />
      
              <label>Month Demo</label>
      
              <input type="month" id="month" name="month" />
      
              <label>Week Demo</label>
      
              <input type="week" id="MyWeekElement" name="MyWeekElement" />
      
              <div style="text-align:right">
      
                <input type="submit" value="validate" />
      
              </div>
      
          </td>
      
        </tr>
      
       </table>
      
      </form>
    • 2. 运行测试

      实验6-使用自定义验证属性实现验证

      1. 创建输入控件
      <form>
      
          <label>Email</label>
      
          <input type="email" name="TxtEmail"
      
                id="TxtEmail" required />
      
          <label>User Name</label>
      
          <input type="text" name="username"
      
                id="username" pattern="[a-zA-Z]{5,}" />
      
          <label>Age</label>
      
          <input type="number" name="TxtAge"
      
                id="TxtAge" min="10" max="50" />
      
          <br /><input type="submit" value="Register" />
      
      </form>
    • 输出:

      实验7——自定义验证

      通过处理oninvalid 事件完成自定义HTML5 验证功能。
      1. 创建输入控件,并绑定验证属性,添加自定义错误提示。
      <form>
      
          <label>Email</label>
      
          <input type="email" name="TxtEmail"
      
                  id="TxtEmail"  required/>
      
          <span class="MissingEmailSpan invalid">Email Missing</span>
      
          <span class="InvalidEmailSpan invalid">Invalid email</span>
      
          <label>User Name</label>
      
          <input type="text" name="username"
      
                  id="username" pattern="[a-zA-Z]{5,10}"  />
      
          <span class="InvalidUserNameSpan invalid">Username not matching with pattern</span>
      
          <label>Age</label>
      
          <input type="number" name="TxtAge"
      
                  id="TxtAge" min="10" max="50" />
      
          <span class="AgeIsNotInRangeSpan invalid">Age must be be between 10 and 50</span>
      
          <span class="InvalidAgeSpan invalid">Invalid Age</span>
      
          <br /><input type="submit" value="Register" />
      
      </form>
    • 2.  添加style 标签,创建CSS 来隐藏错误信息

      <style>
      
              .invalid {
      
                  display: none;
      
              }
      
      </style>
    • 3. 点击提交按钮,隐藏错误信息

      <input type="submit" value="Register" onclick="$(‘.invalid‘).hide();" />
    • 4. 当输入控件包含非法值时触发

      <input type="email" name="TxtEmail" id="TxtEmail" oninvalid="OnInvalidEmail();" required/>
    • 5. 创建Event Handler JavaScript函数

      function OnInvalidEmail()
      
      {
      
          event.preventDefault();
      
          var element = event.srcElement;
      
          var validity = element.validity;
      
          if (validity.valueMissing) {
      
              $(‘.MissingEmailSpan‘).show();
      
          }
      
          else if (validity.typeMismatch) {
      
              $(‘.InvalidEmailSpan‘).show();
      
          }
      
      }
      event.preventDefault();  会组织默认行为的发生,将错误信息置顶
      event.srcElement;获取包含非法值的控件,如上的Email textbox;
      element.validity; 包含控件的验证信息,如valueMissing,typeMismatch,badInput等。

      6. 运行

    • 实验8——HTML5的缓存技术

      如下是简答的缓存Demo

      1.创建新的ASP.NET Web 应用

      2. 添加Style.css,在Block 中添加以下类:

      .DivStyle {
      
          background-color:silver;
      
      }
    • 3. 创建manifest 文本文件:

      CACHE MANIFEST
      
      # ver 1
      
      CACHE:
      
      /Styles/Style.css
    • 4. 创建需要缓存的文件

      <%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyPage.aspx.cs" Inherits="MyPage" %>
      
      <!DOCTYPE html>
      
      <html  manifest="MyCache.txt">
      
      <head runat="server">
      
          <title></title>
      
          <link href="Styles/Style.css" rel="stylesheet" />
      
      </head>
      
      <body>
      
          <form id="form1" runat="server">      
      
          <div class="DivStyle" id="MyDiv">
      
              Hi, Execution count is 1
      
          </div>
      
          </form>
      
      </body>
      
      </html>
    • 5. 运行

      6. 设置离线,查看结果

      7. 刷新页面

      8 修改MyPage.aspx 文件,修改Mydiv

      <div class="DivStyle" id="MyDiv">
      
          Hi, Execution count is 2
      
      </div>
    • 9. 运行程序

      10. 修改manifest 文件

      CACHE MANIFEST
      
      # ver 3
      
      CACHE:
      
      /Styles/Style.css
  • 11 再次刷新网页
时间: 2024-08-05 13:50:33

三天学会HTML5 之第一天的相关文章

三天学会HTML5——SVG和Canvas的使用

在第一天学习了HTML5的一些非常重要的基本知识,今天将进行更深层学习 首先来回顾第一天学习的内容,第一天学习了新标签,新控件,验证功能,应用缓存等内容. 第2天将学习如何使用Canvas 和使用SVG 实现功能 Lab1—— 使用Canvas Canvas 是指定了长度和宽度的矩形画布,我们将使用新的HTML5 JavaScript,可使用HTML5 JS API 来画出各种图形. 初始化 1. 创建HTML页面 <html> <head></head> <bo

三天学会HTML5 ——多媒体元素的使用

目录 1. HTML5 Media-Video 2. HTML5 Media-Audio 3. 拖拽操作 4. 获取位置信息 5. 使用Google 地图获取位置信息 多媒体是互联网中的最重要的一部分,无论访问的是哪种类型的网页,视频或音频***,在之前实现这些功能对开发人员来说可能非常痛苦,必须依赖Object 标签,调用第三方软件来加载,如Flash等,如果有些设备不支持Flash,我们对此就束手无策了.但是HTML5的出现让多媒体网页开发变得异常简单,也形成了新的标准. 1. 使用Vide

三周学会小程序第一讲:小程序申请和注意事项

注册 注册邮箱 个人申请小程序非常简单,首先你需要注册一个全新的邮箱. 当然用你的个人邮箱也可以,小编考虑到后面你可以再次开发自己的小程序,所以这里还是重新申请一个比较好.网易邮件一个手机号可以申请15个邮箱,是一个不错的选择 注册小程序 进入 https://mp.weixin.qq.com/ 页面,直接点击注册,一直下一步就好了.注意的是需要想好名字和头像.因为有如下限制. 名称提交前可修改2次名称,一年可以修改两次. 头像一个月可以修改5次. 这样就大功告成了,是不是很简单? 注意事项 个

十天学会php之第一天

以前写了十天学会asp,十天学会asp.net什么的,现在想想再写个php吧,也算比较全了. PHP的调试方法我这里就不说了,外面很多文章都有介绍,也有很多不同的组合.我这里暂时是以 Apache web server 和 MY SQL 作为WEB服务器和数据库,在php-4.3.3下的环境做的程序.当然要简单的构建和访问查看数据库 PHPMYADMIN 不可少. 至于表单设计什么的,我这里也不想多说了,在<十天学会ASP>中已经有介绍. 下面简单介绍一下PHP的语法. 1.嵌入方法: 类似A

html5 +css3 第一章学习和笔记

各位同学.身为本版的斑竹.,希望各位童鞋都能学到Html5 .特此没两天更新一个学习笔记和大家一起学习Html5.... 语法改变       1.新增的元素和废除的元素       2.新增的属性和废除的属性       3.全局属性 html5和4的区别:DOCTYPE.声明.内容类型.字符的编码的制定方法.元素标记的省略.布尔值的类型.引号的省略 一:html5中的标记方法        1内容类型:.html  .htm        2DOCTYPE声明: <!DOCTYPE html

三小时学会Kubernetes:容器编排详细指南

三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后,你就能在Kubernetes集群上运行基于微服务的应用程序.我之所以能保证这一点,是因为我就是这么向客户介绍Kubernetes的. 这份指南与其他文章有何不同之处? 相当多!大多数指南是从Kubernetes概念和kubectl命令这类简单的东西开始的.它们假定读者熟悉应用程序开发.微服务和Do

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

一周学会mysql:第一章mysql简介

mysql是支持众所周知的sql(结构化查询语言)数据库语言的一个关系数据库 数据库是由持久性数据的某些集合组成的,由数据库管理系统管理 数据库专用语言把命令传递给数据库服务器,这种语言叫数据库语言 NULL值:未知的值(空值),部要和0混淆了 主键用来唯一标识表中的一列,表中不可能有2个不同行在他们的主键上具有相同的值,主键必须有个值 候选键:表中包含多个可以作为主键的列,但只有其中一个可以作为主键 替换键:不是表格主键的候选键. 外键:是表中的一列,该列是另外一个表的主键内容的一个子集 一周

三分钟学会 JavaScript 单元测试

此篇文章使用 js-test-driver , 希望给无任何JavaScript 单元测试经验的开发者, 能在最短的时间内, 开展单元测试的工作? 附件: 三分钟学会 JavaScript 单元测试