デジタル世界に生きるメモ -11ページ目

デジタル世界に生きるメモ

なるほどなーと思ったインターネットのことや音楽のことや趣味全般について、メモ的に書いているブログ。

毎日のように格闘している文章の折りたたみについてです。
昨日おととい3日前のブログもご参照ください)

<今回の成果>
・やりたかったことが、別のjQueryで実現できました。
・前回よりもソースコードが減りました。4割減くらいに。



使ったのは「jquery.switchHat.js」です。

switchHat.jsのサンプル

こちらのサイトからサンプル一式をダウンロードして、
その中のjquery.switchHat.jsを使います。
jquery.switchHat.jsとGoogle先生からのjQueryだけ読み込みました。

あと、中身を読めばわかるのですが、
「表示する +」で開いて「表示する -」で閉じるようになっています。
この+と-はCSSで操作しておりましたので、
switchHat.cssも読み込みます。


もうこれでだいたい完成なのですが、
せっかくなのでよく分析してカスタマイズもしてみます。


私が作りたいのはFAQで質問が20くらいあるものです。
jQueryの折りたたみのところでIDをセットしていたので、
下記のように複数を振りやすくしました。

switchBtn: ’.switchHat’,
 ↓ひとつひとつIDを振っていけばいいんですね。
switchBtn: ’.SH01’, ’.SH02’, ’.SH03’, ’.SH04’,・・・・


同様に表示される文章のIDも

switchContents: ’.switchDetail’,
 ↓
switchContents: ’.SD01’, ’.SD02’, ’.SD03’, ’.SD04’,・・・・



一方、CSSの方では開く前は+、開いたら-がつく仕組みがあります。

