这是补充HTML5基础知识的系列内容,其他为:

在上一篇随笔读书笔记:《HTML5开发手册》--figure、time、details、mark中,介绍了语义化标签details,如果还不知道其用法的可以点进去看一眼,本次就特地实战一下。

在HTML5之前,想通过纯CSS实现手风琴效果一般是借助checked或者target来完成,不过,HTML5提供了details元素,我们可以光明正大的拿来做手风琴了。

现在根据这篇文章The details and summary elements来实际操作一下。

效果1:MAC版显示简介

用过mac的同学对这个界面一定很熟悉,因为这个界面和我们今天要说的details有很多相近的地方,首先,其有折叠效果,用户可以自己选择打开或关闭哪一个,其次,当我们直接打开的时候,默认会有几个标签是打开的,有一些是关闭的,而这些我们的details都能实现。

代码地址:https://github.com/Gavin-YYC/html5demos/blob/master/html5/details-mac.html

效果预览

代码结构

<details open>
<summary>通用: </summary>
<dl>
<dt>种类:</dt><dd>便携文稿格式 (PDF)</dd>
<dt>大小:</dt><dd>121,765,394 字节(磁盘上的 121.8 MB)</dd>
<dt>位置:</dt><dd>/Users/yangyoucun/Desktop</dd>
<dt>创建时间:</dt><dd>2013年7月17日 星期三 11:37</dd>
<dt>修改时间: </dt><dd>2013年7月17日 星期三 11:37</dd>
</dl>
</details>
<details>
<summary>更多信息: </summary>
<dl>
<dt>版本: </dt><dd>1.5</dd>
<dt>页数: </dt><dd>722</dd>
<dt>分辨率: </dt><dd>631 × 835</dd>
<dt>安全性: </dt><dd>None</dd>
<dt>编码软件: </dt><dd>FreePic2Pdf - 1.26</dd>
<dt>来源: </dt><dd>jiu的MacBook Pro</dd>
</dl>
</details>
<details>
<summary>名称与拓展名: </summary>
<input type="text" name="" value="HTTP权威指南.pdf">
</details>
<details>
<summary>注释: </summary>
<textarea name="name"></textarea>
</details>
<details>
<summary>打开方式: </summary>
<select>
<option value="">预览(默认)</option>
</select>
</details>
<details open>
<summary>预览: </summary>
<img src="temp.png" alt="">
</details>

可以看到,上面代码HTML代码就已经可以实现这种折叠效果了,稍微添加了CSS就可以获得不一样的效果,完全不用去模拟实现。

另外,在我的代码中,我使用了table来展示上面的“更多信息”列表与“通用”列表,其实这并不符合语义,所以,在这里我使用了dl来表示描述列表,即该列表的形式为'name-value',并且其是对summary的项目描述,一组元信息,所以使用dl更加符合语义。

效果2:手风琴效果

这个效果是最为常见,通过details短短几行代码就可以实现该功能。

代码地址:https://github.com/Gavin-YYC/html5demos/blob/master/html5/details-accordion.html

效果预览

代码结构

<section>
<h1>Question List</h1>
<details>
<summary>Question 1</summary>
<p>answeransweransweransweransweransweranswerans</p>
</details>
<details open>
<summary>Question 2</summary>
<p>answeransweransweransweransweransweranswerawer</p>
</details>
<details>
<summary>Question 3</summary>
<p>answeransweransweransweransweransweransweranswerswer</p>
</details>
<details>
<summary>Question 4</summary>
<p>answeransweransweransweransweransweransansweranswer</p>
</details>
</section>

我们的折叠面板结构非常清晰,没有多余的元素节点,并且也没有任何的JavaScript代码,只需这些,我们的手风琴效果就实现了。

效果3:典型的文件程序卸载界面

这也是一个常用的应用场景,在安装或卸载程序的过程中,我们一般展示给用户具体的进度信息,对于细节一般隐藏起来,该场景便可以通过details来完成

下面看下截图:

样式优化规则:

对summary文字前面默认icon(▶)的修饰通过如下方式完成:

// 隐藏三角符号
details summary::-webkit-details-marker {
display: none;
}

为了更好的体验,还有一些样式需要处理:

summary {
outline: none; // 1、去掉点击时的外边框
user-select: none; // 2、不能点击选中
cursor: pointer; // 3、鼠标经过效果
}

有时summary的状态和details是否有open属性有关:

details[open] summary {
// 展开时的summary样式
color: red;
background-color: blue;
}

添加过渡与动画

在展开/收缩的过程中,我们依然可以制作一些有意思的动画,注意,这里的动画主要是指内容区的动画。

HTML结构如下:

<details>
<summary>First</summary>
<div>
<p>Set the animation to run when details open</p>
</div>
</details>

css部分如下:

@keyframes slideDown {
0% {
opacity: 0;
height: 0;
}
100% {
opacity: 1;
height: 20px;
}
}
details[open] > div {
animation: slideDown 1s linear both;
overflow:hidden;
}

总结

在实际项目中,有太多的场景是需要用户来操作显示/隐藏相关内容,这也是提高用户体验的一个过程,展示重点内容,把主动权交给用户。

