質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

1回答

3319閲覧

多階層のカテゴリを取得し、1階層ずつ一覧を表示するサイドバーを実装したい

gobindar

総合スコア51

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

2クリップ

投稿2019/03/01 12:28

編集2019/03/05 03:07

お世話になっております。
当方Laravel5.5にてWebSiteを構築しております、
環境はmac OS Mojave10.14.2
ブラウザはGoogle Chrome バージョン: 71.0.3578.98になります。

前提

  • 現在構築しているサイト上には、

ビジネス向けのデータ(ファイルやテキスト文など)が多数あり、
それぞれがカテゴリ分けされています。

  • カテゴリは5階層に分かれています。
  • カテゴリはデータベースに入っており、変更の想定があります。

(保守の際にカテゴリが変更できない仕様だとまずいです)

やりたいこと

  • サイトのトップページ左側(サイドバー部分)にて、

下記ヤフオクのサイトの左側「カテゴリから探す」の
下の「コンピュータ」や「家電、AV、カメラ」に
マウスオーバーした時のように、
カテゴリを右にどんどん出していく仕様にしたいです。
https://auctions.yahoo.co.jp/

  • ヤフオクでは2階層しかカテゴリがないですが、

2階層目のカテゴリが出たあと、2階層目のカテゴリを
マウスオーバーするとさらにそれに応じた3階層目のカテゴリが
出現するように繰り返し、5階層目まで実装したいです。
(ヤフオクで例えると、「コンピュータ」をマウスオーバー(2階層目が出現)
→「パソコン」をマウスオーバー(3階層目が出現)→・・・といった形です)

質問

上記やりたいことを実装する上で、
役に立ちそうなjqueryやドロップダウンがありましたら、
ご教示いただけないでしょうか。
※尚、カテゴリを選択して、次の階層のカテゴリ一覧を右側に
表示する際、マウスオーバーでページ遷移しない非同期の仕様が
希望ですが、その目的はユーザビリティを上げるため、です。
もしユーザビリティを担保できるのであれば、
是非他の方法に関してヒントも頂けますと非常に助かります

考えたこと

上記やりたいことを実現するには、以下2点が必要と考えています。
0. マウスオーバーを発火点としてマウス
オーバーしたカテゴリの次の階層一覧を
データベースから取得する機能(jqueryが必要?)
0. 1に合わせて階層数を動的に設定するサイドバーの
右ドロップダウンメニュー
(jqueryが必要?)

試したこと・現状

下記ワードで検索しましたが、なかなか思う通りのものが見つかりません。
<検索したワード>
jquery プラグイン(plugin) メガメニュー(mega menu) right dropdown
サイドバー(sidebar) 階層(hierarchy) ツリー(tree)

カテゴリを選ぶたびにページを遷移させる仕様であればjqueryは
いらないかと存じますが、できればページを遷移させたくないので、
jqueryの知識がない状態からゼロベースで実装するのはかなり難しそうです。

一旦、静的に右ドロップダウンメニューを表示させる
機能までは実装してみました。

view

php

1 2<div class="sidebar border"> 3 <nav class="sidebar-menu" role="navigation"> 4 <ul> 5 <li class="bg-deepblue">資料を検索</li> 6 <div class="d-block my-1"> 7 <div class="dropright_top"> 8 <a href="#" class="dropright-toggle" data-toggle="dropdown">Menu 1 <b class="caret"></b></a> 9 <ul class="dropdown-menu multi-level"> 10 <li><a href="#">Default</a></li> 11 <li class="dropdown-submenu"> 12 <a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a> 13 <ul class="dropdown-menu"> 14 <li><a href="#">sub menu1</a></li> 15 <li class="dropdown-submenu"> 16 <a href="#" class="dropdown-toggle" data-toggle="dropdown">sub menu1</a> 17 <ul class="dropdown-menu"> 18 <li class="dropdown-submenu"> 19 <a href="#" class="dropdown-toggle" data-toggle="dropdown">sub menu2</a> 20 <ul class="dropdown-menu"> 21 <li><a href="#">sub menu3</a></li> 22 <li><a href="#">sub menu3</a></li> 23 <li><a href="#">sub menu3</a></li> 24 </ul> 25 </li> 26 </ul> 27 </li> 28 </ul> 29 </li> 30 </ul> 31 </div> 32 </div> 33 </ul> 34</nav> 35</div>

