文章目录
- HTML5 新增属性
- 公共属性
- hidden属性
- draggable属性
- contenteditable属性
- data-*属性
- input元素新增属性
- autocomplete属性
- autofocus属性
- placeholder属性
- required属性
- pattern属性
- form元素新增属性
- novalidate属性
HTML5 新增属性
公共属性
HTML5新增的常见公共属性有4个:
- hidden
- draggable
- contenteditable
- data-*
hidden属性
可以使用hidden属性来显示或隐藏某一个元素。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<div hidden>hello1</div>
<div>hello2</div>
</body>
</html>
draggable属性
可以使用draggable属性来定义某一个元素是否可以被拖动。
语法
<element draggable="true或false" ></element>
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
p {
display: inline-block;
padding: 10px;
border: 1px dashed gray;
background-color: #F1F1F1;
}
</style>
</head>
<body>
<p draggable="true">这是一段可以被拖动的文字</p>
</body>
</html>
contenteditable属性
可以使用contenteditable属性来定义某个元素的内容是否可以被编辑。
语法
<element contenteditable="true或false" ></element>
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
p {
display: inline-block;
padding: 10px;
border: 1px dashed gray;
background-color: #F1F1F1;
}
</style>
</head>
<body>
<p contenteditable="false">这是一段可以被编辑的文字</p>
</body>
</html>
data-*属性
可以使用data-*属性来为元素实现自定义属性。
语法
<element data-*="属性值" ></element>
说明
“data-”只是一个前缀,后面接一个小写的字符串,例如data-color、data-article-title等。
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
window.onload = function() {
var oP = document.getElementsByTagName("p")[0];
oP.style.color = oP.dataset.color;
}
</script>
</head>
<body>
<p data-color="red">你的努力程度之低,根本轮不到拼天赋。</p>
</body>
</html>
说明:可以使用DOM操作中的obj.dataset.xxx来获取data-*属性的值。
注意:
- 如果是data-xxx格式,则应该写成obj.dataset.xxx。例如data-color应该写成obj.dataset.color,而data-content应该写成obj.dataset.content。
- 如果是data-xxx-yyy格式,则应该写成obj.dataset.xxxYyy。例如data-fruit-price应该写成obj.dataset.fruitPrice,而data-animal-type应该写成obj.dataset.animalType。
input元素新增属性
为了提高开发效率,以及达到更好的用户体验,HTML5为input元素新增了大量的属性:
- autocomplete
- autofocus
- placeholder
- required
- pattern
autocomplete属性
可以使用autocomplete属性来实现文本框的自动提示功能。
语法
<input type="text" autocomplete="on或off" />
说明
autocomplete属性有两个属性值:on和off。
on表示开启,off表示关闭。
autocomplete属性一般都是结合datalist元素来实现自动提示功能。
autocomplete属性适用于所有文本框型的input元素,包括text、password、email、url、tel等。
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form method="post">
<input type="text" autocomplete="on" list="tips" />
<datalist id="tips">
<option value="HTML"></option>
<option value="CSS"></option>
<option value="JavaScript"></option>
<option value="Vue.js"></option>
<option value="React.js"></option>
<option value="Angular.js"></option>
</datalist>
</form>
</body>
</html>
autofocus属性
默认情况下,文本框是不会自动获取焦点的,必须点击文本框才会获取。
在HTML5之前,都是使用JavaScript的focus()方法来实现的,这种方式相对来说比较麻烦。在HTML5中,我们可以使用autofocus属性来实现文本框自动获取焦点。
语法
<input type="text" autofocus="autofocus" />
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form method="post">
<input type="text" autofocus />
</form>
</body>
</html>
placeholder属性
可以使用placeholder属性为文本框添加提示内容。
语法
<input type="text" placeholder="提示内容" />
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form method="post">
<input type="text" placeholder="请输入账号" /><br />
<input type="text" placeholder="请输入密码" />
</form>
</body>
</html>
required属性
可以使用required属性来定义文本框输入内容不能为空。如果文本框为空,则不允许提交。
语法
<input type="text" required="required" />
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form method="post">
<input type="text" required /><br />
<input type="submit" value="提交" />
</form>
</body>
</html>
pattern属性
可以使用pattern属性来为文本框添加验证功能。
语法
<input type="text" pattern="正则表达式" />
说明
email、url、tel这3个类型的input元素,本质上都内置了pattern属性,因此它们会自动进行相关匹配验证。
使用
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<form method="post">
<input type="text" pattern="^[a-zA-Z]\w{4,9}$" /><br />
<input type="submit" value="提交" />
</form>
</body>
</html>
说明:pattern="^[a-zA-Z]\w{4,9}$
表示文本框的内容必须符合“以字母开头,包含字母、数字或下划线,并且长度在5~10之间”的规则。
form元素新增属性
novalidate属性
可以使用novalidate属性来禁用form元素的所有文本框内置的验证功能,使用JavaScript来创建更为复杂且健全的验证,这时就要覆盖原有的验证机制了。
语法
<form novalidate="novalidate">
</form>
说明
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<script>
window.onload = function() {
var email = document.getElementById("email");
var tel = document.getElementById("tel");
var errorEmail = document.getElementById("errorEmail");
var errorTel = document.getElementById("errorTel");
var btn = document.getElementById("btn");
var oForm = document.getElementsByTagName("form")[0];
var regEmail = /^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
var regTel = /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/;
btn.onclick = function() {
if (!regEmail.test(email.value)) {
errorEmail.innerText = "请输入正确的邮箱地址";
return;
} else {
errorEmail.innerText = "";
}
if (!regTel.test(tel.value)) {
errorTel.innerText = "请输入正确的手机号码";
return;
} else {
errorTel.innerText = "";
}
//通过验证
oForm.submit();
}
}
</script>
</head>
<body>
<form method="post" novalidate>
<p>
<label>电子邮箱:<input id="email" type="email" value="abced@qq.com" /></label><span id="errorEmail"></span>
</p>
<p>
<label>手机号码:<input id="tel" type="tel" value="13745617896" /></label><span id="errorTel"></span>
</p>
<input id="btn" type="button" value="提交" />
</form>
</body>
</html>