回答html5自定义属性什么用

 所属分类:web前端开发

 浏览:104次-  评论: 0次-  更新时间:2022-11-03
描述:更多教程资料进入php教程获得。 html5自定义属性“data-*”用于存储私有页面后应用的自定义数据,而自定义的数据可以让页面拥有更好的交互...
更多教程资料进入php教程获得。

html5自定义属性“data-*”用于存储私有页面后应用的自定义数据,而自定义的数据可以让页面拥有更好的交互体验(不需要使用Ajax或去服务端查询数据),语法“<element data-*="指定属性值(一个字符串)">”;“data-*”属性由两部分组成:1、属性名不要包含大写字母,在“data-”后必须至少有一个字符;2、属性值,该值可以是任何字符串。

前端(vue)入门到精通课程:进入学习
Apipost = Postman + Swagger + Mock + Jmeter 超好用的API调试工具:点击使用

本教程操作环境:windows7系统、HTML5版、Dell G3电脑。

html5自定义属性data-*

data-* 属性用于存储私有页面后应用的自定义数据,是 HTML5 新增的属性。

<element data-*="somevalue">
登录后复制
  • somevalue:指定属性值 (一个字符串)

data-* 属性可以在所有的 HTML 元素中嵌入数据。

自定义的数据可以让页面拥有更好的交互体验(不需要使用 Ajax 或去服务端查询数据)。

data-* 属性由以下两部分组成:

  • 属性名不要包含大写字母,在 data- 后必须至少有一个字符。

  • 属性值,该属性值可以是任何字符串

注意: 自定义属性前缀 "data-" 会被客户端忽略。

利用dataset可以获取data-属性构造的对象,该方法目前只能在Chrome 、Opera等部分浏览器中实现,其他浏览器如需获取其属性值需要使用getAttribute和setAttribute来操作。

只要在标签里面以”data-”为前缀定义我们的自定义属性就可以用来进行一些数据的存放。

<div id="myDiv" data-attribute="value">在标签里设置H5新增的自定义属性</div>
登录后复制
登录后复制

这个data属性还可以应用在CSS中,前提是你的浏览器支持after伪类,以及content的attr属性(低版本的IE不支持):

<div id="myDiv" data-attribute="属性值">data属性应用于CSS中</div>
登录后复制
#myDiv{
  position: ralative;
}
 
#myDiv:hover:after{
  position: absolute;
  top: 0px;
  left: 0px;
  content: attr(data-attribute);
  color: red;
}
登录后复制

如何获取data属性的值?

<div id="myDiv" data-attribute="value">在标签里设置H5新增的自定义属性</div>
登录后复制
登录后复制

1、使用getAttribute来获取

var myDiv = document.getElementById("myDiv");
var theValue = myDiv.getAttribute("user-defined-attribute");
登录后复制

2、使用Html5自定义属性对象Dataset来获取

var myDiv = document.getElementById("myDiv");
 
var theValue = myDiv.dataset.attribute;
登录后复制

注意:带连字符连接的名称在使用的时候需要命名驼峰化,即大小写组合书写,这与应用元素的style对象类似,dom.style.borderColor。例如data属性为data-other-attribute,则我们要获取相应的值可以使用:myp.dataset.otherAttribute

如果Html元素定义了多个自定义属性,如何获取?

<div id="myDiv" data-attribute1="value" data-attribute2="value2" data-attribute3="value3">在标签里设置多个自定义属性</div>
登录后复制

1、使用循环遍历

 var myDiv = document.getElementById("myDiv");
var attrs = myDiv.attributes,
var expense = {}, i, j;  
for (i = 0, j = attrs.length; i < j; i++) {
  if(attrs[i].name.substring(0, 5) == 'data-') {
    expense[attrs[i].name.substring(5)] = attrs[i].value;
  }
}
登录后复制

2、使用dataset属性

var expense = document.getElementById('myDiv').dataset;
登录后复制

注:dataset并不是典型意义上的JavaScript对象,而是个DOMStringMap对象DOMStringMap是HTML5一种新的含有多个名-值对的交互变量

1)、让所有的自定义的属性值塞到一个数组中

var chartInput = [];
 
for (var item in expense) {
  chartInput.push(expense[item]);
}
登录后复制

2)、删掉一个data属性

delete myDiv.dataset.attribute;
登录后复制

3、增加一个data属性

myDiv.dataset.attribute4 = 'value4';
登录后复制

dataset的兼容性处理

如果浏览器不支持dataset,有必要做一下兼容处理:

if(myDiv.dataset) {
  myDiv.dataset.attribute = "valueXX"; // 设置自定义属性
  var theValue = myDiv.dataset.attribute; // 获取自定义属性
} else {
  myDiv.setAttribute("data-attribute", "valueXX"); // 设置自定义属性
  var theValue = myDiv.getAttribute("data-attribute"); // 获取自定义属性
}
登录后复制

结语:

使用dataset操作data 要比使用getAttribute速度稍微慢些,虽然使用dataset不能提高代码的性能,但是对于简洁代码,提高代码的可读性和可维护性是很有帮助的。

【推荐课程:HTML5视频教程、web前端】

以上就是html5自定义属性什么用的详细内容,更多请关注zzsucai.com其它相关文章!

积分说明:注册即送10金币,每日签到可获得更多金币,成为VIP会员可免金币下载! 充值积分充值会员更多说明»

讨论这个素材(0)回答他人问题或分享使用心得奖励金币

〒_〒 居然一个评论都没有……

表情  文明上网,理性发言!