整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

前端:六大H5常用结构元素

端在使用DIV+CSS布局时,通常需要通过为div命名的方式,来区分网页中不同的模块。在HTML5中布局方式有了新的变化,HTML5中增加了新的结构标签,如header标签、nav标签、article标签等,具体介绍如下。

1. header标签

HTML5中的header标签是一种具有引导和导航作用的结构标签,该标签可以包含所有通常放在页面头部的内容。header标签通常用来放置整个页面或页面内的一个内容区块的标题,也可以包含网站Logo图片、搜索表单或者其他相关内容。其基本语法格式如下:

<header>

  <h1>网页主题</h1>

    ...</header>

在上面的语法格式中,<header></header>的使用方法和<div class="header"></div>类似。

注意:

在HTML网页中,并不限制header标签的个数,一个网页中可以使用多个header标签,也可以为每一个内容块添加header标签。

2. nav标签

nav标签用于定义导航链接,是HTML5新增的标签,该标签可以将具有导航性质的链接归纳在一个区域中,使页面元素的语义更加明确。nav标签的使用方法和普通标签类似,例如下面这段示例代码:

<nav>

  <ul>

        <li><a href="#">首页</li>

        <li><a href="#">公司概况</li>

        <li><a href="#">产品展示</li>

        <li><a href="#">联系我们</li>

  </ul></nav>

在上面这段代码中,通过在nav标签内部嵌套无序列表ul来搭建导航结构。通常一个HTML页面中可以包含多个nav标签,作为页面整体或不同部分的导航。具体来说,nav标签可以用于以下几种场合。

● 传统导航条:目前主流网站上都有不同层级的导航条,其作用是跳转到网站的其他主页面。

● 侧边栏导航:目前主流博客网站及电商网站都有侧边栏导航,目的是将当前文章或当前商品页面跳转到其他文章或其他商品页面。

● 页内导航:它的作用是在本页面几个主要的组成部分之间进行跳转。

● 翻页操作:翻页操作切换的是网页的内容部分,可以通过点击“上一页”或“下一页”切换,也可以通过点击实际的页数跳转到某一页。

除了以上几点以外,nav标签也可以用于其他导航链接组中。需要注意的是,并不是所有的链接组都要被放进nav标签,只需要将主要的和基本的链接放进nav标签即可。

3. footer标签

footer标签用于定义一个页面或者区域的底部,它可以包含所有放在页面底部的内容。在HTML5出现之前,一般使用<div class="footer"></div>标签来定义页面底部,而现在通过HTML5的footer标签可以轻松实现。与header标签相同,一个页面中可以包含多个footer标签。

4. article标签

article标签代表文档、页面或者应用程序中与上下文不相关的独立部分,该元素经常被用于定义一篇日志、一条新闻或用户评论等。一个article标签通常有它自己的标题(可以放在header标签中)和脚注(可以放在footer标签中),例如下面的示例代码。

<article>

    <header>

    <h1>秋天的味道</h1>        
    
    <p>你想不想知道秋天的味道?它是甜、是苦、是涩...</p>

  </header>

    <footer>           
    
    <p>著作权归XXXXXX公司所有...</p>

  </footer></article>

需要注意的,在上面的示例代码中还缺少主体内容。主体内容通常会写在header和footer之间,通过多个section标签进行划分。一个页面中可以出现多个article标签,并且article标签可以嵌套使用。

5. section标签

section标签表示一段专题性的内容,一般会带有标题,主要应用在文章的章节中。例如,新闻的详情页有一篇文章,该文章有自己的标题和内容,因此可以使用article标签标注,如果该新闻内容太长,分好多段落,每段都有自己的小标题,这时候就可以使用section标签把段落标注起来。在使用section标签时,需要注意以下几点:

● section不仅仅是一个普通的容器标签。当一个标签只是为了样式化或者方便脚本使用时,应该使用div标签。

如果article标签、aside标签或nav标签更符合使用条件,那么不要使用section标签。

● 没有标题的内容模块不要使用section标签定义。

值得一提的是,在HTML5中,article标签可以看作是一种特殊的section标签,它比section标签更具有独立性,即section标签强调分段或分块,而article标签强调独立性。如果一块内容相对来说比较独立、完整时,应该使用article标签;但是如果想要将一块内容分成多段时,应该使用section标签。

