プルダウンメニューをさらに作り込んでみた

カテゴリ:CSSテクニック 2006年12月14日 10:38

ということで、連日同じエントリーですが。
もう少し作り込んで、今回は別ページでサンプルをアップしてみました。

変更点としては、前回の物に比べ、色などのスタイルを修正。
加えて、下に階層が含まれているメニューについては、右端に▲のマークを
自動で追加するようにしてみました。
動作テストは「WinIE6、Firefx1.5、2.0」です。

※干し梅さんより指摘を頂き、サンプルを修正しました。
XHTML が Valid になるように修正しました。

プルダウンメニューデモ

サンプルダウンロード

※サンプルダウンロードには、html ファイル、css ファイル、js ファイルと、中で使われている画像ファイルが含まれています。

まだまだ改変の余地ありなので、改変や使用は完全フリーです。(というか、ダウンロードしてくれる人がいるんだろうか?w)
ただ、できればコメントとかくれるとさらにやる気がでるのでうれしいですw
(なんか変なとことかあったら言って下さい...)

この記事のカテゴリー一覧を見る⇒CSSテクニック

  • このエントリーをはてなブックマークに追加

トラックバックURL

http://css-eblog.com/cgi-bin/mt/mt-tb.cgi/30

コメント

1 - A さん

はじめまして。nビルダーを持ってる初心者です。n正にこんなふうにリンクを表示させたいのですけど、nソースを見ても、どこに貼り付けたらいいかわかりません。nよろしければ具体的に教えてください。

2007年3月11日 22:16

2 - えど さん

>>Aさんどもども。書き込みありがとうです(*'-')えと、CSSは理解されてますか? ある程度CSSの知識がない設置はと少しむずかしいかもです・・。(といっても幅の指定などをAさんの環境に合わせる程度ですが)nサンプルか、もしくはどういうふうに使うのか(項目数など)がわかれば、それに対して詳しくお伝えできると思います。nちなみに、メニュー部分はの間を貼り付けてもらえれば、サンプルのようにメニューが表示されます。(ダウンロードされたjsファイルとCSSファイルは同じ階層構造を維持してサーバにアップしてください)

2007年3月11日 22:26

3 - A さん

とっても早い回答ありがとうございます!!感激です!!n全く、今から始めるというかんじで。。n項目も、後から変更があるかもしれないのですけど、(後から変えるって可能でしょうか?)n作りたいと思っているのは(予定)、nTOP NEWS SCHEDULE PROFILE DISCOGRAPHY LINKこの、PROFILEのところに、nメンバー5人分の名前リストをプルダウンみたいに表示して、nそれぞれリンクさせたいんです。nそして、他の、TOPとかSCHEDULEとかは、そこから直接リンクにしたくて、、nCSSのこともさっぱりわからないので、n初心者の私には難しいでしょうか;;nちなみに、ビルダーの最初から用意されてるhtmlコード(?)は、下記のようになってます。nここに書き加えたらできますか?n突然聞いてしまって、面倒かもしれないので、nもし可能だったら、教えてください。n大変だったら、またどこかで調べるので、無理はしないでくださいね。nスミマセン;;よろしくお願いします。。

2007年3月11日 23:11

4 - A さん

あれ?htmlコード、書いても表示されないみたいですね(汗汗)

2007年3月11日 23:13

5 - えど さん

なるほど。では、サンプルのcssフォルダの中のmenu.cssを開くと、以下の箇所があるのでそれを修正してみてください。ndl#menu dtの下にあるwidthという項目が、ひとつの項目の幅になるので、それを自身のサイトのメニューのひとつに設定したい幅に修正してみてください。

2007年3月11日 23:31

6 - A さん

CSSのサンプルのを貼るといいのでしょうか?nどこに貼ったらいいかがわかりません。nんー、、やっぱり、私には難しいかもしれませんね(汗汗)nスミマセン。思いっきり初心者で(汗汗)nもうちょっと勉強してみます。nありがとうございます☆

2007年3月11日 23:36

7 - A さん

度々スミマセン;n何にもないところに貼ったらそのリンクバーが出来るっていう丸ごとのコードって載せていただくことは難しいですか??n部品ごとに分散されてると、どこに貼ったらいいのかわからなくて(汗)n内容は後で書き換えられるので、n文字は何でも構いません。n可能だったらいいので(当たり前ですが)、、n無理を言ってスミマセン;;

