Bootstrap4のハンバーガーメニューの色を変える方法

ホームページによっては、ハンバーガーメニューの色や枠線などを変更したい場合がありますので、やり方をメモします。

基本、ハンバーガーメニューのclassのCSSを変更すれば上手く変更出来ます。

ハンバーガーメニューの枠線、を変更する

class .navbar-toggler を設定します。

.navbar-toggler{
  border-color: #ffffff;
}

ハンバーガーメニューの背景色を変更する

枠線と同様にclass .navbar-toggler を設定します。

.navbar-toggler{
  background-color: #000000;
}

ハンバーガーメニューの三本線を変更する

枠の中の三本線のイメージは、SVG background-imageで描画しているので、ここを変更します。rgba形式で設定。

.navbar-toggler .navbar-toggler-icon {
  background-image: url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255,255,255,1)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 8h24M4 16h24M4 24h24'/%3E%3C/svg%3E");
}

Bootstrap4 YouTubeをレスポンシブで貼り付ける(普通の動画でもOK)

Bootstrap4を使えば、レスポンシブなYouTubeリンクを貼り付けることができます。レスポンシブというのがミソです。

普通にYouTubeリンクを貼ると、固定サイズになってしまいますからね。Bootstrap4を使えば、クラスを追加するだけでレスポンシブなYouTubeリンクの出来上がりです。

もちろんYouTubeだけでなく、普通の動画でもOKです。

Bootstrap4 YouTubeをレスポンシブで貼り付ける(HTML)

<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="https://www.youtube.com/embed/JYzTYXD6fGU" allowfullscreen></iframe>
</div>

「div」に「embed-responsive」と「embed-responsive-16by9」を追加します。「16by9」は動画の比率を表しています。

  • embed-responsive-21by9
  • embed-responsive-16by9
  • embed-responsive-4by3
  • embed-responsive-1by1

動画を設定する「iframe」には「embed-responsive-item」を設定すれば完成です!

Bootstrap4を使ってCSSだけでコンテンツの高さを揃える

Bootstrap4を使ってCSSだけでコンテンツの高さを揃える

カードデザインでカードの高さを合わせたい時ってありますよね。意外と大変なコンテンツの高さ合わせ。ちょっと前まではJSを駆使しないといけませんでした。

実際にBootstrap3を使っているHowMaでも、jQueryプラグインのequalizerを利用してカードデザインの高さを合わせています。そんなコンテンツの高さ合わせですが、Bootstrap4を使えばCSSだけで超簡単に実現できてしまいます!!

Bootstrap4の導入

公式のドキュメントに記載されているとおりですが、CDNのリンクを読み込むだけでOKです。

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

高さを揃える方法

レスポンシブデザインで多用するgrid systemを使って、1コンテンツ1colで組んでいきます。それをrowで囲います。

Bootstrap4だと、なんとこれだけで高さが揃ってしまいます!(v3までしか知らない人はビックリですね)なぜそうなるかというと、v4ではrowがdisplay:flexになっています。

flexはデフォルトで子要素の高さが揃うようになっているので、指定してあげるだけでこうなっちゃいます。一点ポイントを上げるなら、colの子要素にh-100(height:100%のクラス)を入れてあげることでしょうか。

基本単位がremに変更されグローバルフォントサイズが14pxから16pxに変更された

remという単位はルートのフォントサイズを基準にしており、直前の親の影響などを受けないサイズを指定することができます。

マージン・パディングなどの余白にもこの単位が採用されています。

    
html{
      font-size:16px;
    }
    h1{
      font-size:2rem; // 32px
    }
    p{
      font-size:1rem; // 16px
    }
html{
font-size: 16px; 
}
p{
font-size: 1rem; /* 1rem = 16px */
}
h1 {
    font-size: 1.875rem; /* 30px / 16px = 1.875rem */
}

bootstrap4ではremフォントサイズを使う

ォントサイズを「rem」で指定するべき理由

一般的に、相対指定は「%」や「em」、絶対指定は「px」を使ってフォントサイズを制御していると思います。しかし、CSS3から新たに追加された「rem」での指定の方が、IE8対応が少なくなってきた昨今、シンプルでいいのではないかと思うようになりました。

そこで今回は、この記事で「rem」の素晴らしさを紹介したいと思います。

remとは?

さて、「rem」とはどのような単位なのでしょうか。「em」や「%」の場合、親要素(が基準)に対して相対的に指定する単位になりますが、「rem」は「root em」の略の通り、root要素(最上位の要素)に対して相対的に指定する単位になります。

では、「rem」を理解するために、下記に「em」と「rem」のコードを具体的に記載しましょう。

emでフォントサイズを指定

body { font-size:62.5%; } /* 10px */
p  { font-size: 1.6em; } /* 16px */
li { font-size: 1.6em; } /* 16px */

まず、ベースフォントサイズを作ります。bodyに「%」を使って、主要ブラウザのデフォルトフォントサイズ「16px」を「10px」になるように記述します。こうすることで、フォントのサイズを「16px」にするためには「1.6em」、「20px」にするには「2em」とシンプルに指定できるようになります。

しかし、「em」の場合、入れ子の構造になると、複利計算されてしまいます。例えば、「li」の子要素の「p」は「16px」にはならなく、「1.6px × 1.6」で「26px」となります。したがって、下記のように「li」の子要素の「p」に「1em」を記述してあげて、複利計算を避けなければなりません。

body { font-size:62.5%; } /* 10px */
p  { font-size: 1.6em; } /* 16px */
li { font-size: 1.6em; } /* 16px */
li p { font-size: 1em; } /* 16px */

remでフォントサイズを指定

html { font-size: 62.5%; } /* 10px */
body { font-size: 1.6rem; } /* 16px */
p  { font-size: 1.6rem; } /* 16px */
li { font-size: 1.6rem; } /* 16px */
li p { font-size: 1.6rem; } /* 16px */

一方、「rem」でのサイズ指定は、ルート(根)という名の通り、最上位の親要素(html要素)を基準値とするため、複利計算の心配はいらなくなり、どんなに入れ子になろうとも、シンプルに「1.6rem」は「16px」となるのです。

参考サイト:https://www.plusdesign.co.jp/blog/?p=5152

※計算方法

h1 {
    font-size: 1.875rem; /* 30px/16px=1.875rem・何px計算は1.875rem*16px=30px */
}