We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 6158
    • 224 Posts
    こんばんは。

    素の DropMenu では面白くないので、水平二段のメニューにデザインしてみよ
    うとしています。参考にしたのは以下のページです。

    - Listamatic2: Blue’s clues (添付画像1参照)



    (1) DropMenu に以下のパラメータを追加する。
    [!DropMenu? 
    	 &selfAsLink=`true` 
    	 &topdiv=`true` 
    	 &topdivClass=`navcontainer` 
    	 &topnavClass=`navlist` 
    	 &subnavClass=`subnavlist` 
    	 &hereClass=`current` 
    	 &useCategoryFolders=`false`
    !]
    

    # ちなみに、v0.9.2.2 の DropMenu では正しく働かないパラメータがあるので修正が必要。


    (2) 出来上がった出力を抜き出し、参考ページの css をちょっと変更して適用する。添付画像2参照。
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<link href="bluesclues.css" type="text/css" rel="stylesheet" />
    		<title></title>
    	</head>
    	<body>
    		<div class="navcontainer">
    			<ul class="navlist">
    				<li><a href=''>Home</a></li>
    				<li><a href=''>Blog</a></li>
    				<li><a href=''>Contact us</a></li>
    				<li>
    					<a href=''>Quickstart Guide</a>
    					<ul class="subnavlist">
    						<li><a href=''>Script.aculo.us</a></li>
    						<li><a href=''>DropMenu</a></li>
    						<li class="last"><a href=''>QuickEdit</a></li>
    					</ul>
    				</li>
    				<li><a href=''>Other Tricks</a></li>
    				<li><a href=''>Getting Help</a></li>
    				<li><a href=''>Design Credits</a></li>
    				<li class="last"><a href=''>Login</a></li>
    			</ul>
    		</div>
    	</body>
    </html>
    



    ここから先が難しい。

    nest された <ul> をもつ1段目 <li> にマウスを当てると、その nest <ul>
    (2段目) が表示されるようにしたいと考えています。

    詳しい要求仕様は次回。(眠い)


    p.s.
    ----
    散々梃子摺 (てこず) ってます。もう『CSS 大っ嫌い』状態。今掛かっている
    プロジェクトが一段落したら web 絡みでは html/css/js から離れ、flash を
    検討しようと本気で思ってます。ブラウザ間の互換を保つのが辛い。ベンダー
    と開発環境は一つにしたい。
      • 6158
      • 224 Posts
      こんにちは。


      まずは、レイアウトよりも動作に注目した css 作成を行います。
      ie6 しか対応していません。他はいずれ。

      <li> へのマウスオーバーを検知させるために、以下のような javascript を読み込ませ
      ます。li:hover が ie で使えないからです。ff なら有効です。

      <script src="prototype.js" type="text/javascript"></script>
      <script src="event-selectors.js" type="text/javascript"></script>
      <script src="ddm.js" type="text/javascript"></script>
      
      ---ddm.js---
      Event.observe (window, 'load', init, false);
      
      var Rules =
      {
      	'ul.navlist': function (el) {
      		$A(el.childNodes).each (function(li) {
      			if (li.tagName == 'LI') {
      				li.onmouseover = function () {Element.addClassName (li, 'over')}
      				li.onmouseout 	= function () {Element.removeClassName (li, 'over')}
      			}
      		});
      	}
      }
      
      function init () {
      	EventSelectors.start (Rules);
      }
      ---ddm.js---
      


      次に、以下の css を読み込ませます。この適用結果は添付画像のようになりま
      す。一応、マウスオーバーで nest <ul> を表示できるようになりました。
      ul {
      	list-style-type: none;
      	margin: 0;
      	width: 100%;
      }
      .navlist li {
      	float: left;
      	height: 2em;
      	line-height: 2em;
      }
      .navlist {
      	position: relative;
      	background-color: #bfbfbf;
      }
      .navlist .subnavlist {
      	display: none;
      	position: absolute;
      	top: 2em;
      	left: 0;
      	background-color: #dfdfdf;
      }
      .navlist li.over .subnavlist,
      .navlist li.current .subnavlist {
      	display: block;
      }
      .navlist li.over .subnavlist {
      	z-index: 10;
      }
      



      ここで気になる点は多々ありますが、その中で、
      - 1段目と2段目の横幅が違う、
      - nest <ul> をもたない1段目の <li> にマウスオーバーした時、2段目が表示されない、
      - 各メニュー項目 (<li>) の幅を揃えたい、
      というのを次回変更したいと思います。



      p.s.
      ----
      自分だったらこうする、という意見がありましたら書き込みお願いします。
      css にへとへとなので、上手い人がやるともっと素敵なんでしょうが。
      • 面白そうですね。MODx管理画面のナビゲーションバーを、ロールオーバーで軽快に
        使えるようにした感じでしょうか。
        ちなみにIEでマウスオーバーを検知させるにはcsshover.htcが有効という話も聞きます。
        完成楽しみにしてます。 wink
          • 6158
          • 224 Posts
          こんばんは。

          Quote from: yama at Dec 08, 2006, 02:07 PM

          MODx管理画面のナビゲーションバーを、ロールオーバーで軽快に使えるようにした感じでしょうか。
          その通りです。まさしく manager のメニューは同じ構成です。

          modx を使い始めた頃から manager が使いにくいなぁ、という印象を持ってい
          たので、自分が作るサイトでは兎に角手早くアクセスできる事を目標にしよう
          と考えています。

          きちんと整形する手順さえ分かれば、その後の装飾はデザイナーに任せようと
          思っています。


          Quote from: yama at Dec 08, 2006, 02:07 PM

          IEでマウスオーバーを検知させるにはcsshover.htcが有効という話も聞きます。
          "csshover.htc" ですか、初耳です。調べてみます。


          DropMenu が吐き出す html を使って何処まで出来るか分かりませんが (できな
          いかもしれない)、のんびりと遊びながらやってみます。

          では、今日も遅くなったのでお休みなさい。