Miki's Blog

フロントエンジニアに、俺はなる!

【書籍学習ログ】HTML/CSS/JavaScript 基礎 - 【続・3日目】

多くなったので記事分けました!↓の続き。
【書籍学習ログ】HTML/CSS/JavaScript 基礎 - 【3日目】 - Miki's Blog
1月25日(金) 計1.5h

Chapter 4 CSSフレームワークのきほんを学ぼう〜Bootstrapでフォームをつくる

1月25日(金) 1.0h

Boostrap

Bootstrap · The most popular HTML, CSS, and JS library in the world.
Twitter社が開発したCSSフレームワーク
書籍はバージョン3に対応。
2019年1月現在の最新版は4.2.x。
トップページ右上のプルダウンより過去ページに飛べる。
f:id:gomagaru:20190125215820j:plain
今回は書籍に合わせて3をCDNで使用、その後は書籍通り。

CDN(Contents Delivery Network)

専用の配信サーバを準備することで、CSSJavaScriptなどを
ダウンロードせずに利用出来るようにした仕組み
同じファイルをサイト毎に複数回ダウンロードすることや
Webブラウザに保存されるキャッシュの無駄を防ぐ。

ノーマライズ

cssファイルでsanitize.cssを読み込まずにノーマライズされた見た目になる。
containerで囲むと左右に余白を設けた中央揃えに。
クラス名と機能の対応はドキュメントを参照。

グリッドシステム

floatで実現した回り込みは、グリッドシステムを利用して実現できる。
col-XX-Xの形で記述。
XX : ブレイクポイントの画像幅を設定できる。

XX 画像幅
xs ~767px
sm 768~991px
md 992~1199px
lg 1200px

X : 画像幅を12区画(カラム)に分けた時に指定する画像幅の大きさ。
合計12で設定する。
例 : 画像幅767px以下で標準、768px以上で6カラムにする。
(1:1で分かれた横並びにレイアウトする)

...
<div class="row">
   <div class="col-sm-6">
   ...
   </div>
   <div class="col-sm-6">
   ...
   </div>
</div>
フォーム

文字列フォーム、ドロップダウンリスト、
チェックボックスラジオボタンを設定。
大体Chapter 2内容とphp作成時の知識でOK。
Bootstrap特有の事項 :
・横並びに配置する設定
チェックボックスラジオボタンを横並びに配置したいとき
labelにinlineクラスを付加する。
checkbox-inline or radio-inline

※書籍p.164のコードそのままではチェックボックスは横並びになる。
書籍p.165の図4-2-10のように縦に並ぶ表示にするには、
label クラスで"checkbox"を追加した。

例: ラジオボタンを横並びに配置

<label class="radio-inline">
   <input type="radio" name="q1" id="q1_1" value="A型">
</label>
...

・テキストエリアの横幅100%がデフォルト
Bootstrapを使用していない時は幅を指定する記述が必要になる。

・ボタンに標準スタイルを適用する
例: 「送信」ボタンに標準スタイルを適用する
btn-default クラスを付加。

<button type="submit" class="btn btn-default">送信</button>

・赤に白文字で警告を出す
label-danger クラスを付加
例 : 「お名前」が必須項目

<label for="name">お名前<span class="label label-dangar">必須</span></label>

フォームのRWD対応で重要な事項 :
・画像幅が狭いときは縦並びにする
優先順位に気をつける。最優先の指定「!important」を使用する。
例 : 通常時inlineのラジオボタン

@media only screen and (max-width: 992px) {
   .radio-inline {
      display: block; /*ブロック要素にして改行させない*/
      margin: 0 !important; /*余白を0に強制*/
   }
}

・labelの重要性
入力ボックスの要素で、例えば「span」を使用すると
指で確実に選択領域に触れなければならず、選択が困難になる。
対して、「label」を使用すると、対象の入力ボックスが関連付けられてタップ・クリックでフォーカスされるようになる

成果物

PC画面、デベロッパツール(iPhone6/7)で確認。
f:id:gomagaru:20190125215845j:plainf:id:gomagaru:20190125215849j:plain

まとめと感想

Bootstrap導入〜簡単なレイアウト指定の基本を学習。
概ねChapter 2で触れた知識にBootstrap機能による補助が加わった感じ。

必須事項への警告表示など、css側に背景色・文字色などの指定要らずで感動。

グリッドシステムはHugoテーマをカスタムした際に触れており
復習、指定するsmやmdの意味について理解が深まった。

RWD対応時にはレイアウトをどう変化させるかユーザー目線で考える必要があるので、実機での確認がベストと思った。

今回のバージョンは古いそうなので、最新版のv4.2を利用して
本を見ずに同じレイアウトで作成するなど練習したい。

以上!次回、JavaScriptへ〜