6. aside标签

aside标签用来定义当前页面或者文章的附属信息部分,它可以包含与当前页面或主要内容相关的引用、侧边栏、广告、导航条等有别于主要内容的部分。aside标签的用法主要分为两种:

● 被包含在article标签内作为主要内容的附属信息。

● 在article标签之外使用,作为页面或网站的附属信息部分。最常用的的使用形式是侧边栏。

文主要讲解移动端页面上能上传多个本地图片的例子,在一些发布说说的页面上能用得到,有兴趣的小伙伴可以一起看看!

效果图:

html:

css:

css样式方面就不多说了,自己可以美化自己的布局,重点还是js中的实现代码:如下

言:万物之始,大道至简,演化至繁。水滴不染尘世浮华,方能纯净如冰川灵动如丝绒。落红不逐春日绚烂,方有一年春尽一年春。

一、html5的介绍

1.1介绍

html号称超文本标记语言,代表着浏览器技术发展的一个阶段。html版本1到版本5的更新迭代都是由组织W3C管理的。当时到html4.1的时候,W3C组织就声称不再更新版本了。而改用XHTML。但是由于浏览器的各种不兼容的问题,于是乎W3C这个组织就和其他的浏览器产商一起联合起来将这门语言再次更新到html5

比喻:

html5 >机器人的骨骼

css3 >机器人的外在修饰

js > 机器人的行为如行走、抬腿

Jquery > 封装好的控制行为的库,可以提高效率

1.2优势

  • 易用性

  • 支持视频和音频

  • 互动性高

  • 支持移动设备

  • 未来的趋势

1.3开发工具

HBuild、WebStrom、sublime Text

二、代码规范

2.1代码规范

新建一个Web项目

相比html4来说,html5的语法更加简洁并且在规定上也更加宽松。

  • 单标签不用写关闭符号

  • 双标签省略结束标签

  • html、head、body、colgroup、tbody可以完全省略

  • 删除其中一些,打开浏览器的检查元素功能,也不会报错

三、各类标签

3.1文本标签

  • b标签:表示关键字和产品名称。<b>html</b>其实它的实际作用就是将一段文字加粗。但是并不是特别强调它的重要性。比如说:在一段文字当中出现的某些关键字或者产品的名称就可以用b标签

  • strong标签:表示比较重要的文字<strong>html</strong>它的作用也是加粗,只是它在强调一段比较重要的文本

  • br单标签:换行

  • wbr标签:安全换行you've no idea how worried <wbr> i was当用户对网页进行缩放的时候可能会有一些单词被挤到下一行。如果不行某个单词被分离的话,可以使用安全换行标签

  • i标签:倾斜。em标签语义一样,但em表示强调<i>倾斜标签</i>它用于表示外文词汇或科技术语

  • s标签:删除线。del标签表示强调。<s>html</s>删除线

  • u标签:给文字加下划线。ins标签表示强调<u>html</u>下划线

  • small标签:添加小号字体<small>放小一号</small>将文本放小一号。通常用于免责声明和澄清声明。

  • sub和sup标签:添加上标和下标X<sub>5</sub>和Y<sup>2</sup>(sub和sup长差不多,这个要如何去记忆呢?大家可以看到b的肚子在下面,所以呢它是下标,而p的头部在上方,所以记录是上标。那这样一来是不是就感觉清晰了许多呢)

  • q标签:引用来自其它出处的内容<q>有朋自远方来</q>

  • ruby标签:语言元素。常用于帮助读者正确发音。<ruby>夔<rp>(</rp><rt>kui</rt><rp>)</rp></ruby><rp><rt>用来帮助读者掌握表意语言文字的正确发音。比如说汉语拼音在文字的上方。

  • bdo标签:设置文字方向<bdo dir="rtl">设置文字方向</bdo>dbo必须使用属性dir才可以设置,一共两个值:rtl从右到左和ltr从左到右。一般默认是ltr。还有一个bdi元素也是处理方向的,由于是特殊语言的效果,并且主流浏览器有些不支持,所以可以忽略。

  • mark标签:突出显示文本<mark>突出显示文本</mark>加上一个黄色的背景,黑色的字。从语义上来看,与上下文相关而突出的文本,用于记号。

  • a标签:超链接a元素属于文本元素,有一些私有属性。

    href属性 <a href="http://www.baidu.com">百度</a> 这个属性是必须的,否则a元素就变得毫无意义。它的属性值意味着点击跳转到指定的外部网站去。

    target属性<a href="http://www.baidu.com" target="_blank">百度</a> 这个属性告诉浏览器希望打开的新窗口显示在哪里。_blank表示在新窗口中打开文档。_self表示在当前窗口打开文档。默认_self。(_parent和_top这些要结合框架来使用,但是基本上用得已经很少了。)

    锚点设置:用于将同一个文档中的另一个元素移入视野。说通俗一点就是通过点击这个锚点定位到页面中的某个位置。

