JavaScript5(DOM操作、class)

テキストアニメーションから続く

1:DOM操作(アニメーションのための文字分割)

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="style.css">
  <link href="https://fonts.googleapis.com/css2?family=Teko:wght@500&display=swap" rel="stylesheet">
</head>
<body>
  <div id="container">
   <div class="animate-title inview">
    SUPER ANIMATION
   </div>
    <button onclick="document.querySelector('.animate-title').classList.toggle('inview');">Animation</button>
  </div>
<script src="main.js"></script>
</body>
</html>

mixinの記述

@mixin animation(
  $name,
  $duration: 1s,
  $timing-function: ease,
  $delay: 0s,
  $iteration-count: 1,
  $direction: normal,
  $fill-mode: forwards
) {
animation: {
  name: $name;
  duration: $duration;
  timing-function: $timing-function;
  delay: $delay;
  iteration-count: $iteration-count;
  direction: $direction;
  fill-mode: $fill-mode;
 }
}

SCSSの記述(テキストアニメーションのときに使ったのとほぼ同じ)

続きを読む

Text Animationを作る1(テキストアニメーション)

その4から続く

ボタンを押したら発火するシンプルなアニメーションを作ってみよう!

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible"content="IE=edge">
<meta name="viewport"content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet"href="style.css">
</head>
<body>
  <div id="container">
  <div class="animate-title">
    <spanclass="char">A</span>
    <spanclass="char">N</span>
    <spanclass="char">I</span>
    <spanclass="char">M</span>
    <spanclass="char">A</span>
    <spanclass="char">T</span>
    <spanclass="char">I</span>
    <spanclass="char">O</span>
    <spanclass="char">N</span>
  </div>
  <button onclick="document.querySelector('.animate-title').classList.toggle('inview');">Animation</button>
</button>
  </div>
  </body>
</html>

mixinの記述

@mixin animation(
  $name,
  $duration: 1s,
  $timing-function: ease,
  $delay: 0s,
  $iteration-count: 1,
  $direction: normal,
  $fill-mode: forwards
) {
animation: {
  name: $name;
  duration: $duration;
  timing-function: $timing-function;
  delay: $delay;
  iteration-count: $iteration-count;
  direction: $direction;
  fill-mode: $fill-mode;
 }
}

SCSSの記述

続きを読む

JavaScript学習のまとめ4(DOM基礎)

3から続きます

1:DOM(Document Object Model)とは?

1:HTMLをJavaScriptから操作できるようにしたインターフェイス

2:JavaScriptからはDOM APIを通じてHTMLの情報を取得・変更します。

document.querySelectorを使う場合が多いらしい

3:情報の取得・変更・イベントの登録などができます。

例1

const ul = document.querySelector('ul')
undefined ul.style.color = 'red' "red"
const firstLi = ul.querySelector('li')
undefined firstLi.style.color = 'black' "black"

続きを読む

JavaScript学習のまとめ3(forEach、reduce関数)

2.5から続きます

1:配列とforEachメソッド

HTMLの記述は1と同じなので省略

main.jsの記述

const arry = [1, 2, 3, 4, 5];

// 変数名は何でもいいのでv,forEachを使ったほうが記述が少ない
  arry.forEach(function(v, i, ary) {
    console.log(v, i, ary);
})

// アロー関数の記法だと更に省略できる
  arry.forEach(v => console.log(v));

検証して実行結果を確かめると・・・

続きを読む

JavaScript学習のまとめ2.5(コールバック関数とループ処理)

2から続きます。

コールバック関数とは?

引数に渡す関数をcallback関数という。

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
  <h1>JavaScriptの基礎</h1>
   <script src="main.js"></script>
</body>
</html>

main.jsの記述

// いつもの基本的な書き方
// function hello(name) {
// console.log("hello " + name);
// }
// hello("Tanaka Tarou");

// callbackに関数getnameが渡る(戻り値'Tanaka Tarou')
function hello(callback, lastname) {
// 関数を実行するためcallback()としている
 console.log('hello ' + callback());
 }
