ウェブ学のすすめ

Study of Web Design & Programing

DOMで作る折りたたみ式記事

プレビュー


スマートフォンの方はこちらからプレビューできます。
DOMで作る折りたたみ式記事 - js do it

コード

HTML
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>まずはやってみる:方丈記編</title>
<link rel="stylesheet" href="sample01.css">
<script src="1_01.js"></script>
<!--[if lte IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!--[if lte IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE9.js"></script>
<![endif]-->
</head>
<body>
<div id="whatnew">
<h1><img src="images/whatsnew.png" width="398" height="25" alt="最新情報"></h1>
<div class="section first">
<h2 id="news1 Title">方丈記<br>【ゆく河の流れ】</h2>
<p id="news1Paragraph">ゆく河の流れは絶えずして、しかももとの水にあらず。淀みに浮ぶうたかたは、かつ消え、かつ結びて、久しくとどまりたる例(ためし)なし。世の中にある人と、栖(すみか)とまたかくのごとし。<br>
  たましきの都のうちに、棟を並べ、甍(いらか)を争へる、高き、いやしき、人の住ひは、世々を経て尽きせぬものなれど、これをまことかと尋ねれば、昔ありし家は稀(まれ)なり。或は去年(こぞ)焼けて、今年作れり。或は大家(おほいへ)亡びて小家(こいへ)となる。住む人もこれに同じ。所も変らず、人も多かれど、いにしへ見し人は、二三十人が中(うち)に、わづかにひとりふたりなり。朝(あした)に死に、夕(ゆふべ)に生るるならひ、ただ水の泡にぞ似たりける。<br>
  知らず、生れ死ぬる人、何方(いずかた)より来たりて、何方へか去る。また知らず、仮の宿り、誰(た)が為にか心を悩まし、何によりてか目を喜ばしむる。その主と栖と、無常を争ふさま、いはばあさがほの露に異ならず。或は露落ちて花残れり。残るといへども朝日に枯れぬ。或は花しぼみて露なほ消えず。消えずといへども夕を待つ事なし。</p>
</div>
<div class="section second">
<h2 id="news2 Title">方丈記<br>【安元の大火】</h2>
<p id="news2Paragraph">予(われ)、ものの心を知れりしより、四十(よそぢ)あまりの春秋(しゅんじう)をおくれるあひだに、世の不思議を見る事ややたびたびになりぬ。<br>
  去(いんし)、安元三年四月(うづき)廿八日かとよ。風烈(はげ)しく吹きて、静かならざりし夜、戌(いぬ)の時(とき)許(ばかり)、都の東南(たつみ)より火出で来て、西北(いぬゐ)に至る。はてには朱雀門・大極殿・大学寮・民部省などまで移りて、一夜のうちに塵灰(ちりはい)となりにき。<br>
  火(ほ)もとは、樋口富(ひぐちとみ)の小路(こうじ)とかや。舞人(まひびと)を宿せる仮屋より出で来たりけるとなん。咲き迷ふ風に、とかく移りゆくほどに、扇(あふぎ)をひろげたるがごとく末広になりぬ。遠き家は煙(けぶり)に咽(むせ)び、近きあたりはひたすら焔(ほのほ)を地に吹きつけたり。空には灰を吹き立てたれば、火の光に映じて、あまねく紅(くれなゐ)なる中に、風に堪へず、吹き切られたる焔、飛ぶが如くして一二町を越えつつ移りゆく。その中の人、現(うつ)し心あらむや。或(あるい)は煙に咽びて倒れ伏し、或は焔にまぐれてたちまちに死ぬ。或は身ひとつ、からうじて逃るるも、資財を取り出づるに及ばず。七珍万宝さながら灰燼(くわいじん)となりにき。その費え、いくそばくぞ。そのたび、公卿の家十六焼けたり。ましてその外、数へ知るに及ばず。惣(すべ)て都のうち、三分が一に及べりとぞ。男女死ぬるもの数十人、馬・牛のたぐひ辺際を知らず。<br>
  人の営み、皆愚かなるなかに、さしも危ふき京中の家をつくるとて、宝を費し、心を悩ます事は、すぐれてあぢきなくぞ侍る。</p>
</div>
</div>
</body>
</html>
JavaScript
window.onload = function(){
    title1 = document.getElementById('news1 Title');
    title2 = document.getElementById('news2 Title');
	
    para1 = document.getElementById('news1Paragraph');
    para2 = document.getElementById('news2Paragraph');
    
    para1.style.display ='none';
    para2.style.display ='none';
	
    title1.onclick = function(){
	if(para1.style.display == "none"){
	    para1.style.display ='block';
	}
	else{
	    para1.style.display ='none';
	}
    }
    title2.onclick = function(){
	if(para2.style.display == "none"){
	    para2.style.display ='block';
	}
	else{
	    para2.style.display ='none';
	}
    }
}
CSS
@charset "UTF-8";

* {
	margin:0;
	padding:0;
}
body {
    background-color:#f1f1f1;
    font-family:
	"ヒラギノ角ゴ Pro W3",
	"Hiragino Kaku Gothic Pro", 
	"メイリオ", 
	Meiryo, 
	Osaka, 
	"MS Pゴシック", 
	"MS PGothic", 
	sans-serif
}
#whatnew {
	background-color:#fff;
	margin:30px auto;
	padding:40px 60px 60px;
	width:400px;
	border:1px solid #ddd;
}
#whatnew h1 {
	padding:0 5px 30px;
}
#whatnew .section {
	background-color:#f1f1f1;
	padding:5px;
	width:396px;
}
#whatnew .section.first {
	padding-bottom:0;
}
#whatnew h2 {
	font-size:14px;
	color:#3166B2;
	padding:0 0 0 50px;
	background-image:url(http://jsrun.it/assets/4/X/r/b/4XrbM.png);
	background-repeat:no-repeat;
	cursor:pointer;
	height:44px;
	border:1px solid #ddd;
}
#whatnew p {
	background-color:#fff;
	padding:10px;
	border:1px solid #ddd;
	font-size:12px;
}

ポイント

  • 変数を使って簡略化する
  • if文で開閉式にしてみました