css

php

1.sidebar-menu ul { 2 text-align: left; 3 margin: 0; 4 padding: 0; 5} 6 7.sidebar-menu ul li { 8 color:white; 9 list-style: none; 10 text-decoration: none; 11 text-transform: uppercase; 12 font-size: 0.5rem; 13 font-weight: 600; 14 position: relative; 15 padding: 7px 7px; 16 white-space: nowrap; 17} 18 19 20.dropright_top .dropdown-menu { 21 top: 0; 22 right: auto; 23 left: 100%; 24 margin-top: 0; 25 margin-left: 0.125rem; 26} 27 28.dropright_top .dropdown-toggle::after { 29 display: inline-block; 30 width: 0; 31 height: 0; 32 margin-left: 0.255em; 33 vertical-align: 0.255em; 34 content: ""; 35 border-top: 0.3em solid transparent; 36 border-right: 0; 37 border-bottom: 0.3em solid transparent; 38 border-left: 0.3em solid; 39} 40 41.dropright_top .dropdown-toggle:empty::after { 42 margin-left: 0; 43} 44 45.dropright_top .dropdown-toggle::after { 46 vertical-align: 0; 47} 48 49 50 51.dropdown-submenu { 52 position: relative; 53} 54 55.dropdown-submenu>.dropdown-menu { 56 top: 0; 57 left: 100%; 58 margin-top: -6px; 59 margin-left: -1px; 60 -webkit-border-radius: 0 6px 6px 6px; 61 -moz-border-radius: 0 6px 6px; 62 border-radius: 0 6px 6px 6px; 63} 64 65.dropdown-submenu:hover>.dropdown-menu { 66 display: block; 67} 68 69.dropdown-submenu>a:after { 70 display: block; 71 content: " "; 72 float: right; 73 width: 0; 74 height: 0; 75 border-color: transparent; 76 border-style: solid; 77 border-width: 5px 0 5px 5px; 78 border-left-color: #ccc; 79 margin-top: 5px; 80 margin-right: -10px; 81} 82 83.dropdown-submenu:hover>a:after { 84 border-left-color: #fff; 85} 86 87.dropdown-submenu.pull-left { 88 float: none; 89} 90 91.dropdown-submenu.pull-left>.dropdown-menu { 92 left: -100%; 93 margin-left: 10px; 94 -webkit-border-radius: 6px 0 6px 6px; 95 -moz-border-radius: 6px 0 6px 6px; 96 border-radius: 6px 0 6px 6px; 97} 98 99

宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/03/04 01:43

Laravelであればデフォルトで、タグに使われているBootStrapが入っているはずですよね?あまりしっかり自作する必要ないと思うのですが、BootStrapのマニュアルはどこまで確認されたのでしょうか。
gobindar

2019/03/05 02:57

mts10806様 追記修正依頼有難うございます。 BootStrapのマニュアルは確認済で、 下記の「ドロップダウンのオプション(Dropdown options)」 が当質問の該当部分かと存じますが、一つ前の階層を参照して次の階層を 表示するなどのサンプルはなく、JS初心者には理解にかなり厳しいところが あるというのが現状です…。 https://cccabinet.jpn.org/bootstrap4/components/dropdowns
guest

回答1

0

自己解決

こちらの質問の「現状」に記載の方法で実装致しました。
https://teratail.com/questions/197749

投稿2019/07/16 05:58

gobindar

総合スコア51

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問