Bootstrap4でSPでテーブルを横スクロールさせたい

SPでtableを表示した際に、tableの横幅が固定されるので、セル内の文字数がtheaderのセルよりも長くなった場合、縦長のテーブルになってしまう。

PC

SP

-> tableをtable-responsiveで囲み、セルにtext-nowrapを入れる

<div class="table-responsive">
				<table class="table table-striped">
					<thead >
						<tr>
							<th scope="col" class="font-weight-normal">ID</th>
							<th scope="col" class="font-weight-normal">見積日</th>
							<th scope="col" class="font-weight-normal">件名</th>
							<th scope="col" class="font-weight-normal">金額合計</th>
							<th scope="col" class="font-weight-normal">詳細</th>
							<th scope="col" class="font-weight-normal">見積書</th>
						</tr>
					</thead>
					<tbody>
						<tr>
							<td>1</td>
							<td class="text-nowrap">2020年8月9日(日)</td>
							<td class="text-nowrap">高温ヘリウム検査装置製造</td>
							<td>200,000,000</td>
							<td class="text-nowrap"><button>詳細</button> <button>編集</button></td>
							<td class="text-nowrap"><button>ダウンロード</button></td>
						</tr>
					</tbody>	
				</table>
			</div>

横スクロール出来るようになりました。

件名など入力時にバリデーションで文字数制限をしておけば、横スクロールが長くなりすぎる事はないでしょう。

Bootstrap4のメニューでログアウトだけ右寄せ

右に寄せたいメニュー(ログアウト)は、ul navbar-nav mr-autoで作ったメニューからmr-autoを外して再度ul navbar-navを作る。
小技として、ログアウトはactiveを外して薄く表示させてみた。

<div class="collapse navbar-collapse" id="navbarCollapse">
				<ul class="navbar-nav mr-auto">
					<li class="nav-item dropdown  active">
						<a class="nav-link dropdown-toggle" href="/estimate" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">見積管理</a>
						<div class="dropdown-menu" aria-labelledby="navbarDropdown">
							<a class="dropdown-item" href="/estimate">見積一覧</a>
							<hr>
							<a class="dropdown-item" href="/estimate/input">見積登録</a>
						</div>
					</li>
					// 省略
				</ul>
				<ul class="navbar-nav">
					<li class="nav-item">
						<a class="nav-link" href="">ログアウト</a>
					</li>
				</ul>
			</div>

pc

sp

まあまあいいんじゃないでしょうか。

Bootstrap4でドロップダウンの区切り線を調整

まずヘッダメニューの雛形を作ります。

### classにcollapse navbar-collapseのみ

<div class="collapse navbar-collapse" id="navbarCollapse">
				<ul class="navbar-nav mr-auto">
					<li class="nav-item active">
						<a class="nav-link" href="/estimate">見積管理</a>
					</li>
					<li class="nav-item active">
						<a class="nav-link" href="/order">受注管理</a>
					</li>
					<li class="nav-item active">
						<a class="nav-link" href="/client">得意先管理</a>
					</li>
					<li class="nav-item active">
						<a class="nav-link disabled" href="">その他</a>
					</li>
			</div>

続いて、ドロップダウンをつけていきます。

<div class="collapse navbar-collapse" id="navbarCollapse">
				<ul class="navbar-nav mr-auto">
					<li class="nav-item dropdown active">
						<a class="nav-link dropdown-toggle" href="/estimate" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">見積管理</a>
						<div class="dropdown-menu" aria-labelledby="navbarDropdown">
							<a class="dropdown-item" href="/estimate">見積一覧</a>
							<a class="dropdown-item" href="/estimate/input">見積登録</a>
						</div>
					</li>
					<li class="nav-item active">
						<a class="nav-link" href="/order">受注管理</a>
					</li>
					<li class="nav-item active">
						<a class="nav-link" href="/client">得意先管理</a>
					</li>
					<li class="nav-item active">
						<a class="nav-link disabled" href="">その他</a>
					</li>
			</div>

悪くはないけど。悪くはないけど背景色とカラーを変えたい。(=悪い)

/src/scss/style.scss

.navbar {
	.navbar-nav {
		.dropdown-menu {
			background-color: #1e90ff;
		}
		.active {	
			a, a:focus, a:hover {
				background-color: #1e90ff;
				color: #fff;
			}
		}
	}
}

まあいいけど、操作性を考えると、区切り線を入れたい。
class=”divider”で上手くいかないので、hrで対応する。

<li class="nav-item dropdown active">
						<a class="nav-link dropdown-toggle" href="/estimate" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">見積管理</a>
						<div class="dropdown-menu" aria-labelledby="navbarDropdown">
							<a class="dropdown-item" href="/estimate">見積一覧</a>
							<hr>
							<a class="dropdown-item" href="/estimate/input">見積登録</a>
						</div>
					</li>
