HTML5“Details”和“Summary”元素介绍

05-06

很多javascript库都为开发者提供了用于在页面上进行互动的组件。在 HTML5中,同样也有一些可以用于互动的元素。在这篇文章中,我们将要介绍 HTML5的<details><summary>元素,这两个元素能够使HTML组件像手风琴一样进行折叠和展开。

使用<details><summary>元素

<details>元素可以在<body>元素的任何地方使用。下面是一个非常简单的例子:

<details>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas, impedit.</p>
</details>                              
                            

在上面的<details>元素中包含了一个段落,它的作用和其它的HTML分段元素类似。它定义了一个包含子元素的带语义的分段元素,就好像使用<figure>元素来包含图片,表单元素来包含<input><textarea>元素。它还可以嵌套其它的<details>元素。

<details>元素在浏览器上的显示效果和其它元素是不同的,在Chrome, Safari和最新版本的Opera浏览器中,它会显示一个小三角符号在左边,右边是Detail文字。有趣的是,在中文浏览器中右边会显示“详细信息”字样。

Detail样式

<details>元素会像手风琴一样,可以展开和折叠。初始化的时候,它里面的内容是被折叠起来的。当你点击小三角或小三角水平方向上的任何地方,都可以展开或折叠<details>元素。我们甚至还可以使用Tab键或者空格键Space 或回车键Enter来切换它。

Detail折叠和展开效果

打开状态

<details>元素处于打开状态的时候,你使用浏览器后台开发工具查看它的代码,会发现这是的<details>元素多了一个参数open。我们同样也可以为<details>元素添加open参数使它初始化时就处于展开状态。

<details open>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas, impedit.</p>
</details>                              
                            

得到的结构如下边的样子。

初始化时就处于打开状态的“details”元素。

Summary元素

<details>元素通常都和<summary>元素一起使用。但是<summary>元素是可选的。

那么,他们结合在一起使用会是什么情况呢?看下面的例子:

<details open>
    <summary>Hello World</summary>
    <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas, impedit.</p>
</details>                              
                            

你会发现,上面的例子中,小三角右边的文字“Details(详细信息)”会被替换为<summary>中的“Hello World”。

嵌套使用

前面提到,一个<details>元素可以包含另外一个<details>元素。例如:

<details>
    <summary>第一级目录</summary>
    <p>HTML5 details元素详解</p>
    <details>
        <summary>第二级目录</summary>
        <p>关于HTML5 Summary元素的介绍</p>
    </details>
</details>                              
                            

得到的结果如下:

第一级目录

HTML5 details元素详解

第二级目录

关于HTML5 Summary元素的介绍

上面的目录结构在视觉上分不出哪个是父目录,因为它们都是对齐容器的左边。但是我们可以通过为它们添加一些CSS样式来使它们看起来有层次感。下面就来看看如何为它们添加CSS样式。

为Details元素添加CSS样式

<details>元素和<summary>元素能够像其它块级元素一样添加CSS样式。可以通过任何一种CSS选择器来选择它们:

details {
    padding: 5px 30px;
    background-color: #588d3f;
    margin-bottom: 10px;
}                            
                            
第一级目录

HTML5 details元素详解

第二级目录

关于HTML5 Summary元素的介绍

另外,你可以为<details>元素的open状态添加一些样式:

details[open] {
    /* 在这里添加你的样式 */
}                              
                            

<summary>元素同样也可以添加样式。当你用鼠标滑过一个可以点击的元素,鼠标会变成小手的形状。但是<summary>同样是可以点击的元素,但鼠标滑过它并不会变小手的形状。当鼠标放在<summary>元素上的时候,鼠标会变成text的鼠标形状,这让人感到非常不爽,你可以为它添加样式,使鼠标滑过它时变为小手的形状。

summary {
    cursor: pointer;
}                              
                            
为小三角添加CSS样式

你看到这里也许会问:<details>元素的小三角符号可以添加样式吗?这个问题现在还没有统一的标准。Webkit内核的浏览器使用伪元素来解决这个问题:::-webkit-details-marker。通过这个伪元素,我们可以定制小三角的前景色,背景色和尺寸大小:

summary::-webkit-details-marker {
    color: #fff;
    background-color: #000;
}                              
                            

但是,直接通过::-webkit-details-marker伪元素来修改小三角的样式是行不通的。目前,我们只能通过::before::after伪元素来替换它们。

summary::-webkit-details-marker {
    display: none;
}
summary:before {
    content: "\2714"; /* the new icon */
    color: #696f7c;
    margin-right: 5px;
}                              
                            
浏览器支持

近年来,浏览器对这两个元素的支持越来越广泛。在2011-2012年,只有Chrome浏览器支持<details><summary>元素(尽管当时在使用上有许多问题)。Safari 和 Opera浏览器目前也可以使用这两个元素了。

IE和Firefox浏览器目前还不支持这两个元素,但是可以使用一些 jQuery插件来在使用这些浏览器时将代码回退,例如 jQuery Details。

这些插件的实现方式的CSS代码类似下面的样子:

summary:before {
    content: "\25B8"; /* unicode character of the litle triangle  */
    color: #000;
    margin-right: 5px;
}                              
                            

更详细的浏览器支持列表可以查看: caniuse.com

浏览器支持details元素列表

小结

网站上的数据交互是非常重要的,这些新的HTML5元素为我们的开发提供了很大的便利。我们可以不使用javascript代码就可以创建一个类似手风琴的效果的数据交互组件。所以,学习好HTML5 <details><summary>元素的使用方法,为你将来的应用打好基础。

Previous:
上一篇: CSS Calc():制作响应式网格布局的锋利武器
Next:
下一篇: 使用HTML5“progress”元素

本文版权属于jQuery之家,转载请注明出处: http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/201505061790.html

欢迎访问jQuery之家

jQuery之家

自由分享jQuery、html5、css3的插件库。在这里你还可以找到各种jQuery教程、html5教程、css3教程。

返回顶部

PHP网站源码大鹏至尊标王西乡百搜标王双龙网站优化排名石岩关键词排名吉祥企业网站制作南山品牌网站设计东莞推广网站深圳企业网站制作布吉网站关键词优化塘坑网站优化软件永湖建网站荷坳网站关键词优化大浪网站设计永湖百度竞价包年推广福田标王塘坑营销型网站建设民治百度竞价坑梓百搜词包民治网站推广沙井如何制作网站坪山seo排名横岗建站民治建网站西乡网络推广惠州模板制作南山企业网站设计南澳百度关键词包年推广龙华SEO按天计费坪山建设网站大浪网络广告推广歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化