当前位置: 首页 > news >正文

HTML5 details 标签

HTML5 中新增的<details>标签允许用户创建一个可展开折叠的元件,让一段文字或标题包含一些隐藏的信息。

用法

一般情况下,details用来对显示在页面的内容做进一步骤解释。其展现出来的效果和jQuery手风琴插件差不多。

其大致写法如下:

<details>
    <summary>Google Nexus 6</summary>
    <p>商品详情:</p>
    <dl>
        <dt>屏幕</dt>
        <dd>5.96” 2560x1440 QHD AMOLED display (493 ppi)</dd>
        <dt>电池</dt>
        <dd>3220 mAh</dd>
        <dt>相机</dt>
        <dd>13MP rear-facing with optical image stabilization 2MP front-facing</dd>
        <dt>处理器</dt>
        <dd>Qualcomm® Snapdragon™ 805 processor</dd>
    </dl>
</details>

首先是<details>标签,里面接着是标题<summary>,这里面的内容一般简短,具有总结性,会展示在页面。接着可以跟任意类型的HTML元素作为详情内容,这些内容需要在点击<summary>才会呈现。

上面代码呈现出来的效果会是下面这样的:

301339585745070.gif

最开始详情是隐藏的,当点击时都会展现。

open 属性

当然,你也可以通过给<details>标签设置open属性让它默认为展开状态。

<details open>
    <summary>Google Nexus 6</summary>
    <p>商品详情:</p>
    <dl>
        <dt>屏幕</dt>
        <dd>5.96” 2560x1440 QHD AMOLED display (493 ppi)</dd>
        <dt>电池</dt>
        <dd>3220 mAh</dd>
        <dt>相机</dt>
        <dd>13MP rear-facing with optical image stabilization 2MP front-facing</dd>
        <dt>处理器</dt>
        <dd>Qualcomm® Snapdragon™ 805 processor</dd>
    </dl>
</details>

此时默认会把详情展开,而点击标题后会折叠起来。

示例

示例如上面那样,预览在线版本可点击此处。

浏览器兼容性

由于是HTML5新标签,浏览器支持情况不是很理想。从来自caniuse的数据来看,目前仅Chrome, Safari 8+ 和Opera 26+支持此标签。

可喜的是,如果你在caniuse开启了「显示来自UC浏览器的结果」 选项的话,会发现,国产的UC浏览器也支持了此标签。

301340119499017.jpg

Polyfill

既然支持情况如此不理解,那么使用垫片(polyfill)就很有必要了。

垫片就是在那些不支持此特性的浏览器上使用JavaScript来手动模拟,看起来好像是浏览器支持了一样。

chemerisuk给出了他的一个实现,源码在GitHub上,具体的实现思路也写成了博文发到了Smashing Magazine,用法可参见GitHub。

参考

  • HTML <details> Tag
  • HTML <dt> Tag
  • Making A Complete Polyfill For The HTML5 Details Element
  • better-details-polyfill

相关文章:

  • 重学前端-CSS篇3-颜色、单位、字体、命名规范、书写顺序
  • 递归与尾递归(C语言)
  • 面向对象-类与对象的定义和使用(包含init讲解)
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • Android进阶——Java注解实战之APT构建模块化的第一步
  • Android 仿微信, QQ 裁剪
  • 知名博客
  • JS时间比较大小
  • Web Service单元测试工具实例介绍之SoapUI
  • 春季学期第十一周作业
  • 【30-swift-projects-in-30-days】swift 5 学习 02.Watch'sDemo
  • 【phonegap】下载文件
  • DES算法总结
  • 基于C 的libvirt 接口调用
  • python基础知识~元组,range和字典
  • 【知识碎片】第三方登录弹窗效果
  • golang 发送GET和POST示例
  • Golang-长连接-状态推送
  • HTTP中GET与POST的区别 99%的错误认识
  • Java 网络编程(2):UDP 的使用
  • javascript 哈希表
  • Java新版本的开发已正式进入轨道,版本号18.3
  • mysql中InnoDB引擎中页的概念
  • PermissionScope Swift4 兼容问题
  • React-生命周期杂记
  • Vue2.0 实现互斥
  • Wamp集成环境 添加PHP的新版本
  • 给初学者:JavaScript 中数组操作注意点
  • 关于Java中分层中遇到的一些问题
  • 优秀架构师必须掌握的架构思维
  • 智能合约开发环境搭建及Hello World合约
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (续)使用Django搭建一个完整的项目(Centos7+Nginx)
  • (转)大型网站架构演变和知识体系
  • *p++,*(p++),*++p,(*p)++区别?
  • .axf 转化 .bin文件 的方法
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • /*在DataTable中更新、删除数据*/
  • /usr/bin/env: node: No such file or directory
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • [AutoSar]状态管理(五)Dcm与BswM、EcuM的复位实现
  • [BUAA软工]第一次博客作业---阅读《构建之法》
  • [BZOJ2208][Jsoi2010]连通数
  • [C\C++]读入优化【技巧】
  • [C++基础]-入门知识