热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HTML5学习总结(二)——HTML5新增属性与表单元素

一、HTML5新增属性1.1、contextmenucontextmenu的作用是指定右键菜单。<!DOCTYPEhtml><html><head>
一、HTML5新增属性

1.1、contextmenu

contextmenu的作用是指定右键菜单。

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
head>
<body>
<div id="div1" style="height:900px; background: lightgreen;" contextmenu="menuShare">
div>
<menu id="menuShare" type="context">
<menuitem label="分享到QQ空间" onclick="alert('QQ');">menuitem>
<menuitem label="分享到朋友圈" onclick="alert('朋友圈');">menuitem>
<menuitem label="分享到微博" onclick="alert('微博');">menuitem>
menu>
body>
html>

 运行效果:

contextmenu 在Html5中,每个元素新增了一个属性:contextmenu, contextmenu 是上下文菜单,即鼠标右击元素会出现一个菜单。
menu 要实现鼠标右击元素会出现一个菜单,还必须了解HTML5里新增的另一个元素:menu 顾名思义menu是定义菜单的, menu 元素属性: type :菜单类型属。 有三个值 1)context:上下文; 2)toolbar:工具栏;3)list:列表

内部可以嵌入一个一个菜单项,即
menuitem 属性:
label:菜单项显示的名称
icon:在菜单项左侧显示的图标
onclick:点击菜单项触发的事件

1.2、contentEditable

规定是否可编辑元素的内容
属性值:
true -----可以编辑元素的内容
false -----无法编辑元素的内容
inherit -----继承父元素的contenteditable属性
当为空字符串时,效果和true一致。
当一个元素的contenteditable状态为true(contenteditable属性为空字符串,或为true,或为inherit且其父元素状态为true)时,意味着该元素是可编辑的。否则,该元素不可编辑。

document.body.cOntentEditable=true; 可以修改已发布网站

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>contentEditable属性title>
head>
<body>
<h2>contentEditable属性h2>
<div contenteditable="true">
Hello contentEditable
div>
body>
html>

1.3、hidden

hidden属性用于隐藏该元素。一旦使用了此属性,则该元素就不会在浏览器中被显示
2个布尔值
true 规定元素是可见。
false 规定元素是不可见。

        <div hidden="hidden">
Hello Hidden
div>

为了兼容一些不支持该属性的浏览器(IE8),可以在CSS中加如下样式:

*[hidden]{
   display: none;
}

var div1=document.querySelector("body #div1");
div1.innerHTML+=" +++";

1.4、draggable

规定元素是否可拖拽
3个枚举值
true 规定元素是可拖动的。
false 规定元素是不可拖动的。
auto 使用浏览器的默认特性。

示例:

DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<script src="Scripts/jquery-1.11.3.min.js" type="text/Javascript" charset="utf-8">script>
<title>title>
<style>
#div1,
#div3
{
height
: 200px;
width
: 200px;
border
: 1px solid #00f;
margin-bottom
: 10px;
}
#div2
{
height
: 100px;
width
: 100px;
background
: yellow;
}
style>
<script>
var div1, div2, div3, msg;
window.onload
= function() {
div1
= document.getElementById("div1");
div2
= document.getElementById("div2");
div3
= document.getElementById("div3");
msg
= document.getElementById("msg");

div2.ondragstart
=function(){
msg.innerHTML
+="div2开始拖动了
";
}
div2.ondrag
=function(){
msg.innerHTML
+="拖动中
";
}
div2.ondragend
=function(){
msg.innerHTML
+="拖动结束
";
}

div1.ondragover
= function(e) {
e.preventDefault();
}
div1.ondrop
= function(e) {
div1.appendChild(div2);
}
div3.ondragover
= function(e) {
e.preventDefault();
}
div3.ondrop
= function(e) {
div3.appendChild(div2);
}

$(
"#div1").data("name","电池");
alert($(
"#div1").data("name"));

div1.setAttribute(
"data-order-price",998.7);
alert(div1.getAttribute(
"data-order-price"));
}
script>
head>

