zoukankan      html  css  js  c++  java
  • HTML之Data attributes

    HTML 语法

    语法非常简单。所有在元素上以data-开头的属性为数据属性。比如说你有一片文章,你想要存储一些没有可视化展现意义的额外信息。请使用data属性:

    <article
      id="electriccars"
      data-columns="3"
      data-index-number="12314"
      data-parent="cars">
    ...
    </article>
    

    JavaScript 访问Edit

    在外部使用JavaScript去访问这些属性的值同样非常简单。你可以使用getAttribute()配合它们完整的HTML名称去读取它们,但标准定义了一个更简单的方法:DOMStringMap你可以使用dataset读取到数据。

    为了使用dataset对象去获取到数据属性,需要获取属性名中data-之后的部分(要注意的是破折号连接的名称需要转换为驼峰样式的名称)。

    var article = document.querySelector('#electriccars');

    article.dataset.columns // "3"
    article.dataset.indexNumber // "12314"
    article.dataset.parent // "cars"
    

    每一个属性都是一个可读写的字符串。在上面的例子中,article.dataset.columns = 5.将会调整属性的值为5。

    CSS 访问Edit

    请注意到,data attributes设定为HTML属性,他们同样能被CSS访问.比如你可以通过generated content使用函数attr()来显示data-parent的内容:

    article::before {
      content: attr(data-parent);
    }
    

    你同样可以在CSS中使用属性选择器根据data来改变样式:

    article[data-columns='3'] {
       400px;
    }
    article[data-columns='4'] {
       600px;
    }
    

    你可以在这个JSBin 的实例里面看到全部的演示。

    Data属性同样可以存储不断变化的信息,比如游戏的得分。使用CSS选择器与JavaScript去访问可以让你得的花俏的效果,这里你并不需要你编写你常规的编写方案。 请参考这个视频 (JSBin example).

    IssuesEdit

    不要在data attribute里储存需要显示及访问的内容,因为一些其他的技术可能访问不到它们。另外爬虫不能将data attribute的值编入索引中。

    IE的支持度及显示效果是最主要讨论的问题。IE11+支持这个标准,但所有更早期的版本都不支持dataset。为了支持IE10及以下的版本,你必须使用getAttribute() 来访问。另外,读取 data-attributes的行为相比JS存储数据会慢。使用dataset 会比使用getAttribute()读取数据来得慢。

    出处:https://www.jianshu.com/p/b4f297ad3c04
  • 相关阅读:
    C#——Unity事件监听器
    关于RAS加解密的工具类
    关于Map的源码分析之HashMap
    关于Map的源码分析
    关于Set的源码分析
    关于集合List的源码分析
    关于String源码分析
    hdu 1285 确定比赛名次
    hdu 2553 N皇后问题
    hdu 1312 Red and Black
  • 原文地址:https://www.cnblogs.com/zhou195/p/8398684.html
Copyright © 2011-2022 走看看