<a href="#1">第一节</a>

<a href="#2">第二节</a>

<a href="#3">第三节</a>

</br>

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

<a name="1">第一节的内容 我☝应该说点啥的。

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

</a>

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

&hellip;&hellip;以上省略一万行&hellip;&hellip;

==========以下全都是分隔符============</br>

<a name="2">第二节的内容 我☝应该说点啥的。

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

==========以下全都是分隔符============</br>

</a>

3.2分组标签

顾名思义,分组元素就是用来组织相关内容的html元素,对它们进行清晰有效的分类。

  • p标签:表示段落<p>这是一个段落</p> <p>这是一个段落</p>p标签就是将内部包含的文本形成一个段落。它们可以自动换行,而且段落与段落之间保持一定量的空隙。

  • div标签:通用分组<div>这是一个块标签</div> <div>这是另一个块标签</div>在早期的版本中经常用到,用div将其他数据或标签包裹起来,进而进行布局。但是在html5中,渐渐被其他元素替代。(它与p标签的区别就是两段文本间没有空隙。空隙间隔和br标签换行一样)

  • blockquite标签:引用大段其他地方的内容<blockquote>引用别人的内容的辅导费打发打发可以换行哦他也有首尾缩进的效果</blockquote>有段落空隙的功能,还包含了首尾缩进的功能。

  • pre标签:按照原格式展示数据<pre> 我就是 长这样的 参差不齐 </pre>(有时候某些文字就想要按照原来的格式显示出来就要用到pre标签。它就是将数据原封不动的显示出来)

  • hr标签:单标签。添加一条分割线。

  • ul和li标签:添加无限列表

<ul>

<li>貂蝉</li>

<li>大乔</li>

<li>小乔</li>

<li>孙尚香</li>

</ul>

ul标签表示无序列表(就像咱们平时说的无符号整形,在前面也是加了一个u),而li标签则表示内部的列表项

  • ol和li:表示有序列表

  • start属性:表示从第几个序列开始统计。<ol start="2">

  • reversed属性:是否倒序排列。<ol reversed>(不过这个属性有很多的浏览器不支持,所以要谨慎使用)

  • type属性:表示列表的编号的类型 <ol type="A">

  • value属性:这是属于li的属性。表示强行设置某个项目的编号。<li value="7">安琪拉</li>

  • dl、dt、dd:列表标签

<dl>

<dt>第一份内容</dt>

<dd>第一行详细内容</dd>

<dd>第二行详细内容</dd>

<dl>

虽然说这三个标签是一个整体,但是dt和dd标签并非都必须出现

  • figure和figcaption标签:使用插图的意思。一般用于图片的布局。

<figure>

<figcaption>这里有一张图哦</figcaption>

<img src="img.png">

</figure>

3.3表格标签

表格的用途是以网格的形式显示二维数据。开发者可以对表格中的元素标签设置不同的属性如边框宽度、颜色等使表格呈现出不同的效果。

3.3.1 标签

  • table:表示表格标签

  • tr:代表某一行

  • td:代表一个单元格。

<table border="1" style="width:300px;">

<tr> <!--相当于行-->

<td>王昭君</td> <!--相当于每行中的每一列-->

<td>沉鱼落雁</td>

<td>法师</td>

</tr>

<tr> <!--相当于行-->

<td>貂蝉</td> <!--相当于每行中的每一列-->

<td>羞花闭月</td>

<td>刺客</td>

</tr>

</table>

  • th:代表标题单元格。代表标题,作用是将内部文字居中且加粗。

<tr>

<th>姓名</th>

<th>特征</th>

<th>职业</th>