<body>
<div id="div1" data-order-price="98.5" data-name="充电宝">div>
<div id="div3">div>
<div id="div2" draggable="true">div>
<h3 id="msg">h3>
body>

html>

运行结果: 

1.5、data-*

data-*属性能让用户自定义属性的方式来存储数据

取值:
getAttribute('data-order-amount')
dataset.orderAmount
jQuery中的data()方法同样可以访问

使用jQuery与Javascript添加与获取data属性示例:

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>data-*title>
<script src="js/jquery-1.11.3.min.js" type="text/Javascript" charset="utf-8">script>
head>
<body>
<h2>data-*h2>
<div id="div1" data-student-name="Tom" data-stu='{"a":1,"b":2}'>div>
<button onclick="addData()">添加数据button>
<button onclick="getData()">获取数据button>
<script type="text/Javascript">
var div1=document.getElementById("div1");
function addData()
{
//给div1添加属性data-student-name,值为rose
div1.setAttribute("data-student-name","Rose");
$(
"#div1").data("stu-mark","99分");
}
function getData()
{
//原生Javascript
//alert(div1.getAttribute("data-student-name"));

//jQuery
alert($("#div1").data("student-name"));
alert($(
"#div1").data("stu").a);
alert($(
"#div1").data("stu-mark"));
}


var x="{a:1}";
alert(eval(
"("+x+")").a);
script>
body>
html>

 运行效果:

 

1.6、placeholder占位属性

这是一个很实用的属性,免去了用JS去实现点击清除表单初始值.浏览器支持也还不错,除了Firefox,其他标准浏览器都能很好的支持

            <p>
<label>邮箱:label>
<input type="email" name="mail" id="mail" value="" placeholder="请输入邮箱"/>
p>

1.7、required必填属性

约束表单元在提交前必须输入值。

            <p>
<label>博客:label>
<input type="url" name="blog" id="blog" value="" required="required"/>
p>

1.8、pattern正则属性

约束用户输入的值必须与正则表达式匹配。

            <p>
<label>帐号:label>
<input type="text" required="required" pattern="^[0-9a-zA-Z]{6,16}$" />请输入a-zA-Z0-9且长度6-16位的字符
p>

 

1.9、autofocus自动聚焦属性

            <p>
<label>博客:label>
<input type="url" name="blog" id="blog" value="" required="required" autofocus="autofocus"/>
p>

让指定的表单元素获得焦点。

1.10、autocomplete自动完成属性

当表单元素设置了自动完成功能后,会记录用户输入过的内容,双击表单元素会显示历史输入。

该属性默认是打开的。

1.11、novalidate不验证属性

novalidate 属性规定在提交表单时不应该验证 form 或 input 域。

1.12、multiple多选属性

multiple 属性规定输入域中可选择多个内容,如:email 和 file

            <p>
<label>相片:label>
<input type="file" multiple="multiple"/>
p>

DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>HTML5新的表单元素title>
head>

<body>
<h2>HTML5新的表单元素h2>
<form>
<p>
<label>姓名:label>
<input type="text" required="required"/>
p>
<p>
<label>相片:label>
<input type="file" multiple="multiple"/>
p>
<p>
<label>帐号:label>
<input type="text" name="username" autocomplete="on" required="required" pattern="^[0-9a-zA-Z]{6,16}$" />请输入a-zA-Z0-9且长度6-16位的字符
p>
<p>
<label>邮箱:label>
<input type="email" name="mail" id="mail" value="" placeholder="请输入邮箱"/>
p>
<p>
<label>博客:label>
<input type="url" name="blog" id="blog" value="" required="required" autofocus="autofocus"/>
p>
<p>
<label>生日:label>
<input type="date">
p>
<p>
<label>身高:label>
<input type="number" max="226" min="80" step="10" value="170" />
p>
<p>
<label>肤色:label>
<input type="color" onchange="document.bgColor=this.value" />
p>
<p>
<label>体重:label>
<input type="range" max="500" min="30" step="5" value="65" onchange="showValue(this.value)"/>
<span id="rangeValue">span>
p>
<button formnovalidate="formnovalidate">提交button>
<script type="text/Javascript">
function showValue(val){
document.getElementById(
"rangeValue").innerHTML=val;
}
script>
form>
body>