.switchHat:after {
content: "+";
 ↓afterをbeforeにすると、「+ 表示する」になります。(スペース注意)
  また、文字も自由に変えられます。
.switchHat:before {
content: "▽";

※文章が開いている最中(nowOpen)のプロパティも同様に変更可能



これで、開閉するためにクリックする文章と、
クリック後に表示される文章それぞれにIDを割り振っておきます。

【クリックする文章】<div class="SwitchHat switchOn SH01">表示する</div>
【表示される文章】<div class="SD01">この文章が表示される</div>



ちなみに、switchOnは触れていないけど必要なクラスです。
正確に言うとクラスとIDわけるんですよね。(きっと。素人の調査より)
SwitchHatやswitchOnがクラスで、SH01とSD01とかはIDですね。
で、いいんですよね??



やったーできた!

でも、開くスピード遅いなぁと感じた御仁、
その場合はjquery.switchHat.jsで「"slow"」の文字を検索して
「"fast"」にするとか、「300」などの数字に置き換えてください。
数字はミリ秒です。



ホントは「こんなFAQができました」とか、
「全体はこんなソースです」とか載せたりしたいのですが、
はじめてソースをブログに書いてて消耗しきったので
いまはゴメンナサイ。。 。

きっとこれもツールがあるんだろうなぁ。
いやー、プログラミングの世界って本当に面白いですね。
本気で楽しかったです。

でも何か解決したいことがあってこのサイトを見た人からすると、
技術の解説も適当だし、ブログとしても半端だしで、
参考にならないんだろうな。

そんなモヤモヤにとどめを刺すべく、
以下、今回のプログラミングで気づいたこと。



<今回の感想>
・面倒だな、と思ったことはすでにネットで解決している。
・ネットで解決した時期により、その技術は古くなっている。
・その時期というのは3~4年でもすでに古い。
・証拠に、4年前の本ではこれらの技術は紹介されていない。
・3~4年と言えば、高校とか、大学とかで入学から卒業まで。
・情報処理の先生って、それについていけてるのかな?
 1年生を卒業させたら、次の1年生の時には技術が更新されてる。。
・ダブルクォーテーションを表示するのに、&quot;とか、
 HTML上にソースを表記するの、めんど。
・HTML知識にCSSが少し乗った程度でJavaScriptとjQueryって
 結構飛ばしすぎた。まじめに順を追って学ぼう。
・楽しいからって、睡眠時間削りすぎた。
・jquery.switchHat.jsの中に、「css("cursor":"pointer")」
 があったが、昨日の解決策はあながち間違いでもないんだな。
・CSSの「content」プロパティ。画像も入れられると。
・ソースを簡素化するってキモチイイ☆
・もっときれいに書けるんだろなSEのみなさん。
 記述ルールとかのノウハウもぜひ知りたい・・!



以上でした。
前回前々回と、文章の折りたたみについて、いろいろ試し、
JavaScriptとjQueryの二通りのやり方を学びました。

ただ、カーソルをあてたときにブラウザの下に表示される
リンク先(?)が、なんとなく気になりっぱなしなので
今にいたります。

なんとか表示させない方法はなかろうか。




ありました。

jQueryで寄り道をしましたが、JavaScript版の方で
少し修正を加えます。


a href="javascript~" で指定しているところを

a onClick="javascript~" に変えるのです。



いやーそういうことか。
これで、リンクではなく、クリック動作の結果として
認識されるため、懸念されていた表示はでなくなったとさ。

めでたしめでたし。











って、うまくいくといいんですけどね。


リンクと認識されなくなったので、カーソルをマウスオーバーしたとき
手のアイコンにならず、文章選択の「I」のアイコンになってしまうという
現象が発生しました。

困りました。。


ですが、今回はパッと解決。

CSSに登場してもらいます。

一応想定しているのが20件くらいのFAQページで、
今回のJavaScriptのやり方だと、IDがバラバラになってます。
そこが一工夫必要で、全ての<a>タグの上位に
IDを付けた<div ID=faq>タグを用意することで、
子孫セクレタの指定でうまく行きました。

div.faq a {cursor:pointer;}

解説すると、ID=faqをもったdivタグの配下にある<a>タグは
カーソルのアイコンをポインタ(手)でよろしくね!というもの。


もう、全く同じことをしている同じレベルの人でないと
「なぜそんなことをしているの?」「なに?なにしたいの?」
となっていること間違いないでしょう。

なので、次回までにjQueryでもっとズバッと解決する方法を
見つけておきます。

ズバッとね。
昨日の続きです。

なんかJavaScriptでごちゃごちゃやってみたけれど、
リンク先にJavaScriptが表示されて嫌だなーというところで
昨日は終わりました。

すると、ふと、
こんな「文章を折りたたむ」「文章を展開する」なんて
どこにでもある機能なのだから、どこかで誰かがすでに
モジュール化してるんじゃないか?というか、当たり前だろ!
という点に気づきました。(遅い)


そう、
JavaScriptのライブラリと言えばjQueryですね。

去年、散々仕事でそんな話を聞いて、
アプリはいろんな技術があってよぅわからん、と思っていたのが
今になって役に立つとは。人生いろんな「点」がつながりますね。


そこで、ぱっと調べてみたところ、
jQuery.collapseというのがそれを実装できる、しかも
簡単にできるというので早速試してみました。

<参考>
超簡単にコンテンツを折りたたんで表示・非表示させる
 jQuery Collapseの使い方

コリス


あー確かに簡単だ。。。と言いたいけれど、
素人の私では理解に苦しんだので、まとめてみます。

1.jQuery本体をGoogle先生のCDNから引っ張って読み込む
  →ここで躓いた人は、WikipediaでjQueryを調べてみるといいぞ!
  →でも、このバージョンの部分(1.4.2)うまくいかず、
   1.7.0にしたらちゃんと動いた。
   なぜか気付けたからいいものの、こんなんわかるか!

2.jquery.collapse.jsを読み込む
  →これまたリンク切れ。今日つながったリンクはこちら
   http://webcloud.se/jQuery-Collapse/
   リンクが切れてるとか、気づくか!
  →そしてリンク先に飛んでもよくわからない。
   Download jQuery Collapseをクリックすると
   デモサイトが丸々落とせるので、その中にある
   「jquery.collapse.js」を自分のサイトにコピーする感じ。

3.開閉するコンテンツを指定するスクリプトを埋め込む
  →さっきの参考サイトにそんな5行ぐらいのスクリプトが
   あるのでそれをHTMLに埋め込む。
  →もちろん、<script>タグだけ外して、
   jsファイルにして読み込んでもいいんだけども。


とりあえず、正しいやりかたかどうかわからないけど、
これで動きます。

動作確認は、さっきリンク貼った参考サイトに書いてある
サンプルHTMLを使っています。


すごいよ。オレjQuery使ったよ。
そして、ソースもすごいきれいだよ。
<div>タグに関連付けているからスッキリできるんだな。

とか思って満足していたら、元々の課題であった
開閉時にカーソルあてるとなんか出てくる、という点が
解決していませんでした。

前回よりはましな表示ではありますが。。。

あと、これって、、開いているときと閉じるときと
内容一緒じゃないですか。

#「↓続きを読む / ↑閉じる」で切り替えたかった。。



ということで解決は先送り。
次回へ続く!!