</tr>

  • thead:代表表头。(某些时候,网页上的表头是由js动态生成的。有可能没按照先后的顺序排列,如此一来表头就有可能显示到第二行、第三行甚至是表尾。用thead将tr括起来可以让数据永远显示在第一行)

<thead>

<tr>

<th>姓名</th>

<th>特征</th>

<th>职业</th>

</tr>

  • tfoot:表示表尾:与表头相反

  • tbody:表示表格的主体部分

  • (这里非常建议用分主体、表头、表尾的方式写。因为到后期使用CSS样式的时候只要拿到某个标签就可以设置总体的样式了,这样就会非常方便)

  • caption:添加表格的标题

  • colgroup:群组。用于设置列的属性。默认设置第一个(有的时候需要设置单独列的属性,如果说我只想设置第二列的属性,则需要把第一列的设置成白色)

<!--<table border="1" style="width:300px;">-->

<colgroup style="background:white;" span="1"></colgroup> <!--设置第一个颜色为白-->

<colgroup style="background:red;" span="1"></colgroup> <!--设置第二个颜色为红 span代表一列-->

  • col:群组的子标签。更加灵活的设置列属性。通过占位符设置不需要的属性。

<colgroup>

<col> <!--占位,表示第一列不设置-->

<col style="background: pink;">

</colgroup>

3.3.2属性

  • border:表示边框的宽度 <table border="1"></table>

  • style:通用属性。在css中做详解。

  • colspan:合并列 <td colspan="3">统计</td>这句代码表示共占三个单元格

  • rowspan:合并行

<tr>

<th rowspan="4">学员</th>

<th>姓名</th>

<th>特征</th>

<th>职业</th>

</tr>

3.3文档元素

文档元素的主要作用是划分各个不同的内容,让整个布局更加清晰。 进入代替div。让整个布局元素都具有语义。

  • header标签:表示页面头部。通常包括标题或导航等内容。下面内容会换行(在页面中一般会用样式将它设置到居中)

  • footer标签:表示页面的尾部,一般用于版权声明、友情链接等。

  • h1-h6标签:标题标签,有字体加粗的效果。从1-6字号依次减小

<h1>这里是一个大标题</h1> <h3>这里是一个副标题</h3>

  • hgroup:组合标题。hgroup的作用就是当多个标题出现,干扰到一对或多个本身需要整合的标题。

<header>

<hgroup>

<h1>这里是一个大标题</h1>

<h3>这里是一个副标题</h3>

</hgroup>

</header>

<footer>

<h4>这里是尾部的副标题</h4>

这里存放页面的尾部:如版权声明,友情链接

</footer>

如上面那段代码,头部的h4标题就能与h1绑定起来,从而和尾部的h4分离。

  • section标签: 定义一个文档的主题内容

  • nav标签: 给文档页面添加一个导航

  • aritcle标签:添加一个独立成篇的文档(像平常看到的论坛,贴吧,评论都有自己的头、尾和内容等)

<article>

<header>

<nav>&hellip;&hellip;</nav>

</header>

</article>

  • aside标签:生成注释栏。

<aside>这是一个注释栏</aside>

  • address表示文档或者是article元素的联系信息

  • <address>联系信息</address>

  • 本身有倾斜的效果。如果是在article元素下表示其下的联系信息,如果是在body元素下表示整个文档的联系信息

3.4嵌入元素

嵌入元素主要功能是把外部的一些资源插入到html中。

  • img标签:用于显示图片

  • src:嵌入图像的url

  • alt:(如果图片能正常显示则没有任何效果。若图片加载不成功会出现备用内容)

  • width/height:定义图片的宽度和高度,单位是像素<img src="img.png" alt="风景图" width="320" height="400"/>

  • ismap:获取到图片区域的像素点加入了ismap属性之后,点击图片在浏览器中就会获得图片被点击的地方的像素点。(把文件在目录中打开,讲文件拷贝到谷歌浏览器打开就能看见)

<a href="index.html">

<img ismap src="img_5.jpg" alt="风景图">

</a>

  • usemap:创建分区的响应图。比如说点击图片的某一部分,可以跳转到某一个网页。(当点击了coords这块区域时,跳转到指定的网页)

<img src="img_5.jpg" usemap="#Map" />

<map name="Map">