html> 
二、HTML5表单新功能解析

HTML表单一直都是Web的核心技术之一,有了它我们才能在Web上进行各种各样的应用,才能和服务器进行方便快捷的交互。HTML5 Forms新增了许多新控件及其API,方便我们做更复杂的应用,而不用借助其它前端脚本语言(如:Javascript),极大的解放了我们的双手。

 

2.1、表单结构更自由

在HTML5中表单完全可以放在页面任何位置,然后通过新增的form属性指向元素所属表单的id值,即可关联起来。

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
head>
<body>
姓名:
<input type="text" name="realname" form="form1"/>
<form id="form1" method="get">
<button>提交button>
form>
body>
html>

运行结果:

2.2、表单重写属性

表单重写属性(form override attributes)允许您重写 form 元素的某些属性设定。
表单重写属性有:
formaction - 重写表单的 action 属性
formenctype - 重写表单的 enctype 属性
formmethod - 重写表单的 method 属性
formnovalidate - 重写表单的 novalidate 属性
formtarget - 重写表单的 target 属性

示例:

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>title>
head>
<body>
姓名:
<input type="text" name="realname" form="form1"/>
<form id="form1" method="get">
<button formmethod="get" formaction="d01.html">get提交给d01.htmlbutton>
<button formmethod="post" formaction="d02.html">post提交d02.htmlbutton>
form>
body>
html>

 运行结果:

2.3、邮箱与URL输入

email输入类型外表与文本框一样,但在移动端运行时将切换对应的输入键盘,约束格式

格式:

url输入类型
说明:上面代码展示的文本域要求输入格式正确的URL地址,Opera中会自动在开始处添加http://.
格式:

 

示例代码:

DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML5新的表单元素title>
head>
<body>
<h2>HTML5新的表单元素h2>
<form>
<p>
<label>邮箱:label>
<input type="email" name="mail" id="mail" value="" />
p>
<p>
<label>博客:label>
<input type="url" name="blog" id="blog" value="" />
p>
<button>提交button>
form>
body>
html>

2.4、日期时间相关输入类型

提供日历控件,但目前只有Opera/Chrome新版本支持,且展示效果也不一样..





            <p>
<label>生日:label>
<input type="date">
p>

 

2.5、数字输入类型

实现一个数字输入框,输入不了非数字字符。


max number 规定允许的最大值
min number 规定允许的最小值
step number 规定合法的数字间隔(如果 step="3",则合法的数是 -3,0,3,6 等)
value number 规定默认值

            <p>
<label>身高:label>
<input type="number" max="226" min="80" step="10" value="168" />
p>

 

必须输入数字,且数字的大小要介于指定的范围。

2.6、range滑块类型

特定值的范围的数值,以滑动条显示

 max number 规定允许的最大值
min number 规定允许的最小值
step number 规定合法的数字间隔
(如果 step="3",则合法的数是 -3,0,3,6 等)
value number 规定默认值

            <p>
<label>体重:label>
<input type="range" max="500" min="30" step="5" value="65" onchange="showValue(this.value)"/>
<span id="rangeValue">span>
p>
<button>提交button>
<script type="text/Javascript">
function showValue(val){
document.getElementById(
"rangeValue").innerHTML=val;
}
script>

 

 

 默认没有显示值,需要使用Javascript手动显示。

2.7、搜索输入类型

此类型表示输入的将是一个搜索关键字,可显示一个搜索小图标。

在Chrome中右边会出现有一个清除符号。

