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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Bootstrap

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

Q&A

解決済

2回答

3104閲覧

ヘッダのドロップダウンがうまく設定できない。。。(泣)

tttu

総合スコア26

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Bootstrap

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

0グッド

0クリップ

投稿2019/06/25 13:24

Railsで開発しているWEBソフトにBoot strap4を導入し、navでヘッダを作ろうとしています。
ドロップダウンを入れてみたのですが問題が2つ出てきました。

1. 2回クリックしないとドロップダウンメニューが開かない

一回目のクリックでは何も反応がなく、二回目のクリックでドロップダウンメニューが表示されます。これを一回目から表示されるようにしたいんです、、、

2.ドロップダウンメニューが開いた際にヘッダのレイアウトが崩れてしまう

メニューを開く前
メニューを開く前
メニューを開いた後
イメージ説明
ドロップダウンがヘッダ内に表示されてしまって背景がびよーんと下方向に拡大されてしまいます。

これをヘッダの範囲外に表示して、ヘッダのレイアウトに影響がないようにしたいです。

やってみたこと

検証を見て表示されるCSSを見ながらいろいろ試してみましたが、改善はできませんでした。。。

下記にヘッダパーシャルのhtml,scss,gemのコードを添付します。
どうぞよろしくお願いいたします。

HTML

1<nav class="navbar navbar-fixed-top navbar-dark bg-primary"> 2 <div class="container"> 3 <a href="/" class="navbar-brand"> 4 Body-Weight App 5 </a> 6 <ul class="navbar-nav"> 7 <% if logged_in? %> 8 <li><a href="/" class="nav-link">Home</a></li> 9 <li><a href="#" class="nav-link">Help</a></li> 10 <li class="dropdown"> 11 <a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown" role="button" aria-expanded="false">Account<span class="caret"></span></a> 12 <ul class="dropdown-menu" role="menu"> 13 <li><a href="#">メニュー1</a></li> 14 <li><a href="#">メニュー2</a></li> 15 </ul> 16 </li> 17 <% else %> 18 <li><a href="#" class="nav-link">Help</a></li> 19 <% end %> 20 </ul> 21 </div> 22</nav>

SCSS

1@import "bootstrap"; 2 3$main-blue:#428bca; 4$light-gray:#777777; 5 6li{ 7 list-style: none; 8} 9 10 11.navbar-nav{ 12 flex-direction: row; 13 li{ 14 margin-left: 15px; 15 } 16} 17

Ruby

1source 'https://rubygems.org' 2git_source(:github) { |repo| "https://github.com/#{repo}.git" } 3 4ruby '2.6.3' 5gem 'rails', '~> 5.2.3' 6gem 'bcrypt', '3.1.12' 7gem 'puma', '~> 3.11' 8gem 'uglifier', '>= 1.3.0' 9gem 'coffee-rails', '~> 4.2' 10gem 'turbolinks', '~> 5' 11gem 'jbuilder', '~> 2.5' 12gem 'bootsnap', '>= 1.1.0', require: false 13gem 'bootstrap', '~> 4.1.1' 14gem 'jquery-rails', '4.3.1' 15 16 17group :production do 18 gem 'pg', '0.20.0' 19 gem 'fog', '1.42' 20end 21 22group :development, :test do 23 gem 'byebug', platforms: [:mri, :mingw, :x64_mingw] 24 gem 'sqlite3' 25end 26 27group :development do 28 gem 'web-console', '>= 3.3.0' 29 gem 'listen', '>= 3.0.5', '< 3.2' 30 gem 'spring' 31 gem 'spring-watcher-listen', '~> 2.0.0' 32end 33 34group :test do 35 gem 'capybara', '>= 2.15' 36 gem 'selenium-webdriver' 37 gem 'chromedriver-helper' 38 gem 'rails-controller-testing', '1.0.2' 39 gem 'minitest', '5.10.3' 40 gem 'minitest-reporters', '1.1.14' 41 gem 'guard', '2.13.0' 42 gem 'guard-minitest', '2.4.4' 43end 44 45gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby] 46 47 48gem 'faker', '1.7.3' 49gem 'carrierwave', '1.2.2' 50gem 'mini_magick', '4.7.0' 51gem 'will_paginate', '3.1.6' 52gem 'bootstrap-will_paginate', '1.0.0' 53

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

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

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

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

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