// 引数に渡す関数をcallback関数という
 function getFirstName() {
 return 'Tanaka';
}
 function getName() {
 return 'Tanaka Tarou';
}

// 関数を渡すと戻り値'Tanaka Tarou'が渡る
 hello(getFirstName);
 hello(getName); 
// コールバックに引数を渡したい場合、lastnameにAkinaが渡ってくる
function hello2(callback, lastname) {
// 関数を実行するためcallback()としている
// callback(第一引数)の中身がこれ
console.log(callback)
console.log(lastname)
console.log(callback(lastname))
console.log(callback(callback))
console.log('hello ' + callback(lastname));
}
// 無名関数
hello2(function(name) {
return 'suzutuki ' + name;
}, 'Akina');

// アロー関数の記法に直すと(functionと{}とreturnを省略)
// hello(() => 'suzutuki');

function doSomething(a, b, callback) {
// 結果をコールバック関数に渡す
const result = callback(a, b);
console.log(result);
}

function plus(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
// 処理結果を変えることができる
doSomething(2, 3, plus);
doSomething(2, 4, multiply);

続きを読む

JavaScript学習のまとめ2(比較演算子、アロー関数、コールバック関数、)

1:比較演算子についてのまとめ

HTMLの記述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
  <h1>JavaScriptの基礎</h1>
   <script src="main.js"></script>
</body>
</html>

main.jsの記述

if(false) {
  console.log('this is true');
} else if(true) {
  console.log('this is else if block');
} else {
  console.log('this is false');
}

// データの型も一致してないとダメこの場合false,==だとtrue
if(1 === '1') {
  console.log('this is true');
} else {
  console.log('this is false');
}

// この場合trueになる,falseは0,型の変換をする
if(1 == true) {
  console.log('this is true');
} else {
  console.log('this is false');
}

// =でないことを確認したいとき、型の比較もするので
if(0 !== '0') {
  console.log('this is true');
} else {
  console.log('this is false');
}

// 数字に変換してから値の比較を行って反転
if(0 != '0' ) {
  console.log('this is true');
} else {
  console.log('this is false');
}

// 両方の条件を満たしていないのでfalse
if(0 == '0' && 0 === '0') {
  console.log('this is true');
} else {
  console.log('this is false');
}

// どちらかがtrueならtrueに行く
if(0 === '0' || 0 == '0') {
  console.log('this is true');
} else {
  console.log('this is false');
}

const num = null;
const bool = Boolean(num);
console.log(bool);

if(!num) {
  console.log('this is true');
} else {
  console.log('this is false');
}

検証して実行結果を確かめると・・・

まとめ

===はデータの型も一致してないとダメ、==はOK

!==は型の比較をするので注意、!=は文字列を数字に変換してから比較して反転する

&&はandと同じで両方trueでないときはfalse

||はorと同じで両方falseでないときはtrue

falseは0,trueは1

最後のnullはfalseと同じ(厳密には違う)なので反転してtrue

2: アロー関数

アロー関数を使うと省略した記法でコードを記述できる。

HTMLの記述は1と同じなので省略

main.jsの記述

// hello();より下に移動してもエラーにならない
// function hello(name = 'Yan') {
// console.log('hello ' + name);
// }

// hello();より下に移動するとエラー
// const hello = function(name = 'Yan') {
// console.log('hello ' + name);
// }

// // アロー関数にすると1行だけなら{}を除ける
// const hello = (name = 'Yan') => console.log('hello ' + name);

// // 引数がデフォルト値ならこうで
// const hello = name => console.log('hello ' + name);

// // 引数が2つならこのように記述
// const hello = (name, age) => console.log('hello ' + name + age);

// 戻り値を出力する場合、一般的記法
// const hello = (name, age) => {
// return 40;
// }

// 上と同じ意味だが更に省略できる
// const hello = (name, age) => 40;
// console.log(hello());

// 省略前の記法
// const retriever = (name, age) => 40;
// const arry = [1,2,3,4,5,6];
// arry.forEach(value => {
// console.log(value);
// })

// 省略後のアロー関数の記法
  const retriever = (name, age) => 40;
// 戻り値40が出力される
  console.log(retriever());
  const arry = [1,2,3,4,5,6];
  arry.forEach(value => console.log(value));
  const hello = (name, age) => console.log('hello ' + name + age);
  hello('Tarou Tanaka ', 15);
  hello('Tarou Tanaka2 ', 25);

検証して実行結果を確かめると・・・

↑がなぜ出力されたか?

  1. const retriever = (name, age) => 40;  console.log(retriever());で=> 40の部分が戻り値なので出力された
  2. 配列をループして出力したから
  3. ‘hello ‘ + 与えた引数で出力された
  4. ‘hello ‘ + 与えた引数で出力された

3:コールバック関数について

HTMLの記述は1と同じなので省略

main.jsの記述

// いつもの基本的な書き方
// function hello(name) {
// console.log("hello " + name);
// }
// hello("Tanaka Tarou");

// callbackに関数getnameが渡る(戻り値'Tanaka Tarou')
function hello(callback, lastname) {
// 関数を実行するためcallback()としている
 console.log('hello ' + callback());
 }
// 引数に渡す関数をcallback関数という
 function getFirstName() {
 return 'Tanaka';
}
 function getName() {
 return 'Tanaka Tarou';
}

 hello(getFirstName);
// 関数を渡すと戻り値'Tanaka Tarou'が渡る
 hello(getName);

// コールバックに引数を渡したい場合、lastnameにAkinaが渡ってくる
function hello2(callback, lastname) {
// 関数を実行するためcallback()としている
// callback(第一引数)の中身がこれ
console.log(callback)
console.log(lastname)
console.log(callback(lastname))
console.log(callback(callback))
console.log('hello ' + callback(lastname));
}
// 無名関数
hello2(function(name) {
return 'suzutuki ' + name;
}, 'Akina');

// アロー関数の記法に直すと(functionと{}とreturnを省略)
// hello(() => 'suzutuki');

function doSomething(a, b, callback) {
// 結果をコールバック関数に渡す
const result = callback(a, b);
console.log(result);
}

function plus(a, b) {
return a + b;
}
function multiply(a, b) {
return a * b;
}
// 処理結果を変えることができる
doSomething(2, 3, plus);
doSomething(2, 4, multiply);

検証して実行結果を確かめると・・・

↑がなぜ出力されたか?

  1. 関数getFirstNameの戻り値’Tanaka’がcallbackに渡されるのでhello Tanakaになった
  2. 関数getNameの戻り値’Tanaka Tarou’がcallbackに渡されるのでhello Tanaka Tarouになった
  3. 無名関数function(name) { return ‘suzutuki ‘ + name; }の部分が第一引数の中に入っているためこのように出力された
  4. 無名関数’Akina’の部分が第二引数なのでAkinaが出力された
  5. 無名関数function(name) { return ‘suzutuki ‘ + name; }の部分のnameの部分は第二引数のAkinaが格納されているのでSuzutuki Akinaと出力された。
  6. 無名関数function(name) { return ‘suzutuki ‘ + name; }の部分のnameの部分は第一引数の関数の無名関数function(name) { return ‘suzutuki ‘ + name; }が格納されているのでSuzutuki +無名関数function(name) { return ‘suzutuki ‘ + name; }と出力された。
  7. 5に単純に’hello’が追加されただけなので出力された。
  8. console.log(callback);のcallbackの中身はcallback関数なのでfunction plus(a, b) { return a + b; } が出力された。
  9. 変数resultには第三引数のcallback関数 function plus(a, b) { return a + b; }が入っていて、式展開が行われた結果5が出力された。
  10. console.log(callback);のcallbackの中身はcallback関数なので
    function multiply(a, b) { return a + b; } が出力された。
  11. 変数resultには第三引数のcallback関数 function multiply(a, b) { return a * b; }が入っていて、式展開が行われた結果8が出力された。

※ポイント

console.log()で中身を確認すると理解しやすいので、積極的に使おう!

 

JavaScript学習のまとめ1(配列、オブジェクト、ループ)

0から続きます。

1:配列の基礎

HTMLの記述

<!DOCTYPE html>
 <html lang="en">
 <head>
   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="X-UA-Compatible" content="ie=edge">
   <title>Document</title>
 </head>
  <body>
   <h1>JavaScriptの基礎</h1>
   <script src="main.js"></script>
  </body> 
</html>

main.jsの記述

const arry = new Array(1,2,3,4,5,6);
// constなので下のように新しく宣言し直すことはできないが
// arry = new Array(1,2,3,4,5,6);
// 配列の中身を変えることは可能
arry[5] = 8;
console.log(arry);
console.log(arry[0]);

// 通常こちらの記法で書く
const ally = [1, 2, 3, 4, 5, 6, 'string', false];
// 新しいオブジェクトを末尾に追加する
// ally.push('new item')
// 新しいオブジェクトを最初に追加する
// ally.unshift('first item')
// 末尾を削除する
// ally.pop();
// const val = ally.pop();
// const val2 = ally.pop();
// 末尾から2つ目の削除されたものが出力される
// console.log(val2);

// 新しいオブジェクトを最初に追加する
ally.unshift('first item')
// 先頭のオブジェクトを削除してvalに格納する
const val = ally.shift();
// 削除された先頭のオブジェクトを出力
console.log(val);

続きを読む

JavaScript学習のまとめ0(変数、関数、メソッドとプロパティー)

1:JavaScriptの基礎についてまとめてみた

HTMLの記述

<body>
  <h1>JavaScript基礎</h1>
  <script src="main.js"></script>
</body>

main.jsの記述

// var, let, const
// varは上書きできる
// var name = 'Tom';
// console.log('hello' + name);

// letも上書きできるよ
let name = 'Pon';
name = 'Tim'
console.log('hello' + name);
// あとから上書きできないのでエラーになるよ
// const nam = 'Yan';
// nam = 'Tim';

// データ型は Number, String, Boolean, Undefined, Null, Symbol
// 動的型付け言語
// Rubyと似ている点があるな
let variable = 'str';
  variable = 12;
  variable = false;
// variable = undefined;
// variable = null;

// 実際に確認するには?
  console.log(typeof variable);
// ポイント上書き禁止はconstで定義しよう!

続きを読む

Bootstrap+Font Awesome(フォトギャラリー)

BootstrapとFont Awesomeを使ってレスポンシブ対応のフォトギャラリーを作る

作りたいもの

ファイルの配置図↓

imagesに表示したい画像を入れる。

cssファイルの中にgallery.cssを作成して記述する

HTMLの記述

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>花のフォトギャラリー</title>
  <meta name="description" content="フォトギャラリーです。">
  <meta name="keywords" content="花,フォトギャラリー">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
  <link rel="stylesheet" href="css/gallery.css">
</head>
  <body>
   <!-- グローバルナビゲーション(ナビバー) -->
   <nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark">
     <div class="container">
      <!-- フォントオーサムのアイコンを使うi class~ </i>-->
       <a class="navbar-brand" href="gallery.html"><i class="far fa-image mr-1"></i>Cats</a>
       <!-- ハンバーガーメニュー(bootstrap公式からコピペできる) -->
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
       </button>
       <div class="collapse navbar-collapse" id="navbarSupportedContent">
         <!-- ホームの部分をアクティブにする -->
         <ul class="navbar-nav">
          <li class="nav-item">
             <a class="nav-link active" href="gallery.html">Home</a>
           </li>
           <li class="nav-item">
             <a class="nav-link" href="#">New</a>
          </li>
           <li class="nav-item">
             <a class="nav-link" href="#">About</a>
           </li>
         </ul>
       </div>
     </div>
   </nav>
   <!-- レスポンシブ対応のための準備1 -->
  <main class="container">
     <!-- ジャンボトロン -->
     <div class="jumbotron">
       <!-- フォントオーサムのカメラアイコンを利用する -->
       <h1><i class="fas fa-camera-retro"></i>フォトギャラリー</h1>
      <p>花のフォトギャラリーをご覧ください。</p>
     </div>
     <!-- レスポンシブ対応のための準備2 -->
     <div class="row">
       <!-- mb-3=margin-bottom3でHTMLでも直接指定できる -->
       <div class="col-lg-4 col-sm-6 mb-3">
        <!-- 画像の外側に縁をつける -->
         <div class="img-thumbnail"> 
          <img src="images/flower1">
         </div>
       </div>
       <!-- 画面サイズがlgの時横に3つ表示し、smの時は横に2つ表示 -->
      <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower2">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
        <div class="img-thumbnail">
           <img src="images/flower3">
         </div>
       </div> 
      <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
          <img src="images/flower4">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower5">
        </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower6">
         </div>       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
           <img src="images/flower7">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
       <div class="img-thumbnail">
         <img src="images/flower8">
         </div>
       </div>
       <div class="col-lg-4 col-sm-6 mb-3">
         <div class="img-thumbnail">
          <img src="images/flower19">
         </div>
       </div>
     </div>
   </main>
  <!-- Bootstrapを導入するためのCDN -->
  <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.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script> 
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
  <!-- フォントオーサムを導入するためのCDN --> 
  <script defer src="https://use.fontawesome.com/releases/v5.0.2/js/all.js"></script>
 </body>
 </html>

CSSの記述(cssファイルの中にgallery.cssを作成して記述する)

html {
  font-size: 16px;
}
body {
  padding-top: 5rem;
  font-family: "Hiragino Kaku Gothic ProN", "メイリオ", sans-serif;
}
/* 画像が指定されたグリッドに収まるようにする */
img {
  width: 100%;
}

まとめ

Bootstrapを使うことでCSSのコード量を減らすことができ、レスポンシブ対応ができる。

フォントオーサムを使うことでアイコンを使うことができる。

Bootstrapのまとめ5(レスポンシブ)

グリッドオプション(レスポンシブ)

HTMLの記述

<!DOCTYPE html>
 <html lang="ja">
 <head>
   <meta charset="utf-8">
   <title>グリッドシステム</title>
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
   <style>
     .orange {
       background-color: orange;
       border: black 1px solid;
     }
   </style>
 </head>
 <body>
   <div class="container">
     <!-- Grid option -->
     <div class="row">
       <div class="col orange">A</div>
       <div class="col orange">B</div>
       <div class="col orange">C</div>
     </div>
     <div class="row">
       <div class="col-sm orange">A</div>
       <div class="col-sm orange">B</div>
       <div class="col-sm orange">C</div>
     </div>
     <div class="row"> 
       <div class="col-lg orange">A</div>
       <div class="col-lg orange">B</div>
       <div class="col-lg orange">C</div>
     </div>
     <div class="row">
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
       <div class="col-lg-1 orange">1</div>
     </div>
     <div class="row">
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
       <div class="col-lg-1 col-md-2 orange">1</div>
     </div>
     <!-- 入れ子 -->
     <div class="row">
       <div class="col-sm-9 orange">
         Level 1: 9
         <div class="row">
           <div class="col-sm-8 orange">
             Level 2: 8          
          </div>          
     <div class="col-sm-4 orange">
             Level 2: 4
           </div>
         </div>
       </div>
       <div class="col-sm-3 orange">
         Level 1: 3
       </div>
     </div>
   </div>
   <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.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous">
</script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous">
</script>
 </body>
 </html>

※ポイント

  • class = “container”(固定枠)か”container-fluid”(流動枠)の中に書く
  • class = “row”の中に書く
  • class = “col-{prefix}-{columns}”の形で書くこと
  • class = {columns}は合計が12になるようにする

補足:prefixはsm,lg,md,などの決められた画面幅を下回った時表示を変える指定でxs(スマホなど〜767px)からlg(PC大画面1120px~)となっている