对于这样的场景,details都可以发挥重要的内容。

HTML5--details活学活用的更多相关文章

  1. JVM活学活用——调优工具

    概述 工具做为图形化界面来展示更能直观的发现问题,另一方面一些耗费性能的分析(dump文件分析)一般也不会在生产直接分析,往往dump下来的文件达1G左右,人工分析效率较低,因此利用工具来分析jvm相 ...

  2. pandas pivot_table 活学活用实例教程

    pandas pivot_table 活学活用实例教程 导入相关数据分析的库 首先进行commentTime时间进行数据预处理 查看数据类型信息 最简单的透视表 直接敲击该函数,在notebook中可 ...

  3. 活学活用,webapi HTTPBasicAuthorize搭建小型云应用的实践

    HTTP使用BASIC认证,WebAPI使用[HTTPBasicAuthorize]标记控制器就是使用了BASIC认证. BASIC认证的缺点HTTP基本认证的目标是提供简单的用户验证功能,其认证过程 ...

  4. JVM活学活用——类加载机制

    类的实例化过程 有父类的情况 1. 加载父类静态    1.1 为静态属性分配存储空间并赋初始值     1.2 执行静态初始化块和静态初始化语句(从上至下) 2. 加载子类静态    2.1 为静态 ...

  5. JVM活学活用——优化springboot

    介绍 在SpringBoot的Web项目中,默认采用的是内置Tomcat,当然也可以配置支持内置的jetty,内置有什么好处呢? 1. 方便微服务部署. 2. 方便项目启动,不需要下载Tomcat或者 ...

  6. 活学活用wxPython基础框架

    看活活用wxpython这本书,基本框架是这样子的,这里有定义输出,然后打印出整个流程,可以看到是怎样执行的,明天请假了,五一回去玩几天,哈哈,估计假期过来都忘了 import wx import s ...

  7. JVM活学活用——GC算法 垃圾收集器

    概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了. jvm 中,程序计数器.虚拟机栈.本地方 ...

  8. JVM活学活用——Jvm内存结构

    Java内存结构: JVM内存结构主要是有三大块:堆内存.方法区和栈.堆内存是JVM中最大的一块由年轻代和老年代组成,而年轻代内存又被分为三部分,Eden空间.From Survivor空间.To S ...

  9. 活学活用,CSS清除浮动的4种方法

    清除浮动这个问题,做前端的应该再熟悉不过了,咱是个新人,所以还是记个笔记,做个积累,努力学习向大神靠近. CSS清除浮动的方法网上一搜,大概有N多种,用过几种,说下个人感受. 1.结尾处加空div标签 ...

随机推荐

  1. 一、JDBC的概述 二、通过JDBC实现对数据的CRUD操作 三、封装JDBC访问数据的工具类 四、通过JDBC实现登陆和注册 五、防止SQL注入

    一.JDBC的概述###<1>概念 JDBC:java database connection ,java数据库连接技术 是java内部提供的一套操作数据库的接口(面向接口编程),实现对数 ...

  2. [2018HN省队集训D8T1] 杀毒软件

    [2018HN省队集训D8T1] 杀毒软件 题意 给定一个 \(m\) 个01串的字典以及一个长度为 \(n\) 的 01? 序列. 对这个序列进行 \(q\) 次操作, 修改某个位置的字符情况以及查 ...

  3. codeforces 424D Biathlon Track

    codeforces 424D Biathlon Track 题意 题解 代码 #include<bits/stdc++.h> using namespace std; #define f ...

  4. APP的案例分析

    很多同学有误解,软件项目管理是否就是理论课?或者是几个牛人拼命写代码,其他人打酱油的课?要不然就是学习一个程序语言,搞一个职业培训的课?都不对,软件项目管理有理论,有实践,更重要的是分析,思辨,总结. ...

  5. PHP设计模式系列 - 装饰器

    什么是装饰器 装饰器模式,对已有对象的部分内容或者功能进行调整,但是不需要修改原始对象结构,可以使用装饰器设 应用场景 设计一个UserInfo类,里面有UserInfo数组,用于存储用户名信息 通过 ...

  6. Hibernate事务、缓存和连接池

    一.事务 1.数据库事务的概念 数据库事务是指由一个或多个SQL语句组成的工作单元,这个工作单元中的SQL语句相互依赖,如果有一个SQL语句执行失败,就必须撤销整个工作单元.在并发环境中,多个事务同时 ...

  7. python第九课——while死循环

    2.3.无限循环/死循环: 何时发生无限循环? 循环条件永远为True,就出现了无限循环 [注意] 无限循环是需要避免的,因为它极其占用系统资源: 但是配合我们之后讲的break等关键字,就会变得更有 ...

  8. jQuery文字“橡皮圈“特效

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. 【gulp】Gulp的安装和配置 及 系列插件

    注意:要安装俩次gulp(全局和本地):全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能. 之前由大牛帮忙配置的gulp来用.今天时间充裕,就和小伙伴一起动手配置 ...

  10. BZOJ2194: 快速傅立叶之二(NTT,卷积)

    Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1776  Solved: 1055[Submit][Status][Discuss] Descript ...