些細な日常いつも興味や関心を取り上げよう自分らしさこそ自然のままにこのサイトを適切に使用するためにはブラウザのJavaScriptの実行を許可して下さい。(金)サイトのハンバーガーメニュー(≡)などのコンテンツを出し入れできる開閉ボタンをJavaScriptで作成するプログラムには二つの大きな部分がある。要素のクリックを判定するコンテンツに表示変更を行うJavaScriptのプログラムではクリックを判定するHTMLの要素を取得した上で、イベントハンドラのonclickからさらに表示変更を行うコンテンツにCSSのdisplayのnone(非表示)のようなデザインのclassをclassListプロパティのtoggle()(交互)メソッド、またはadd()とremove()(追加と削除)の二つのメソッドで付け替えて開閉ボタンを作成することができる。PixabayJavaScriptのonclickハンドラとclassListのtoggle()メソッドを使う。ハンバーガーメニューのサンプル(開閉ボタン)アイテム1アイテム2アイテム3※押すとメニュー画面が開閉する。function(){sb1.classList.toggle("hidden");}JavaScriptの要素のクリックを判定するonclickプロパティは三つの仕方で、使える。サンプルは他にHTMLの開閉ボタンに関数名のonclick属性を追加したり、JavaScriptでaddEventListener()メソッドの引数にclickを入れたりして書き換えられる。メニューを元のコンテンツに重ねる場合はCSSのpositionで位置取りを変えて同じところに合わせながらz-indexで重なる順番を変えて上に乗せたりすると良いと思う。menu(){sb1.classList.toggle("hidden");}クリックを判定する三つの方法ではHTMLのonclick属性の使用は推奨されない。これらの属性を使うことは避けるべきです。巨大化し可読性を下げます。情報と振る舞いの関心事が正しく分離されておらず、発見が困難なバグを生み出します。オブジェクト上のグローバル関数にスクリプトを晒す原因になります。これはグローバルの名前空間を汚染します。属性|MDN|Mozillaonclick属性はクリックを判定したいHTMLの特定の要素に記載できるから分かり易くて便利かも知れないけれどもJavaScriptのプログラムとしては他の方法を使った方が無難なんだ。false);onclickハンドラからの関数処理とどう違うのか。ハンドラは1つだけです。柔軟性があるため、代わりにEventTarget.addEventListener()メソッドを使用することをお勧めします。GlobalEventHandlers.onclick|MDN|MozillaaddEventListener()メソッドは第二引数にコールバック関数を取って別々の関数処理を起動できるようになっている。onclickハンドラだと複数のプログラムを仕込むのは前のものが後のもので上書きされて最終的に一つしか実行されない状態になってしまうから適さない。HTMLとCSSのclassの切り替えにadd()とremove()を使うサンプルのソースコードではコンテンツを非表示にするCSSのdisplayのnoneのclassの付け外しによってハンバーガーメニューの開閉ボタンを動作させている。JavaScriptはclassListプロパティのtoggle()メソッドを使うけれども他にadd()メソッドとremove()メソッドでも同じようにプログラムを組めるんだ。(開くボタン)(閉じるボタン)アイテム1アイテム2アイテム3※ボタン毎にメニュー画面が開くか閉じる。function(){hbm2.classList.remove("hidden");sb2.classList.add("hidden");}開閉ボタンにclassListプロパティのadd()メソッドとremove()メソッドを使う場合、コンテンツの切り替えのスイッチを二つに分けるデザインに向いている。スイッチが一つでコンテンツの表示と非表示の切り替えを行うには何等かの仕方で、コンテンツの状況を判定するための条件分岐のifを通さなくてはならない。するとclassがあれば付けて、なければ付けないという条件分岐を予め含んでいるtoggle()メソッドを使う方がプログラムは簡素化される。表示するコンテンツにCSSのanimationを付けておく。スライダーの開くアニメーションのサンプル(開閉ボタン)アイテム1アイテム2アイテム3※押すとメニュー画面が開閉する。function(){sb3.classList.toggle("hidden");}スライダーの場合のCSSのanimationにはコンテンツを移動させるtransformのtranslateX(横方向)やtranslateY(縦方向)が使い易いと思う。一つ良く使われるCSSはopacityで、コンテンツの透明度を変えて徐々に浮かび上がらせたり(値は0から1)、沈み込ませたり(値は1から0)するデザインだ。他にも縦に伸縮するアコーディオンメニューならばheightなどでコンテンツの高さを変化させると良い。参考サイト高さ可変!CSSアニメーションでなめらかアコーディオンJavaScriptの開閉ボタンで厄介なのはCSSのdisplayのnoneによってコンテンツを消すときにアニメーションがかからない。スライダーだとサンプルでもそうだけれども開くときはゆっくり動かすデザインが可能でも閉じるときは全く動かすデザインを付けられないからコンテンツは瞬時に消える他はなくなる。setTimeout()メソッドでコンテンツの非表示を遅らせる開閉ボタンの消すときのアニメーションは先んじてコンテンツを非表示にするdisplayのnoneのかかりをJavaScriptのsetTimeout()(停止)メソッドで時間差を付けて反対に遅らせると大丈夫なんだ。スライダーの開いて閉じるアニメーションのサンプル(開閉ボタン)アイテム1アイテム2アイテム3※押すとメニュー画面が開閉する。200);}}開閉ボタンの開くときと閉じるときのプログラムの内容が実質的に変わるから取り込んだ要素が非表示のclassを持つかどうかのcontains()メソッドなどを使った条件分岐のifをクリック判定後の関数処理に配置する必要がある。サンプルはコンテンツに非表示のclassがあればremove()メソッドで非表示と同時に二回目以降に付けられるスライダーの閉じるアニメーションのclassを外す。コンテンツに非表示のclassがなければ先ずは開閉ボタンの閉じるアニメーションのclassを付けてからsetTimeout()メソッドで時間差をおいて後らせてから非表示のclassを付ける。追記:アニメーションの遅延実行にはsetTimeout()よりもtransitionendやanimationendのイベントを使った方が動作でぴったり合わせられると分かった。プログラムの注意点としてsetTimeout()メソッドのdelay(遅延)と閉じるアニメーションのanimation-duration(継続時間)を合わせなくてはならない。ないとアニメーションが終わる前にコンテンツが消えたり、アニメーションが終わった後にコンテンツが現れたりしてしまう。CSSのanimationとJavaScriptのsetTimeout()の設定時間は単位が違う。サンプルでは「.2s」と「200」に指定されている。前者のanimation-durationは一秒単位、後者のdelayは千分の一秒単位(値に単位の表記は不要)になっている。かりに同じ時間を指定するとしても両方が同じ記述にはならない。自殺したと知ってショックを受けたことがあった。2011年の夏、享年四十二と早過ぎたのに加えて大好きな投手の一人だったので、とても残念に感じた。何気なく昔のテレビ番組を観ていたら霊視は嘘だったと思えない内容で、本当にびっくりした。掲載して、一体、何だろうと観てみたら飛行機で乗り合わせた国会議員の態度が悪いのを見兼ねて黙っていられなかった。出ているサックスのストリートライヴの動画が美しい音色と相俟った街角の雰囲気の良さで心底と泣けて来るほどの感動を催させる。自殺が伝えられたとき、遺書の言葉とされた「おやじ、涅槃でまっている」と共に何なのかと疑問を感じたのを良く覚えている。聞き慣れない「涅槃」という言葉が入っても何十年も過ぎた今振り返っても自殺者の遺書として本当に珍しい表現だったと改めて驚く。ライブ版が追加されていた。曲自体をちゃんと聴いたのは約二十五年振りかも知れないけど、しかし初めての内容から以前にも況して大変な感動を覚えることになった。(1835)の日本語訳を行った。一つの文学作品として人間の洞察力に富んだ優れた内容を持つだけではなく、表現も意義深いから外国語の英語の聞き取りと読み取りの教材としても最適だと感じる。自分でアップロードした画像については画像URL/直リンクを取得して他のサイトにHTMLのimgタグで表示させられる。自分と他の人たちも含めて画像の埋め込みコードを取得して他のサイトのHTMLに、そのまま、記載して表示させられもする。(シンカイクサウオの一種のシュードリパリススワイヤーアイ)がいるらしい。続きを読むプロフィール結城永人Japan二十代前半から作家活動を天職に励んで来ました。当初は小説家を志望していましたが、しかし十数年を経て作詩する機会も増すほどに詩人こそ素性だと考えるに至りました。以降、個人的に永遠を歌う生き方として自分の中で最も重要な位置を占めています。