2.8、电话输入类型

此类型要求输入一个电话号码,但实际上它并没有特殊的验证,与text类型没什么区别.

在移动端会弹出输入数字的键盘。

2.9、color输入类型

此类型表单,可让用户通过颜色选择器选择一个颜色值,并反馈到该控件的value值中

            <p>
<label>肤色:label>
<input type="color" onchange="document.bgColor=this.value" />
p>

 

 

DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>HTML5新的表单元素title>
head>

<body>
<h2>HTML5新的表单元素h2>
<form>
<p>
<label>姓名:label>
<input type="text" required="required"/>
p>
<p>
<label>相片:label>
<input type="file" multiple="multiple"/>
p>
<p>
<label>帐号:label>
<input type="text" name="username" autocomplete="on" required="required" pattern="^[0-9a-zA-Z]{6,16}$" />请输入a-zA-Z0-9且长度6-16位的字符
p>
<p>
<label>邮箱:label>
<input type="email" name="mail" id="mail" value="" placeholder="请输入邮箱"/>
p>
<p>
<label>博客:label>
<input type="url" name="blog" id="blog" value="" required="required" autofocus="autofocus"/>
p>
<p>
<label>生日:label>
<input type="date">
p>
<p>
<label>身高:label>
<input type="number" max="226" min="80" step="10" value="170" />
p>
<p>
<label>肤色:label>
<input type="color" onchange="document.bgColor=this.value" />
p>
<p>
<label>体重:label>
<input type="range" max="500" min="30" step="5" value="65" onchange="showValue(this.value)"/>
<span id="rangeValue">span>
p>
<button formnovalidate="formnovalidate">提交button>
<script type="text/Javascript">
function showValue(val){
document.getElementById(
"rangeValue").innerHTML=val;
}
script>
form>
body>

html>
三、特殊的超链接

3.1、短信

短信

在手机端,当点击短信时将实现发送短信功能,进入发送短信界面,自动填写好手机号码

3.2、电话

电话

在手机端,当点击电话时将实现拨打电话功能,进入拨打电话界面,自动填写好手机号码

3.3、邮件

邮件

点击邮件时将启动客户端发送邮件的软件如outlook,foxmail等

3.4、QQ客户

QQ客服

3.5、地图

 href="http://map.baidu.com/mobile/webapp/search/search/qt=s&wd=%E7%8F%A0%E6%B5%B7%E6%B8%AF&c=348&searchFlag=bigBox&version=5&exptype=dep/vt=map/?fromhash=1">地图

在手机端可以直接进入baidu的地图

3.6、分享

自定义设置:shang.qq.com

 

 示例代码:

DOCTYPE html>
<html>

<head>
<meta charset="UTF-8">
<title>title>
head>

