喫茶XRAYトップページ

[スレッド全体
]

[7965] Re3:メインメニューをドロップダウン方式返信 削除
2014/9/17 (水) 22:13:08 taki
▼ Mr.XRAYさん

> > まあ、サブメニューの部分を常時表示にすれば解決ですが、カッコ悪!
>
> それはドロップダウンとは言いません! キッパリ! ワハハハツ.


あ〜言われてしまった。

javascriptでなんとかしてみましょう。キリッ。

あ、マスターはHTML5はやらないと言ってたっけ。


[7966] Re4:メインメニューをドロップダウン方式返信 削除
2014/9/17 (水) 22:15:49 Mr.XRAY
▼ takiさん

> あ、マスターはHTML5はやらないと言ってたっけ。

Delphi XE4 の時に,無料でダウンロードできたので,
ダウンロードだけはしていますが,HDD の肥しとなっています (^^;


[7967] Re5:メインメニューをドロップダウン方式返信 削除
2014/9/17 (水) 22:51:51 Mr.XRAY
冗談はともかくとして
FireMonkey はモバイル開発をサポートしているんですから,
何かありそうな気もしないではないのですが.
やはり HTML5 なのかな ?


[7984] Re6:メインメニューをドロップダウン方式返信 削除
2014/9/20 (土) 15:59:20 taki
▼ Mr.XRAYさん
> 冗談はともかくとして
> FireMonkey はモバイル開発をサポートしているんですから,
> 何かありそうな気もしないではないのですが.
> やはり HTML5 なのかな ?


とりあえず、プルダウンできるようになりました。
純粋にHTMLとjavascriptで対応しました。

見出しのメニュー項目をクリックするとその下にサブメニューが表示されます。
他の項目をクリックするとサブメニューは閉じ、選んだ項目のサブメニューが
表示されます。
メニューの外をクリックするとサブメニューは閉じます。

仕組みですが、CSSの:hoverに書かれている<ul>の親のメニュー項目1<li>を
クリックしたら
<ul>に対してXX.style.display="block";を実行します。(あたりまえ〜♪)

変更前のHTML ----------------------------

<ul id='dropmenu'>
  <li><p>メニュー項目1</p></li>           <<-- ここをクリックしたら
    <ul>           <<-- ここをstyle.display="block";してやる
      <li><a href=#><p>サブメニュー1</p></a></li>
      <li><a href=#><p>サブメニュー2</p></a></li>
    </ul>
  </li>
  <li><p>見出し項目2</p></li>
以下略

変更後のHTML ----------------------------

<ul id='dropmenu'>
  <li onclick="clickMenu(this)" id="menu1"><p>メニュー項目1</p></li>
    <ul>
      <li><a href=#><p>サブメニュー1</p></a></li>
      <li><a href=#><p>サブメニュー2</p></a></li>
    </ul>
  </li>
  <li><p>見出し項目2</p></li>
以下略

javascript ----------------------------

var actSubMenu=0;   // 選択されたサブメニューを記憶する

function clickMenu(e)
{
    actSubMenu = getChildBytagName(e,"UL");
}

// 親elementからタグ名が一致する最初の子elementを得る
function getChildBytagName(eOya,tName)
{
    var children = eOya.childNodes;
    for (var i=0; i<children.length; i++){
        if (children.item(i).tagName === tName){
            return children.item(i);
        }
    }
}

次に、サブメニューを消す方法(イベント)が分からずに困りましたが、
結局<body>のイベントで実行することにしました。

追加のHTML ----------------------------

<body onclick="ResetSetSubMenu()">

追加のjavascript ----------------------------

function ResetSetSubMenu()
{
    // サブメニューのリセット
    var e = document.getElementById("menu1");
    var ce = getChildBytagName(e,"UL");
    ce.style.display = "none";
    //
    // menu2〜は略
    //
    // サブメニューのセット
    if (actSubMenu){
        actSubMenu.style.display = "block";
    }
    actSubMenu = 0;  // すぐにリセットしておく
}

今回、
onclick="clickMenu(this)" のthisに感動しました。
それと、メニューは<body>に乗っかっているので、メニューをクリックすると
メニューのonclickの後に<body>のonclickも反応するのですね。
勉強になりました。

我流なので無茶をしている・・・かもしれません。
もっとスマートな方法をご存知の方はご教示ください。

マスター FireMonkeyでなくてスミマセン。


[7985] Re7:メインメニューをドロップダウン方式返信 削除
2014/9/20 (土) 16:07:25 Mr.XRAY
▼ takiさん,やりましたね.バンザイ!!

> マスター FireMonkeyでなくてスミマセン。

ふん!
わたしゃ,FireMonkey もモバイルも関係ないもん,やらないもん!! (^^;

しかし,提示していただいたコードは,HTML というか,ウェブページを
開設している方には参考になるのではないでしょうか.
これが「解決しました」だけだったらくそ面白くなかったですね.ハハハッ.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82