<area shape="circle" coords="31,28,112,100" href="http://www.baidu.com" target="_blank" alt="方形">

</map>

  • iframe标签:嵌入另一个文档。表示在一个页面内建立一个区域引入另一个页面。

<a href="index.html" >index</a>

<a href="http://www.baidu.com" target="in">百度</a>

<iframe src="http://www.baidu.com" width="300" heigth="300" name="in"></iframe>

  • progress标签:用于显示进度

  • 该标签会产生一个进度条,一般我们会用js代码来控制其内部的值。(当前值用value来表示,而最大值用max来表示)

<progress value="30" max="100"></progress>

  • meter标签:显示范围里的值(类似于进度条,可以规定最大值和最小值max/min。low值规定它的值过低,high表示值过高。而optimun表示最佳值,但是这个属性是呈现不出效果的)

<meter value="90" min="10" max="100" low="40" high="80" optimum="60"></meter>

3.5音频和视频标签

音频和视频文件其实都只是一个容器文件。视频文件包含了音频轨道、视频轨道和其他一些元数据。视频播放时,音频轨道和视频轨道是绑定在一起的。元数据包含了视频的封面、标题字幕等信息。在网页实现中,有很多的浏览器厂商都有自己的标准,所以html5规范也没有强制指定编解码器了。所以在网页上嵌入视频和音频时,最好提供mp4格式和webM格式的视频。否则有可能由于浏览器不兼容的问题导致视频不能播放。

  • video标签: 视频标签属性:

  • src:视频资源的url

  • width:视频宽度

  • height:视频高度

  • <video src="test.mp4" width="320" height="400"></video>

  • controls:设置后显示播放控件(未设置这个属性时,视频就像一张图片,设置controls之后才能显示视频播放控件)

  • <video src="test.mp4" width="320" height="400" controls></video>

  • autoplay:表示立即播放视频

  • loop:反复播放视频(也就是说在播放结束之后会重新播放视频)

  • muted:设置之后,视频会处于静音状态

  • poster:指定视频数据载入时显示的图片。(相当于视频的一个封面)

<video src="test.mp4" width="320" height="400" controls

poster="img_5.jpg"></video>

  • preload:预加载。不设置会在第一次播放自动缓存。如果值为none会直到用户点击时再加载视频。如果值为metadata表示播放之前只加载第一帧。auto是默认的,表示要求浏览器尽快的加载视频。

  • 兼容多个浏览器 source标签

<video src="test.mp4" width="320" height="400" controls poster="img_5.jpg">

<source src="test.webm"/>

<source src="test.mp4"/>

</video>

  • audio标签:用于嵌套音频内容。属性与视频元素类似。只是没有宽高设置和图片。

  • <audio src="test.mp3" controls></audio>

3.6表单标签

表单标签是用于获取用户的输入数据的。

  • form标签:表示定义html表单。用该标签包含的标签具有提交功能。也就是说,在浏览器的地址栏里面能获取到用户的信息。(如果不定义表单,那么它是无法提交数据的)

<form>

用户名:<input name="user">

<button>提交</button>

</form>

属性

  • action:表示表单提交到的页面(也就是要把数据传入到哪个页面中)

  • method:表示表单的提交方式。默认是get。而get和post请求的区别就是post后面不跟请求体。也就是用户信息。相对来说更加的安全。(一般来说,get是用于超链接提交居多,post用作表单提交居多)

  • <form method="post" action="http://www.haosou.com"></from>

  • enctype:表示浏览器对发送给服务器的数据采用的编码格式。有三种格式。默认是不能将文件上传到服务器&rdquo;application/x-www-form-urlencoded&ldquo;、multipart/form-data用于将文件上传到服务器、text/plain不建议使用

  • name:设置表单名称,以便程序调用

  • target:提交的目标,与超链接无异

  • autocomplete:设置浏览器记录用户输入的信息。分为on和off两个值。默认为on。

  • novalidate:设置是否执行客户端数据有效性检查

  • input标签:表示用来收集用户输入数据的控件。它默认会出现一个单行的文本框。

  • type:文本框的类型。值为text时表示单行文本框;值为password表示密码框;值为search时,除了火狐浏览器的其他浏览器外,会显示一个叉来取消搜索内容,值为number时,表示只限于数字输入;值为range时,生成一个数值范围文本框;当type为date系列时,可以获取日期和时间的值,有六种形态date、month、time、week、datetime、datetime-local;当值为color代表可以获取不同的颜色;当值为checkbox、radio时表示复选框和单选。单选的name值必须一样。checked表示默认勾选状态值为img是表示产生一张图片按钮,后面可以接src,alt,width等熟悉值为email,tel,url时表示输入电子邮件、电话和网址格式值为hidden时,生成一个隐藏控件(看不见,但提交的时候会显示,一般用于关联主键id提交)值为file的时候,表示上传文件。accept属性表示限制文件<input type="text">