<body>
<a href='sms:15919218899'>短信a>
<br />
<a href="tel:15919218899">电话a>
<br />
<a href="mailto:99519876@qq.com">邮件a>
<br/>
<a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=99518888&site=qq&menu=yes" alt="点击这里给我发消息" title="点击这里给我发消息">QQ客服a>
<br />
<a href="http://map.baidu.com/mobile/webapp/search/search/qt=s&wd=%E7%8F%A0%E6%B5%B7%E6%B8%AF&c=348&searchFlag=bigBox&version=5&exptype=dep/vt=map/?fromhash=1">地图a>
<br />
<a href="http://map.baidu.com/mobile/webapp/index/index#place/detail/qt=ninf&wd=%E5%8D%97%E6%96%B9IT%E5%AD%A6%E9%99%A2&c=140&searchFlag=bigBox&version=5&exptype=dep&src_from=webapp_all_bigbox&sug_forward=&src=0&uid=717b5c621070ee955d0d0270&industry=education&qid=3767972802907606580/showall=1&pos=0&da_ref=listclk&da_qrtp=11&da_adtp=&da_log=sampid%3A3_eno%3A206_adnum%3A0_sid%3A9712246999610050_from%3Awebappmap_exptype%3Aurl_query%3A%E5%8D%97%E6%96%B9IT%E5%AD%A6%E9%99%A2_adids%3A_killnum%3A0_userids%3A&da_adquery=%E5%8D%97%E6%96%B9it%E5%AD%A6%E9%99%A2&da_adtitle=%E5%8D%97%E6%96%B9IT%E5%AD%A6%E9%99%A2&da_adindus=%E6%95%99%E8%82%B2%E5%9F%B9%E8%AE%AD%3B%E9%AB%98%E7%AD%89%E9%99%A2%E6%A0%A1&detail_from=list%26pos%3D0%26ad_page_logs%3D%26semStatType%3Dlist&vt=map">IT学院a>
<br />
<div class="bdsharebuttonbox"><a href="#" class="bds_more" data-cmd="more">a><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间">a><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博">a><a href="#" class="bds_tqq" data-cmd="tqq" title="分享到腾讯微博">a><a href="#" class="bds_renren" data-cmd="renren" title="分享到人人网">a><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信">a>div>
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"1","bdSize":"32"},"share":{},"image":{"viewList":["qzone","tsina","tqq","renren","weixin"],"viewText":"分享到:","viewSize":"16"},"selectShare":{"bdContainerClass":null,"bdSelectMiniList":["qzone","tsina","tqq","renren","weixin"]}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
</body>

</html>

 运行效果:

 

 四、示例代码下载

 github:https://github.com/zhangguo5/HTML5_3_1


推荐阅读
  • CSS高级技巧:动态高亮当前页面导航
    本文介绍了如何使用CSS实现网站导航栏中当前页面的高亮显示,提升用户体验。通过为每个页面的body元素添加特定ID,并结合导航项的类名,可以轻松实现这一功能。 ... [详细]
  • 本文详细介绍了如何在Android 4.4及以上版本中配置WebView以实现内容的自动高度调整和屏幕适配,确保中文显示正常,并提供代码示例。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • 本文总结了在使用HTML5 Canvas进行开发时常见的错误及其解决方案,帮助开发者避免常见的陷阱,提高开发效率。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文详细介绍了 Android 开发中 layout_gravity 属性的使用方法及其在不同布局下的效果,旨在帮助开发者更好地理解和利用这一属性来精确控制视图的布局。 ... [详细]
  • springMVC JRS303验证 ... [详细]
  • 本文详细解析了HTML5中nav标签的功能及其在网页设计中的应用,帮助开发者更好地理解和使用这一标签来提升网站的结构化水平。 ... [详细]
  • 利用HTML5 Canvas构建商场监控系统的实践案例
    本文详细探讨了如何运用HTML5的Canvas技术来构建商场监控系统,旨在为相关领域的开发者提供实用的技术指导和灵感。文章不仅提供了具体的代码示例,还深入分析了实现过程中可能遇到的问题及解决方案。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文介绍了如何利用摄像头捕捉图像,并将捕获的图像数据保存为文件。通过详细的代码示例,展示了摄像头调用的具体实现方法,适用于多种应用场景,如安全监控、图像处理等。 ... [详细]
  • 本文详细介绍了如何在Kendo UI for jQuery的数据管理组件中,将行标题字段呈现为锚点(即可点击链接),帮助开发人员更高效地实现这一功能。通过具体的代码示例和解释,即使是新手也能轻松掌握。 ... [详细]
  • HTML5大文件传输技术深度解析与实践分享
    本文深入探讨了HTML5在Web前端开发中实现大文件上传的技术细节与实践方法。通过实例分析,详细讲解了如何利用HTML5的相关特性高效、稳定地处理大文件传输问题,并提供了可供参考的代码示例和解决方案。此外,文章还讨论了常见的技术挑战及优化策略,旨在帮助开发者更好地理解和应用HTML5大文件上传技术。 ... [详细]
author-avatar
mobiledu2502928311
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有