2007年3月12日 00:30

8 - えど さん

えーと、説明不足でしたね;nまず、HTML部分にはサンプルの<dl id="menu">から</dl>までを貼り付けてください。n(ソースは長いので割愛(^^;)nまた、幅などのデザイン部分をCSSで定義しているので自身のサイトの上のほうにある<head>と</head>の間に<link rel="stylesheet" href="css/menu.css" type="text/css" />を貼り付けてください。これがCSSファイルを読み込む指定になります。nまた、メニューのプルダウンなどをJavascriptで制御しているので、nそのJavascriptファイルも読み込む必要があります。n上のCSSと同じように、<head>と</head>の間に<script type="text/javascript" src="js/menu.js">を貼り付けてください。nこれで、自身のサイトにCSSファイルとjsファイルが読み込まれます。n(jsフォルダとCSSフォルダは、今Aさんが作られているHTMLファイルと同じ階層においてください。nそうしないと適切にファイルが読み込まれないため、正常に動作しません)nこれで動くと思います。nなにか不具合などあったらまた連絡くれればお答えしますよー。

2007年3月12日 00:42

9 - A さん

ご親切に本当にありがとうございます!!(><)今日帰ったらやってみます。nまたご報告の書き込みさせていただきます☆

2007年3月12日 07:36

10 - えど さん

いえいえ、参考にしてもらっただけでありがたいですwnちなみに、若干説明に漏れがあったので追加しますね。n<script type="text/javascript" src="js/menu.js">を追加、と書きましたがn<script type="text/javascript" src="js/menu.js"></script>が正しいです。

2007年3月12日 09:39

11 - A さん

あの、、ダウンロードしたのですけど、njsの方の、menuファイルが開けないみたいでした。nきっと、私のPCの問題ですよねぇ。。n(CSSの方は、コードみたいなのが並んだのが開けます。)nやっぱり、分割しないと、nそのまま貼り付ければできるっていうのはないのですよねぇ。。nこれだけ丁寧に説明してもらってるのにできないなんて、n初心者過ぎだから、nHPビルダー用の本でも買ってみた方が良いのかもしれませんねぇ(汗汗)

2007年3月12日 20:16

12 - A さん

何度も書いてしまってゴメンナサイ;;nえーと、、そのまま書くと表示されないみたいなので、nカッコの形を変えて書きますけど、n[html]のあとに、[dl]〜[/dl][head]のあとに、[script・・・ と[link rel・・・を貼ったら、プレビューに、ボタンの画像が出ました!nただ、並び方が真横でないのと、nそれと一緒に、nMenu1-2>> Menu1-2-1 Menu1-2-2 ・・・っていう文字も出てしまいます。nあと何を直せば良いか、もしわかるようでしたら教えてください。スミマセン;

2007年3月12日 21:03

13 - えど さん

なるほど。nAさんが作られているサイトはサーバにアップされていますか?nもしアップされているなら、URLを送ってもらえれば状況を見ますよ。n※コメントが長くなってきたので、以後のコメントは、eblog_m@mail.goo.ne.jpのアドレスまでメールをくれれば返信しますよー(*'-')

2007年3月12日 22:21

14 - A さん

まだアップしてなくてこれから作るぞってところなんです。nもうちょっとがんばってみます。n本当に、ありがとうございます。nいっぱい書いちゃってすみませんでした〜;

2007年3月12日 22:31

15 - えど さん

なるほど。もし現状のものでアップできるのであれば、それをアップしてもらってもいいですよー。

2007年3月12日 22:36

16 - A さん

いえいえ〜><n本当にこれからで、まだ、ビルダーの一番最初にもともと入ってるn[!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"][HTML][HEAD] ・ ・[/HEAD][BODY][/BODY][/HTML]だけなんです;画像や文字はビルダーの機能でわかるんですけど、nそのリンクボタンだけ、わからなくて、タグ(?)でなんとかできないかなって思ったんですけど、nどこに何を入れたら良いかわからなくて。。

2007年3月12日 23:03

17 - えど さん

なるほど。n一番上の部分を<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">にしてもだめですか?

2007年3月12日 23:10

18 - A さん

それでもやっぱり、プレビューでボタンの画像は出るのですけど、nオンマウスにしたときに出てほしい文字が、一緒に並んでしまいます。nコードを入れる場所を間違ってるのでしょうか・・・;nまた明日がんばってみます。。nいろいろスミマセン; ホントにありがとうございます。

2007年3月12日 23:39

19 - A さん

諦めきれず、nサンプルページのソースをそのまま全部貼り付けてみたけど、nやっぱり同じように、文字まで並んでしまいます。nPCのせいかなぁ。。。わかりません><nすみません。今日のところはおやすみなさいです。。;

2007年3月12日 23:57

20 - えど さん

うーん、サンプル自体はちゃんと表示されてますか?nあと、ちと確認がもれていましたが使われているブラウザはなにを使ってますか? InternetExplorerですか? あとVerなんかも教えてもらえると解決の糸口が見えるかもしれません。

2007年3月12日 23:59

21 - A さん

すごく長くなっちゃってますね・・・本当にスミマセン;nInternet Explorerです。バージョン情報に、6.0・・・て書いてあるけど、それのことですか?n私には無理そうな場合、間にページを作って、そこからそれぞれリンクさせようかな〜、、nなんて、諦め策も考え始めてます。。

2007年3月13日 00:12

22 - えど さん

ふむ。nちと見ないと分からんですね;n多分、なんかしらの設定が間違ってるんだろうとは思いますが・・。nさっき書いたメールアドレスあてに、今作ってるファイルをすべて(構造も維持したまま)圧縮して送ってもらってもいいですか?nそれをこちらの環境で見てみて、そうすれば問題箇所が分かると思うので。

2007年3月13日 00:14

23 - A さん

あ、さっき答えてませんでした;nサンプルのソースそのまま貼ったときも、画像はちゃんと表示されて、nなぜかそれと一緒にリンクの文字も表示されちゃうんです;n・・・! 返信くださってますね!nあまり迷惑かけてしまうと申し訳ないので、n本屋にでも行ってみます・・・それかプルダウンは諦めかなぁ、、(><)nいっぱい書いてしまって本当にすみませんでした;n本当に丁寧に教えてくださって、ありがとうございます〜☆

2007年3月13日 00:25

24 - えど さん

メールとかは無理そですか?nそれで実際のファイルを見てみれば解決できると思うのですが…。nさすがに見て見ないとこれ以上はちときびしそうです(^^;

2007年3月14日 09:49

25 - A さん

間があいてしまいました、、;nやっぱり、ダウンロードさせていただいた中の「jsファイル」、menuっていうアイコンが開けないみたいです。こちらのPCが原因でしょうかねぇ・・・^^;n(それがないとできないですか??)nそれから、自分で作ったGIFのボタンを使おうと思っていて、サンプルのソースをそのまま使えない(別のボタンができてしまう)ので、もし説明がややこしそうでなければ、nどこにGIFのURLが入るとか、書き換える部分を教えていただけませんか?nいろいろ聞いてしまってスミマセン;(o_ _)o))

2007年3月19日 19:13

26 - A さん

ちょっと別の方法ですけど、n似たようなことができそうなかんじですッ、nもうちょっとがんばってみます!n本当に何度もゴメンナサイです。。n理解してできるようになるまで、n道のりが長そうです、、(o_ _)o))

2007年3月19日 21:41

27 - A さん

・・・やっぱ難しいです。nできないかもです;;;

2007年3月19日 22:27

28 - えど さん

どもです。nそうですねぇ。やはり作られている元を見ないとむずかしいかもしれません…。nメニュー項目の幅は決まってますか?n項目数と、も少し詳細を教えてくれれば時間を見てちょっと作り直してみますよ。n(ちなみにメールはむずかしいんですよね?)

2007年3月20日 09:06

29 - A さん

かなり久々に書きます。。;nあれから、少しずつ、作っていってます。nそれにつれて、ソースについても、ちょっとずつわかってきましたけど、nプルダウンのがわかるまでにはなってません^^;n諦めて、間にワンクッション置いて、nプルダウンの代わりのページ(リンク先の一覧みたいなの)を作ってみてます。n発注者さんがそれでOKって行ってくれたら、それになりそうです^^;nいつか、このプルダウンがわかれば、HPを新しく作り直すときにでも、nそれが使えたらなぁっていう目標にします!n本当にご親切に、ありがとうございました☆

2007年3月26日 20:58

30 - みゅう さん

管理人様nはじめまして、みゅうと申します。いつも参考にさせていただいております。n今回プルダウンメニューサイトに組み込むことになり、こちらのソースをそのままコピペして作成してみたのですが、nWin IE6.0でどうしても表示がうまくいきません。n具体的におかしい箇所というのは、nプルダウンメニューの下に空白ができてしまうのです。n色々な原因を探ってみたのですが、何が理由なのか全く検討がつかず、nもしアドバイスいただければと思いコメントさせていただきました。nお忙しいところ大変お手数お懸けしますが、よろしくお願いいたします。n具体的にソースを掲載しますと、nヘッダの右側にプルダウンメニューを設置したいので、nフロートで設置して、#langを右側に置いてます。nSelect LanguageJapaneseEnglishその下に、メインのコンテンツとなる#containerと#mainが続きます。n以下省略---CSS(該当箇所のidだけ抜粋)n#iBox { margin-right: auto; margin-left: auto; display: block; width: 780px; height: 100%;}#header { float: left; padding-top: 18px; width: 650px; padding-bottom: 18px; height: 31px;}#lang { float: right; width: 120px; height: 32px; padding-top: 35px;}#container { display: block; background-color: #FFFFFF; height: 100%; padding: 15px 15px 30px;}.clear { clear:both;}#main { float: right; clear: right; width: 515px; margin-top: 2px;}こちらの情報だけで原因が特定できるでしょうか。nちなみに、プルダウンメニューの所のスタイルはカスタマイズしました。nこれがいけないのかもしれません。。n/*------------------------------------ #menu スタイル-------------------------------------- */dl#menu { width: 120px; height: 32px; margin: 0; padding: 0;}dl#menu ul, dl#menu li { list-style: none;}dl#menu dt { text-align: center; position: relative; width: 130px; color: #FFFFFF; height: 32px;}dl#menu dt a { display: block; color: #FFFFFF; text-decoration: none; line-height: 32px; width: 130px; height: 32px; font-weight: bold; text-indent: 2px;}dl#menu dt ul { /*プルダウンメニューの背景、スタイル*/ background-color: #cacdd6; border-left: 1px solid #494835; border-top: 1px solid #494835; border-right: 1px solid #000000; border-bottom: 1px solid #000000; display: none; position: absolute; top: 32px; left: 0; z-index: 0; width: 130px; text-align: left;}dl#menu dt ul a { /*リンクがある時のプルダウンメニューの色*/ color: #3a3a3a; height: auto; line-height: 130%; text-align: left; padding: 5px; width: 130px;} dl#menu dt ul li.rollOver { /*プルダウンメニュー、マウスオーバー時のスタイル。*/ background-color: #4d4d45;}dl#menu dt ul li.rollOver a.rollOverA { /*プルダウンメニュー、マウスオーバー時のテキストの色。*/ color: #FFFFFF;}dl#menu dt ul li { position: relative; text-indent: 2px;}長くなって申し訳ありません。nアドバイスいただけると助かります。nどうぞよろしくお願いいたします。

2007年3月29日 20:25

31 - えど さん

みゅうさん、はじめまして。n参考にしていただいてありがとうございます。nソースを拝見しただけですとちょっとわかりづらいので、もし可能ならアップ先のURLを教えてもらえますか?n(もしくはメールで該当のファイルを送ってもらえるとうれしいです。アドレスはeblog_m@mail.goo.ne.jpです)

2007年3月30日 00:00

32 - みゅう さん

管理人様n先ほどメールでソースを送りました。お手数おかけ致しますが、どうぞよろしくお願い致します。

2007年3月30日 11:34

33 - sagy さん

こちらのソースを参考にプルダウンメニューを設置しました。nhttp://xrea254.s254.xrea.com/menux_test/IE,FF,Safari,Operaなどのブラウザでは問題なく動作するのですが、NNのみonMouseOutでも孫階層が非表示とならず重なって表示されてしまいます。n解決のヒントなどがありましたら、教えていただけないでしょうか。よろしくお願いします。

2007年4月29日 17:50

34 - えど さん

>>sagyさんありがとうございます。nえぇと、NNはもともと対象外だったので動作確認はしておりません・・。nちなみに、NNのVerはいくつで確認されていますか?

2007年4月29日 18:33

35 - sagy さん

>ちなみに、NNのVerはいくつで確認されていますか?nwin/macともに7.1です。6のときはDHTML上問題が多かったので対策が色々拾えるのですが、7以降の情報が少なくちょっと手こずっています。

2007年5月 1日 10:49

36 - タカユキ さん

2007年10月31日 15:40

37 - えど さん

>>タカユキさん参考にしていただいたようで、ありがとうございます。nサイト、背景させていただきました。nサンプルの場合、下位階層が存在するときに右側に矢印の背景を表示する設定をしていました。n背景は、a要素にclassを付与することで実現してしたので、マウスオーバー後メニューが消える際にa要素のclassをなくす処理を行っています。nおそらくその処理が、背景を指定しているclassごと消去してしまうため、背景がなくなるものと思いました。nダウンロードしたjs内の「function hiddenMenu()」の部分の「menuA.className = ""」の部分を削除すれば大丈夫かと思います。n手元にファイルがないので憶測でしか分かりませんが、なにかまだ問題があるようならコメントお願いします(;´д`)

2007年10月31日 17:51

38 - 干し梅 さん

はじめまして。n自社サイトの更新をしているものです。nサンプルを使用させていただき、WinIE7で完璧に表示されて、n喜んでいたんですが、以下のW3Cでバリデート?すると、1件エラーになります。nhttp://validator.w3.org/エラーメッセージは、以下の内容です。n Line 30, Column 8: document type does not allow element "ul" here; missing one of "object", "ins", "del", "map", "button" start-tag. The mentioned element is not allowed to appear in the context in which you've placed it; the other mentioned elements are the only ones that are both allowed there and can contain the element mentioned. This might mean that you need a containing element, or possibly that you've forgotten to close a previous element. One possible cause for this message is that you have attempted to put a block-level element (such as "" or "") inside an inline element (such as "", "", or ""). 記述ミスのようですが、どう記述しなおしたら「Congratulations」になるのか全くわかりません。。。nできれば、お力をお貸しいただければと思います。nサイトは、XHTML 1.0 Strictで製作しております。nダウンロードした、index.htmlのままのタグで、アップロードしておりますので、n記述は変更しておりません。nお手数をおかけいたしますが、アドバイスをお願い申し上げます。

2008年1月17日 19:26

39 - えど さん

>>干し梅さんnサンプルを利用していただきありがとうございます。nコメント頂いた件ですが、これはおそらくdt要素内にはul要素(およびブロック要素)を入れられないために出ているエラーだと思います。n(dtの部分をddに変更したところこのエラーは解消されました)nただ、単純にdtをddにしてしまうと、onload時に読み込まれている置換用のスクリプトがうまく動作しなくなってしまうので、nそれについて修正したいと思います・・。nわざわざご連絡ありがとうございました。n修正でき次第、エントリーを修正させて頂きます。

2008年1月18日 09:44

40 - えど さん

>>干し梅さんnご指摘ありがとうございました。nValidになるよう修正したものを再アップしました。nお手数ですが、再ダウンロードしていただけますでしょうか?n(修正内容としては単純で、サンプルのdt部分をddに変更し、nそれに付随するCSSおよびJavascriptを修正しました)

2008年1月18日 11:09

41 - 干し梅 さん

ありがとうございます。nなんかこちらこそすみませんm(__)mまたよろしくお願いいたします。nありがとうございました(^_^)

2008年1月22日 09:36

42 - Ryo さん

はじめまして。n現在サイトを新たに大きく改装しようと思い作成に取り掛かっているRyoといいます。nホームページビルダーを使っていて・・・はっきりいってサイト作成やパソコンの知識的なものはほとんどないといった状況です。n一番初めに作るとき相談したサイトの掲示板でjavascriptはあまりよくないと言われていらいデザイン的に懲りたいものの抵抗があって手が出せませんでした。nですが,来てくださる客層も限られてきましたので色々と憧れを試してみたいのも本心です。nしかし出来るところはCSSで設定したく探していたところ,ここへたどり着いたのですが,ダウンロードがなんだか上手くできなくて(保存後からの表示が出来ません)・・・。n何度もダウンロードも他のページのものも挑戦したのですがよくわからなくて・・・内容をメールで送ってもらえないだろうかという思いにたどり着きました。nそれでご迷惑かとは思ったのですが相談のコメントをさせていただきました。nこのブログで勉強させてもらっているのですがCSSについては大変詳しいご様子・・・。nもしよかったら指南していただけないでしょうか?n私の理想はそもそもほとんどCSSのみの表記で現実的に出来るのか,javascriptについても別の考え方があるのか等教えていただきたいです。nお忙しいところ申し訳ありません。nコメント返信でも大変ありがたいのですが,もしよろしければメールください。nよろしくお願いします。

2008年5月10日 21:54

43 - えど Author Profile Pageさん

42 - Ryoさんコメントありがとうございます!nちょっと状況が分かりかねるので、やはりメールで詳細をもらえると助かります。nメールアドレスは「css.eblog@gmail.com」になりますので、こちらへメールいただけますか?

2008年5月11日 09:29

44 - がじろう さん

大変勉強になりました、説明も分かりやすかったので初心者の私には大変ありがたかったです。n

2008年10月17日 12:31

45 - えど Author Profile Pageさん

>>44 - がじろうさんコメントありがとうございます!n分かりやすさをモットーに記事を書いているので、nお役に立てたようでとてもうれしいです。

2008年10月17日 13:31

46 - おにぎり さん

はじめまして、ファイルをダウンロードさせていただきました。n色々とカスタマイズをしている最中です、nメインメニューの文字のサイズを小さくしたいのですが・・。n何処の部分を変更すればよろしいのでしょうか?n(プルダウンの子メニューの文字は%で変更できました)宜しくご回答いただけましたら幸いです。 m(_)m

2009年8月 4日 16:39

47 - えど Author Profile Pageさん

>>46 - おにぎりさんどもです。nメインメニューの文字サイズですが、ndl#menu に font-size を追加したら小さくなりませんか?

2009年8月 4日 17:35

48 - おにぎり さん

えどさんへ早々のご返事ありがとうございます。n無事に変更できました!!n完璧です、ちょうどいいサイズになりました。nまた何かあったら質問させていただきます。nこれからも宜しくお願い致します。

2009年8月 4日 18:06

49 - シロウ さん

はじめまして。コメントがあると頑張れると書いてあったのでコメントです(笑)。n最近ホームページを作れるようにhtmlやらcssやら勉強しているんですが、分からないことだらけで困っているところで探すうちにこちらに漂流してきました^^;。nこれからも参考にさせてもらいたいのでよろしくお願いします。

2009年10月19日 02:15

50 - えど Author Profile Pageさん

>>49 - シロウさんコメントありがとうございます!nコメントはほんと励みになりますwnぜひぜひ参考にしてください(*'-')

2009年10月19日 12:07

51 - じゅん さん

はじめまして。nこのプルダウンメニューを使わせていただきました。nありがとうございました。n非常にシンプルで、とても使いやすかったです!n今後も参考にさせていただきます!n私の場合は、dd(メインメニュー)にそれぞれノーマルとhoverとactive状態のボタン画像を用意して、切り替えています。n(しかもactiveのボタンだけ大きく下に伸びると言う。。。)nその場合、本当ならマウスオーバーではなく、クリックでサブメニューの表示・非表示の切替がベストなのでしょうが、うまくいかず。。。nムリクリに、hover時の状態をactiveの状態にし、hoverの画像をul(サブメニュー)の背景画像に使うことで、nサブメニューを表示時のスキマを埋めております。。。n(サブメニューがあるメインメニューは5つのうち2つだけなんです)nもし、お分かりになるのでしたらで結構なのですが、マウスオーバーではなく、nクリックでのサブメニューの開閉の方法がございましたらご教授いただければ幸いです。

2009年11月26日 09:28