音乐<input type="checkbox" checked>

体育<input type="checkbox">

<input type="radio" name="sex" value="男" checked>男

<input type="radio" name="sex" value="女">女

<input type="hidden" value="1" name="id">

<input type="file" accept="image/gif">

  • maxlength:设置文本框最大字符长度

  • readonly:设置文本框为只读状态。可以提交但是不能修改文本框的值。

  • placeholder:占位符

  • size:设置文本框的宽度

  • required:表明用户必须输入一个值,否则无法通过输入验证

  • <input type="text" list="abc" required>

  • autofocus:让光标聚焦在某个input元素上,方便用户直接输入。<input name="user" autofocus>

  • disabled:禁止input元素 (连点击都不能)

  • list:为文本框提供建议值

<form>

<input type="text" list="abc">

<button>提交</button>

</form>

<datalist id="abc">

<option value="1">湖南</option>

<option value="2">海南</option>

</datalist>

  • value:默认在输入框内出现的值

  • form:与表单外的数据挂钩一遍提交

<form id="register" name="reg" action="index.html">

用户名:<input name="user">

<button>提交</button>

</form>

年龄:<input name="age" form="register">

  • label标签:把文字和input标签包裹起来可以方便设置样式,并且当用户点击文字的时候,光标会自动移入到对应的input框。(如果只是设置了文字用label包裹,又想点击文字将标签自动移入对应的框,可以将label的属性for的值设置成与input的id设置成一样)

<label for="user"> 用户名:</label>

<input id="user" name="user">

  • fieldset标签:对表单进行编组。三个属性name、form、disabled

  • legend标签:添加分组说明的标签(也就是说给分组加上一个标题)

<fieldset>

<legend>注册分组</legend>

<label for="user"> 用户名:</label>

<input id="user" name="user">

<button>提交</button>

</fieldset>

  • button标签:创建一个按钮。type属性有三个值,submit表示提交,reset表示重置,也就是把input的值变成初始值。button表示一个普通的按钮。

  • select标签:下拉列表。需要和option标签配合使用。

  • name属性:设定提交时的名称

  • disabled属性:将下拉列表禁用

  • form属性:将表单外部与内部挂钩

  • size属性:下拉列表的个数

  • multiple属性:设置是否可以多选

  • required:选择验证,必须选择后才能通过

<select name="fruit" size="5" multiple >

<!--value值是真正要提交上去的值,而后面的是显示到页面的值-->

<option value="1">花花菇凉</option>

<option value="2">文小喵</option>

</select>

optgroup标签:对列表进行分组选择。

<form action="http://www.baidu.com">

<select name="fruit" multiple size="5">

<optgroup label="表情包">

<option value="1">花花菇凉</option>

<option value="2">文小喵</option>

</optgroup>

<optgroup label="书">

<option value="4" selected>微微一笑很倾城</option>

<option value="5">神雕侠侣</option>

</optgroup>

</select>

<button>提交</button>

</form>

  • textarea标签:生成一个可变大小的多行文本框

<!--wrap表示是否插入换行符 有soft和hard两种。hard提交之后在地址栏可以看见%插入的隐藏换行符-->

<textarea name="content" rows="20" cols="30" wrap="hard"></textarea>

  • pattern:正则表达式。开头和结尾用^和$ novalidate属性表示不要验证该表单

<input type="text" placeholder="请输入区号和座机" pattern="^[\d]{2,4}\-[\d]{6,8}$">

html对网页页面的布局或者是表单验证等功能都相对简陋,并且不同的浏览器支持的成熟度是不尽相同的。因此在大部分情况下,还是要借助jsjqury等前端库,来呈现丰富多彩的验证效果。