guest

回答2

0

ベストアンサー

一度こちらに書いてる通りに記載して、そこから変更していくといいと思いますよ!
https://getbootstrap.com/docs/4.0/components/navbar/#supported-content

ドロップダウンメニューが開いた際にヘッダのレイアウトが崩れてしまう

こちらに関して、下記のように書けば直ると思います!

html

1 <nav class="navbar navbar-expand-lg navbar-dark bg-primary"> // navbar-fixed-topから変更 2 <div class="container"> 3 <a href="/" class="navbar-brand"> 4 Body-Weight App 5 </a> 6 <div id="navbarNavDropdown"> 7 <ul class="navbar-nav"> 8 <li class="nav-item"><a href="/" class="nav-link">Home</a></li> 9 <li class="nav-item"><a href="#" class="nav-link">Help</a></li> 10 <li class="dropdown"> 11 <a href="#" class="dropdown-toggle nav-link" data-toggle="dropdown" role="button" aria-expanded="false">Account<span class="caret"></span></a> 12 <ul class="dropdown-menu" role="menu"> 13 <li><a href="#">メニュー1</a></li> 14 <li><a href="#">メニュー2</a></li> 15 </ul> 16 </li> 17 </ul> 18 </div> 19 </div> 20 </nav>

2回クリックしないとドロップダウンメニューが開かない

こちらに関しては、試してみましたが再現できませんでした。(クリックしたら開いた)
一度JSなどでAccountをクリックしたらconsole.log()でクリックしたと出力してみるのはいかがでしょうか?
流石に何回もはないと思いますが、一度目にクリックできていない可能性もありますので。

投稿2019/06/25 14:25

fumito_94

総合スコア679

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

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

tttu

2019/06/25 14:47

いつもありがとうございます! クリックの問題に関しては、他から持ってきた複数のhtmlコードに代替しても同様の現象が起きたのでhtmlコードの問題ではないことがわかりました。 jsの方法も試してみます。他の部分、gemやrouteなどに問題があるかもしれないので広い範囲で検討しなきゃいけないかもです(泣)
fumito_94

2019/06/25 14:49

jsはちゃんと定義されていますでしょうか? https://getbootstrap.com/ こちらにJSが置いてあるので、そこからコピーして一度試してみるといいかもしれないです。
tttu

2019/06/25 15:04

まさにそれでした・・・ありがとうございます。 ただそのままだと、一回目のクリックでドロップダウンが開いたまま閉じなくなってしまったので「<script・・・」3行のうち一番上、jqueryの行を一番下にしたら正常に動作するようになりました。 定義の順番によって挙動が異なることはよくあるのでしょうか?
tttu

2019/06/25 15:50

なんとか正規の定義方法で解決したいのですが、なかなかうまくいかない状況です。考えられる問題をお教えいただければ幸いですm(_ _)m
tttu

2019/06/25 16:03

application.jsファイルの「//= require jquery」を消したらできました。 ありがとうございました。
guest

0

2つ目の問題、「ドロップダウンメニューが開いた際にヘッダのレイアウトが崩れてしまう」は解決しました。
一番上のnavタグに「navbar-expand-・・・」の指定が抜けていました。

1つ目の問題についてはまだ未解決です。

投稿2019/06/25 14:19

編集2019/06/25 14:24
tttu

総合スコア26

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

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

fumito_94

2019/06/25 14:26

すみません、画面を更新しておらず、回答者さんがすでに解決されている一つめに関しての回答を書いてしまいました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問