.navbar {
	.navbar-nav {
		.dropdown-menu {
			background-color: #1e90ff;
		}
		.active {	
			a, a:focus, a:hover {
				background-color: #1e90ff;
				color: #fff;
			}
		}
		hr {
			margin-top: 5px;
			margin-bottom: 5px;
		}
	}
}

pc

sp

想像してたより綺麗。これで、見積管理以外のドロップダウンも作り込んでいきます。

Bootstrap4のヘッダー色の変更

### navbar-dark bg-dark
bg-darkが背景色で、navbar-darkが明るめの文字色

<div class="wrapper">

		<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
			<a class="navbar-brand" href="/">Hanbai</a>
		</nav>

		<div class="container">
			<div class="top">
				
			</div>
		</div>
		<footer>
			<p>&copy; Hanbai All Right Reserved.</p>
		</footer>
	</div>

デフォルトがbg-darkなので、SAPを意識して水色に変更します。
また、ヘッダに合わせて、フッタの色も変更。バランスを見ながら細かな微調整をしていきます。

### background-colorで背景色指定
inline styleでbackground-colorを指定します。

<nav class="navbar navbar-expand-md navbar-dark fixed-top" style="background-color:#1e90ff">
			<a class="navbar-brand" href="/">Hanbai</a>
</nav>

おおお、なんかERPっぽい雰囲気が出てきました。

laravel5-7にbootstrapを入れる

簡易的にcdnで実装したい。jqueryはbody内。

<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>

resources/views/layouts のdefault.blade.phpを編集する。

<!DOCTYPE>
<html>
<head>
	<meta charset="utf-8">
	<title>@yield('title')</title>
	<link rel="stylesheet" href="/css/styles.css">
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
  <div class="container">
	@yield('content')
  </div>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
</body>
</html>

[vagrant@localhost laravel]$ php artisan serve –host 192.168.35.10

おいおい、おかしなことになってる。
まあbootstrapが動くことは分かったのでOK

Bootstrap tooltip, popover

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Bootstrap Practice</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

    <div class="container" style="padding:20px 0">

      <p><a href="#" data-toggle="tooltip" title="説明">this</a> and <a href="#" data-toggle="popover" title="説明" data-content="さらに説明">that</a>.</p>

    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
    <script>
      $(function(){
        $("[data-toggle=tooltip]").tooltip({
          placement: 'bottom'
        });
        $("[data-toggle=popover]").popover();
      });
    </script>
  </body>
</html>

%e7%84%a1%e9%a1%8c

Bootstrap navbar レスポンシブル対応

トグルボタンを追加します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Bootstrap Practice</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="navbar-header">
      <button class="navbar-toggle" data-toggle="collapse" data-target=".target">
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="">Hello world</a>
    </div>

    <div class="collapse navbar-collapse target">
    <ul class="nav navbar-nav">
      <li class="active"><a href="">link1</a></li>
      <li><a href="">link2</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="">link3</a></li>
      </ul>
    </div>
  </nav>

    <div class="container" style="padding:20px 0">
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

%e7%84%a1%e9%a1%8c

Bootstrap navbar

ヘッダー固定はnavbar-fixed-topのclassを追加します。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Bootstrap Practice</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>

  <nav class="navbar navbar-default navbar-fixed-top">
    <div class="navbar-header">
      <a class="navbar-brand" href="">Hello world</a>
    </div>
    <ul class="nav navbar-nav">
      <li class="active"><a href="">link1</a></li>
      <li><a href="">link2</a></li>
      </ul>
      <ul class="nav navbar-nav navbar-right">
        <li><a href="">link3</a></li>
      </ul>
  </nav>

    <div class="container" style="padding:20px 0">
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    <p>こんにちは</p>
    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

%e7%84%a1%e9%a1%8c

bootstrap パン屑、pagination、pager

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Bootstrap Practice</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="container" style="padding:20px 0">

    <ul class="breadcrumb">
      <li><a href="">Home</a></li>
      <li><a href="">User</a></li>
      <li class="active">@walking</li>
    </ul>

    <ul class="pagination">
      <li class="disabled"><a href="">&laquo:</a></li>
      <li class="active"><a href="">1</a></li>
      <li><a href="">2</a></li>
      <li><a href="">3</a></li>
      <li><a href="">&raquo:</a></li>
    </ul>

    <ul class="pager">
      <li class="previous"><a href="">前へ</a></li>
      <li class="next"><a href="">次へ</a></li>
    </ul>

    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

%e7%84%a1%e9%a1%8c

Bootstrap dropdown menu

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Bootstrap Practice</title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div class="container" style="padding:20px 0">
      <div class="btn-group">
        <button class="btn btn-primary">Action </span>
        <button class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
        <span class="caret"></span>
        </button>
        <ul class="dropdown-menu">
        <li><a href="">Action</a></li>
        <li><a href="">Action</a></li>
        <li class="divider"></li>
        <li><a href="">Action</a></li>
        </ul>
      </div>

    </div>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

%e7%84%a1%e9%a1%8c