惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
V
Visual Studio Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
T
Tailwind CSS Blog
GbyAI
GbyAI
爱范儿
爱范儿
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
有赞技术团队
有赞技术团队
罗磊的独立博客
Recent Announcements
Recent Announcements
博客园 - 司徒正美
M
MIT News - Artificial intelligence
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
B
Blog RSS Feed
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网

博客园 - replace

CSS常用滤镜 关于Adodb.Stream 的使用说明 - replace - 博客园 Dom操作xml的常用方法 - replace - 博客园 DOM精简知识教程 在b/s开发中经常用到的javaScript技术 XML学习笔记-XML的基本语法 100%背景图片 - replace - 博客园 简单易变的CSS阴影效果 - replace - 博客园 HTML元素的默认CSS设置 CSS语法技巧 CSS兼容要点 Ajax程序设计入门 如何使用Ajax技术开发Web应用程序(2) 如何使用Ajax技术开发Web应用程序(1) _blank开新窗口不符合标准? SQL 快速参考 SQL Servers - RDBMS SQL指南- CREATE VIEW 语句 SQL指南-SELECT INTO语句 SQL指南-GROUP BY 和 HAVING
CSS+JS制作可折叠内容块 - replace - 博客园
replace · 2006-04-12 · via 博客园 - replace

代码解析

HTML 代码部分

<div class="save">

<h1><a href="javascript:void(0)" class="dsphead"
onclick="dsp(this)">
<span class="dspchar">+</span> heading</a></h1>
<div class="dspcont">section</div>
<!--以上部分是第一个heading,h1中有个onclick触发了JS中的dsp(loc)函数,初始的+号是在class为dspcont的<span>里的,初始隐藏的内容则是在class为dspcont的div里的-->

<h1><a href="javascript:void(0)" class="dsphead"
onclick="dsp(this)">
<span class="dspchar">+</span> heading</a></h1>
<div class="dspcont">

<h2><a href="javascript:void(0)" class="dsphead"
onclick="dsp(this)">
<span class="dsphead">+</span> heading</a></h2>
<div class="dspcont">section</div>

<h2><a href="javascript:void(0)" class="dsphead"
onclick="dsp(this)">
<span class="dspchar">+</span> heading</a></h2>
<div class="dspcont">section</div>
</div>
</div>

CSS代码部分

.save{
behavior:url(#default#savehistory);}
/*防止后退时清空该范围内的text内容[这里为什么用到这个不是很明白...]*/

a.dsphead{
text-decoration:none;
margin-left:1.5em;}
/*对连接样式的设置*/

a.dsphead:hover{
text-decoration:underline;}
/*连接hover的状态*/

a.dsphead span.dspchar{
font-family:monospace;
font-weight:normal;}
/*设置head和符号的字体*/

.dspcont{
display:none;
margin-left:1.5em;}
/*设置内容部分初始样式,display是none*/

JS代码部分

<script type="text/javascript"><!--
function dsp(loc){
if(document.getElementById){
foc=loc.firstChild.innerHTML?
loc.firstChild:
loc.firstChild.nextSibling;/*使foc为当前点的下一个子元素的innerHTML也就是那个带+符号的<span>的innerHTML*/
foc.innerHTML=(foc.innerHTML=='+')?'-':'+';/*判断<span>里的内容是-还是+号,是+就变-,是-就变+*/
foc=loc.parentNode.nextSibling.style?
loc.parentNode.nextSibling:
loc.parentNode.nextSibling.nextSibling;/*将判断位置移动到<a>的父兄(就是h1后面的隐藏div)*/
foc.style.display=foc.style.display=='block'?'none':'block';}/*判断div的display是none还是block,设置为相反的值*/}

if(!document.getElementById)
document.write('<style type="text/css"><!--\n'+
'.dspcont{display:block;}\n'+
'//--></style>');
//--></script>/*针对不支持DOM的浏览器,将隐藏内容全部显示*/

<noscript>
<style type="text/css"><!--
.dspcont{display:block;}
//--></style>/*针对不支持js的浏览器,将隐藏内容显示*/
</noscript>