14分でJavaScriptの基本を

by Jeremy Thomas(日本語訳 岡田洋)

これは Jeremy Thomas 氏のJavaScript in 14 minutes岡田洋が日本語に翻訳したものです。 著作権等はオリジナルのものに準じます。

Web design in 4 minutesを習得したので、Webのためのプログラム言語 JavaScriptを勉強しましょう。

あなたは 携帯やスマートフォンタブレットを使っていますね😱

心配しないで下さい! 😊

このチュートリアルはこのプラットフォーム用に最適化されていませんが。それでもあなたがこれを読んで楽しめるように作成しました。

あとでパソコンでここに来て全てのの機能を体験してください!

とにかく始めてみましょう!

あなたは以下の物を使っているとおもいます:

オペレーティングシステム(OS)
Webブラウザ

上記の情報が正しければ始めましょう.

あなたはここにいた事があるようです! 😃
どちらか選んで下さい:前回の場所から始める or 最初から始める

Console(コンソール) ツール

お使いのブラウザには、WebページにJavaScriptを直接入力できるデベロッパーコンソールが付属しています。

あなたは Google Chromeを使っているので、JavaScript コンソールを Ctrl+Shift+J または F12 ++J で開いて下さい。
あなたは Mozilla Firefoxを使っているので、Web コンソールを Ctrl+Shift+K または F12 ++K で開いてください。
あなたは Microsoft Edge を使っているので、JavaScript コンソールを F12 で開いてください。
あなたは Opera を使っているので、JavaScript コンソールを Ctrl+Shift+I ++I で開いてください。

あなたは Apple Safari を使っていますね。

  1. +,Preferencesを開いて下さい。
  2. Advanced tab を選択してください。
  3. Show Develop menu in menu barを有効にしてください。
  4. JavaScript コンソールを++Cで開いてください。

ちゃんと動いていると確認しましょう!

コンソールで以下の物を入力して、Enter(↵)キーを押してください。

よく出来ました!

あなたはいま alert()という全てのWebブラウザにあらかじめ組み込まれたJavaScript 関数使用しました。

しかし正確には何をしたのでしょう?

Function(関数)コンセプト

あなたは alert()という関数(function)'Hello World!'という 引数呼び出しました

あなたは基本的に以下の4つのことをしました。

関数の 名前 を入力しました
alert('Hello World!')
開き括弧を入力し括弧を開きました
alert('Hello World!')
引数を一つ入力しました
alert('Hello World!')
閉じ括弧を入力し括弧を閉じました。
alert('Hello World!')

引数がない場合もあります。
複数の引数がある場合もあります。
関数には、ほとんど場合引数が必要ですが引数が省略できる場合もあります。

この場合、 alert() は一つの引数を必要とします。

しかしどんな 型の引数 なのでしょうか?

String(文字列)

あなたがテキストを扱う時には、文字列(string)を使います。文字列(string)は連続した文字(character)です。この場合、連続した12文字を使いました。 Hello World!。 この文字列には英大文字、英小文字、空白、ビックリマークを含んでいました。

文字列の 開始位置終了位置を指定するため、文字列をクオーテーションマーク で囲みます。(シングル−クオート ' でもダブルクオートでも "開始と終了で一致していればOKです。)

あなたが 'Hello World!' という文字列(string)を定義したとき:

  1. シングルクオートを入力しました。
  2. 文字を 12 文字入力しました。
  3. もう一度 シングルクオートを入力しました。

文字列の代わりに 数値を使ったらどうなるでしょうか?

Number(数値)

他のプログラム言語と同様、 JavaScriptも 数値(number)を扱うことができます。

これらの数値は、大きくても小さくてもよく、小数点があってもなくてもよく、数値演算によって結合されます。

以下のものをコンソールに入力して(もしくは貼りつけて)下さい。

完璧です!

以下の事に注目してください

  • あなたは +* という 演算子(operator)を使いました。
  • 計算の順序は 以下のとおりです。 最初に 5 * 3 が計算され次に 9 + 15 が計算されました。
  • * の周りの 空白 は出力に関係しません。 それらは単に私たち(人間!)がコード読む時にのみ役立ちます。

あなたは いろんな所で数値を見るでしょう。

ブラウザの寸法情報

数値はあらゆる所に現れます! とくにWebブラウザでは.

例を上げると、あたたが今使っているWebブラウザのウィンドウはあなたがJavaScriptを使って取得できる幅(width)をもっています。

以下のように入力してください。

alert(window.innerWidth)
クリップボードにコピー

ワンダフル!

これはあなたのブラウザのウィンドウの幅が 1680 ピクセルであることを意味します。

あなたが想像しているように window.innerHeight (ウィンドウの(内側の)高さ) も存在します。また現在のスクロール位置である window.scrollY も存在します。

けれど window とは 実際には何でしょうか?

Object(オブジェクト)

window は JavaScript のオブジェクト(object)です。

innerWidthwindow オブジェクト(object) の プロパティ(property)です。
このプロパティにアクセスするには、 windowオブジェクト内に存在するinnerWidthを指定するためにドット. を使用しました。

JavaScriptのオブジェクト(object)は基本的に他のものを含むです。

例えば window オブジェクトは以下のような物も含んでいます。

  • window.origin は文字列です。
  • window.scrollY は数値です。
  • window.location はオブジェクトです。

window が別のオブジェクトである location を含んでいます。これは JavaScript の オプジェクトの典型的な例です…

入れ子(Nesting)になった情報

オブジェクトのプロパティそれ自身がオブジェクトにであることがあります。

window.location もまたオブジェクトなのでそれ自身のプロパティを持ちます。 それらのプロパティーにアクセスするためには、さらにもう一度ドット . とプロパティーの名前を追加します。

例えば href というプロパティーがあります。

alert(window.location.href)
クリップボードにコピー

素晴らしい!

あなたはこのWebページの完全なURLを表示しました。どうしてこうなったのでしょうか。

  • window はオブジェクト(object)です
  • location もオブジェクト(object)です
  • href は文字列(string)です

オブジェクトの入れ子の深さに制限はありません。
オブジェクトが持つことができるプロパティの数にも制限はありません。

これまで見てきたように、オブジェクトのプロパティは、文字列、数値、オブジェクト、さらには関数のいずれの型であってもかまいません。後者の場合、それはこう呼ばれます…

メソッド(Method)情報

オブジェクトのプロパティ関数である場合、メソッドと呼ばれます。

実際には、これまで使用してきたalert()関数はwindowオブジェクトのメソッドです!

なるほど OMG!

windowはブラウザのトップレベルのオブジェクトなので、すべてのプロパティとメソッドに直接アクセスできます。

そのため、 location.hrefと入力するのは、window.location.hrefと入力するのと同じです 。

同じようにalert()window.alert()と同じです。

オブジェクトは、同じ名前と可視範囲(scope)でいくつかのプロパティをグループ化し、データ内に階層を定義するのに便利です。それは、枝が他の小さな枝を持つことができる木のようなものです。

しかし、もしあなたがリスト(一覧表)のようなものしか必要としないなら…

Array(配列)

JavaScript のArray(配列)は、あたかも順序付きのリスト(一覧表)のように、複数の値を含むことができる型です。

alert()関数に3つの文字列が入った配列を渡しましょう。

alert(['What', 'is', 'up'])
クリップボードにコピー

そのとおり!

alert関数を呼び出す構文はすでに分かっていますね。alert(パラメータ)です。

この場合、パラメータは次のように定義した3つの項目を持つ配列です。

開き角括弧を入力し角括弧を開きました
['What', 'is', 'up']
最初の項目の文字列を入力しました
['What', 'is', 'up']
項目を区切るためにコンマを入力しました
['What', 'is', 'up']
他の2つの項目を配列(リスト)に追加しました
['What', 'is', 'up']
閉じ角括弧を入力し角括弧を閉じました
['What', 'is', 'up']

配列には文字列、数値、オブジェクト、他の配列、さらに色々なタイプの項目を含めることができます:

次の短いコードを試してみてください。

alert([2 + 5, 'samurai', true])
クリップボードにコピー

True(正しい)!

最初の項目2 + 5は数値です。2番目の項目'samurai'は文字列です。

3番めのパラメータは何でしょうか? それはクオーテーションマークで囲まれていないので文字列ではなく、数字でもありません。

それでは、一体これは何でしょう?

Boolean(真偽値)

文字列と数値には無限のとり得る値がありますが、 Boolean(真偽値)true(真)またはfalse(偽)のいずれかの値にしかなりません。

今、alert()関数と3つの項目をもつ配列を一つの行に含めているの、コードが読みにくくなっています。

配列を独自の行に移動して2つに分割してはどうしょうか。

Variables(変数) コンセプト

配列を変数に移動することができます。

変数は、特定のを格納する入れ物です。それは名前を持っています(それを特定して再利用することができます)。そしてをもっています。(後で値を更新することができます)。

var my_things = [2 + 5, 'samurai', true];
  • my_things(僕の物) は変数の 名前 です。
  • [2 + 5, 'samurai', true] は変数の です。

分解すると次のとおりです。

キーワード varを入力しました
var my_things = [2 + 5, 'samurai', true];
変数の名前を入力しました
var my_things = [2 + 5, 'samurai', true];
代入演算子=を入力しました。
var my_things = [2 + 5, 'samurai', true];
配列を入力しました。
var my_things = [2 + 5, 'samurai', true];
文を終了するためにセミコロンを入力しました。
var my_things = [2 + 5, 'samurai', true];

これは my_things[2 + 5, 'samurai', true]と同じであることを意味します。

alertを関数を書き直しましょう。

今や2つの文があるので、あるものがどこで終わり、次のものが始まるかを知るためにセミコロン;で区切る必要があります

var my_things = [2 + 5, 'samurai', true];
alert(my_things);
クリップボードにコピー

ワンダフル!

配列に変数を格納することで、コードを読みやすくしました 。

この変数にはいくつかの項目の配列(リスト)が含まれていますが、配列(リスト)の1つの項目のみを扱うこともできます。

配列の特定の項目にアクセスするには、まず配列内のインデックス(位置)を知る必要があります。 このインデックスは大括弧で囲む必要があります 。

どの項目が表示されるのか推測できますか?

var my_things = [2 + 5, 'samurai', true];
alert(my_things[1]);
クリップボードにコピー

推測しました!

2番目のアイテムが現れました! プログラミングでは、インデックスは0から始まります。

配列の名前を入力しました
my_things[1]
開き角括弧を入力しました
my_things[1]
アクセスしたいアイテムのインデックスをタイプしました
my_things[1]
閉じ角括弧を入力しました
my_things[1]

変数もやはりオブジェクトです! つまり、変数にもプロパティメソッドがあります 。

たとえば、my_thingsにはlengthというプロパティがあります。

var my_things = [2 + 5, 'samurai', true];
alert(my_things.length);
クリップボードにコピー

正解です!

現在、配列には3つの項目があります。 my_things項目を追加または削除すると、length値がそれに応じて変更されます。

可読性とプロパティを持っていることは便利ですが、変数の主なポイントは編集可能であることです。後で値を変更することができます!

var my_things = [2 + 5, 'samurai', true];
alert(my_things);
my_things = [2 + 5, 'samurai', true, 'LOVE'];
alert(my_things);
クリップボードにコピー

やったー!

警告(alert)ボックスは2つ表示されましたが、値は異なります。これは、最初の呼び出しと2番目の呼び出しの間で、 my_thingsの値が更新されたためですmy_thingsの4番目の項目として文字列'LOVE'が追加されました。

2回目にmy_thingsに値を割り当てる時には、varキーワードを使用していないことに注意してください。これは、上記の2行で定義されたmy_things変数を編集しているためです。

新しい変数を作成するときのみ、キーワードvarを使用します。 新しい変数を編集するときは使用しません。

私はあなたに変数がメソッドを持っていると言ったことを覚えていますか?(オブジェクトなので)配列の値を編集する別の方法は、 push()メソッドを使用する方法です。

var my_things = [2 + 5, 'samurai', true];
alert(my_things);
my_things.push('The Button');
alert(my_things);
クリップボードにコピー

魅力的です!

my_things配列は4項目に変わりました。

push()メソッドは配列を変更しましたが、他のものは単純に値を返します。

var my_things = [2 + 5, 'samurai', true];
alert(my_things.includes('ninja'));
クリップボードにコピー

ここには ninja はいないようです!

includes()メソッドは文字列'ninja'が配列内に存在するかどうかを調べます。今は存在しなかったので、メソッドはfalse という Boolean(真偽値)を返しました。

実際、Boolean(真偽値)を扱うときは、キーワードtrueまたはfalseを使うことは非常にまれです。通常、booleanは関数呼び出し(includes())や比較の結果として存在します。

以下は より大きい 比較の例です。

alert(window.innerWidth > 400)
クリップボードにコピー

いよいよ素晴らしい!

これは、ブラウザのウィンドウが400ピクセルより広いことはないという結果を示します。

数値 と比較したい最初の項目 を入力しました。
window.innerWidth > 400
"より大きい" 演算子を入力しました。
window.innerWidth > 400
2番目の項目数値を入力しました
window.innerWidth > 400

+*と同じように、 >はJavaScript 演算子です。

"より大きい"演算子>で比較すると、Boolean(真偽)値が得られます。

比較結果には2つの結果(trueまたはfalse) しかないので、コードが何か 決定を下す必要がある場合に便利です…

Conditional statement(条件文)コンセプト

Conditional statement(条件文)は、プログラミングにおける最も重要な概念の1つです。特定の条件が満たされている場合にのみ 、コードで特定のコマンドを実行することができます。これらの条件は、例えば、

  • ユーザーの入力(正しいパスワードが入力されているか?)
  • 現在の状態(今は昼か夜か?)
  • 特定の要素の値(この人物は18歳以上か?)

今のところ、あなたが私のドメインにいた場合にのみアラートボックスを起動しましょう!

if (window.location.hostname == 'hiroshiokada.github.io') {
  alert('Welcome on my domain! 🤗')
}
クリップボードにコピー

単にこのコードをコピーして貼り付けるのではなく、このコードを入力ししたい場合は(単純にEnterを押すと実行してしまうので2行目を入れる前に) Shift + Enterを押してコンソールに改行を追加してください !

実にすごいです!

ここでは別の比較を行っていますが、代わりに等しい 演算子==使用しています。

キーワード if を入力した
if (window.location.hostname == 'hiroshiokada.github.io') {
開き括弧を入力して括弧を開きました
if (window.location.hostname == 'hiroshiokada.github.io')) {
比較演算子をタイプししました
if (window.location.hostname == 'hiroshiokada.github.io') {
閉じ括弧を入力してして括弧を閉じました
if (window.location.hostname == 'hiroshiokada.github.io') {
開き波括弧を入力して波括弧を開きました
if (window.location.hostname == 'hiroshiokada.github.io') {
直前の条件がである場合にのみ実行されるコードブロックを入力しました
  alert('Welcome on my domain! 🤗')
閉じ波括弧を入力して波括弧を閉じました
}

アラートボックス表示されたので、 hostnameが実際 'hiroshiokada.github.io'等しいことを意味します。

比較がtrue返すケースを処理しました。

反対の場合を処理するために、ホスト名がhiroshiokada.github.ioでない場合、非等価演算子!=使用できます。

if (window.location.hostname != 'hiroshiokada.github.io') {
  alert('Please come back soon! 😉')
}

このスニペット(コードの断片)を試してみると、何もトリガーしないことがわかります! (このチュートリアルが別のドメインにコピーされていない限り、😆)

両方のケースを同時に処理したい場合はどうすればよいでしょうか? if文を2行書くことができます。 しかし、一方のステートメントは他方のステートメントとは まったく反対であるため、それらをelseステートメントと組み合わせることができます。

if (window.location.hostname == 'hiroshiokada.github.io') {
  alert('Welcome on my domain! 🤗')
} else {
  alert('Please come back soon! 😉')
}
クリップボードにコピー

いい調子です!

この条件文の一式で、次のことを確認できます。

  • 2つのアラートのうちの1つだけがトリガされます。
  • すべてのケース(場合)をカバーしているので、2つのアラートの少なくとも一方が、トリガされます

残りのすべてのケース(場合)をカバーするにはelseが便利です。しかし、時には2つ以上のケース(場合)を処理したい場合もあります。

else ifを使用して、中間の文を追加することにより、複数のケース(場合)を処理することができます。

if (window.innerWidth > 2000) {
  alert('Big screen! 🔥')
} else if (window.innerWidth < 600) {
  alert('Probably a mobile phone 📱')
} else {
  alert('Decent size 👍')
}
クリップボードにコピー

やりました!

1つの比較がtrueを返すとすぐに、それがトリガーされ、後続のすべてのステートメントは無視されます。だからこそ、警告箱が1つしか現れなかったのです!

条件文は、 キーワード ifelseを使用し、その後に括弧というパターンを使用します 。

キーワード/括弧という組み合わせパターンは、別の必須のプログラミングコンセプトにも現れます…

Loop(ループ)コンセプト

コードブロックを一定回数実行する場合は、JavaScript のループを使用できます 。

あなたはこのスニペット(コードの断片)がいくつの警告ボックスをトリガーするかを当てられますか?

for (var i = 0; i < 3; i++) {
  alert(i);
}
クリップボードにコピー

そのとおりです!

正確に3つの警告ボックスが表示されました。起こったことを分解して見ましょう。

  • var i = 0初期状態です
    Before the loop even starts, the variable i is assigned a value of zero 0.
  • i < 3条件式です。
    ループの繰り返しごとに、この比較をチェックします。
    それがtrueであれば、ブロック内のコードを実行します。
    false場合、ループを終了します。
  • i++インクリメント(増やす)式です。
    コードのブロックが実行されている場合は、この式が実行されます。
    この場合、 iの値は1だけインクリメント(増や)されます。

これを実装した方法は次のとおりです。

キーワード forタイプしました
for (var i = 0; i < 3; i++) {
開き括弧を入力し括弧を開きました
for (var i = 0; i < 3; i++) {
初期状態を入力しました
for (var i = 0; i < 3; i++) {
式を区切るためにセミコロンを入力しました
for (var i = 0; i < 3; i++) {
比較式によるチェックを入力しました
for (var i = 0; i < 3; i++) {
式を区切るためにセミコロンを入力しました
for (var i = 0; i < 3; i++) {
インクリメント式を入力しました
for (var i = 0; i < 3; i++) {
閉じ括弧を入力して括弧を閉じました
for (var i = 0; i < 3; i++) {
開き波括弧を入力して波括弧を開きました
for (var i = 0; i < 3; i++) {
比較チェックがである場合にのみ実行されるコードのブロックを入力しました
  alert(i);
閉じ波括弧を入力して波括弧を閉じました
}

ループの各反復を分析してみましょう。

反復 iの値 テスト アラートをトリガーするか
1回目 0 0 < 3 Yes
2回目 1 1 << 3 Yes
3回目 2 2 < 3 Yes
4回目 3 3 < 3 No!

このループにより、N回アクションを繰り返すことができました。それがコンピュータの目的です。

これまで説明してきたvariableの中で、とりわけloop(繰り返す)意味が有ります。

訳注: (variable = 変数/価値のあるもの, loop = ループ文/繰り返して勉強する) を掛けています。

配列をループツール

プログラミングではしばしば配列の各項目に対して同じアクションを繰り返すことが多いため、ループの候補となります。

配列の各項目に対して警告ボックスをトリガーしたいとしましょう。配列のに項目があるのと同じ数のalert()文を書くことができますが、 この解決法は面倒で効果がありません! エラーが発生しやすく、非常に沢山の項目がある配列にスケールアップすることは非現実的です。

プログラミング言語は私たちの仕事をシンプルにするためにあるので、より良い方法を見つけましょう。私たちはすでにいくつか知っています。

  • 配列の長さ(項目数)を取得する方法はわかっています
  • インデックスを使用して配列の項目にアクセスする方法はわかってます
  • 変数iをアクセスすることができます。そして簡単に1ずつ増加できます

これらの情報を組み合わせることで、次のスニペットを思いつくことができます。

var my_things = [2 + 5, 'samurai', true];
for (var i = 0; i < my_things.length; i++) {
  alert(my_things[i]);
}
クリップボードにコピー

順々に!

1つ1つ、配列の項目がそれぞれのアラートボックスに表示されました。

ループを使用すると配列の各項目を処理するプロセスが簡素化されますが、 forブロックを手動で作成し、各ループの後にインクリメントする目的だけの新しい変数 iを作成する必要がありました。

あなたが何を考えているか知っていますよ。「もっと良い方法があるはずだ!

forEach ループツール

配列には実際にforEach()というメソッドがあり、配列内の各項目に対してタスクを実行できます。

var my_things = [2 + 5, 'samurai', true];
my_things.forEach(function(item) {
  alert(item);
});
クリップボードにコピー

良くなりました!

いくつかの改善点に注目してください。

  • iという変数を使わなくて済みました
  • 配列のlengthにアクセスする必要がなくなりました。
  • 配列の各アイテムにアクセスするためにインデックスmy_thing[i]のように使う必要がなくなりました

alert()関数の構文を覚えていますか? それはalert(parameter)でした

注意深く見ると、 forEach()構文は他のメソッドと同じです。 これはforEach(パラメータ)ですが、今、パラメータは3行にまたがる関数になっています。

ここまで、いくつかの関数とメソッドを使用しました。

  • alert()関数(またはウィンドウメソッド)
  • push()配列メソッド
  • includes()配列メソッド
  • forEach()配列メソッド

私たちは関数を呼び出す方法を知っていますが、では関数をどのように作成するのでしょうか?

カスタム関数の作成情報

プログラミング言語の力は、 あなたの自身のニーズに合った独自の関数を作成する能力です。

if/elseforで使用したキーワードと括弧の組み合わせを覚えていますか? ご想像の通り、カスタム関数の作成もほぼ同じパターンです!

唯一の違いは関数が名前を必要とするということなので、私はほぼと言っています!

greet()というnameという1つのパラメータを持つ関数を作成し、 すぐにそれを呼び出してみましょう:

function greet(name) {
  var message = 'Hey there ' + name;
  alert(message);
}
greet('Alex');
クリップボードにコピー

Greetings(歓迎)!

あなたは最初の関数を作成しました!それは単純なものですが、それは多くを教えることができます。

いくつかのことに注目してください。

  • 関数の名前greetです
  • パラメータnameと呼ばれ、値のコンテナ(入れ物)として機能するため、変数のようなものです
  • 私たちはmessageと呼ばれる(文字列)変数を作成しています。その値は'Hey there ' + nameです
  • この+記号+は、2つの文字列を連結して1つの長い文字列を作成するものです
  • alert()関数を呼び出しmessage変数をパラメータとして使用します
  • 関数を作成した後、パラメータとして'Alex'を渡して呼び出します

各段階ににブレークダウンすると以下のようになります。

キーワード functionを入力しました
function greet(name) {
関数の名前を入力しました
function greet(name) {
開き括弧を入力して括弧を開きました
function greet(name) {
nameというパラメータを作成しました
function greet(name) {
閉じ括弧を入力して括弧を閉じました
function greet(name) {
開き波括弧を入力して波括弧を開きました
function greet(name) {
関数が呼び出された時にのみ実行されるコードブロックを入力しました
  var message = 'Hey there ' + name;
  alert(message);
閉じ波括弧を入力して波括弧を閉じました
}
パラメータとして文字列を指定して関数を呼び出しました
greet('Alex');

最後にgreet()関数を呼び出さない限り、何も起こりません!これは、 alert()コールがgreet()スコープの内側にあるため、親関数greet()自体が呼び出されない限りトリガされないためです。

基本的には、 greet() を作成 greet()するだけでは、ブラウザーに「ちょっと、私はこの新しい関数を作成しました。だから、ある時点で呼び出す場合は、何かを実行してください!」 と言っているだけです。

そのため、最後にgreet()呼び出すと、ブラウザはそのコンテンツを実行します。このコンテンツはalert()呼び出すことになります。

関数は2段階のプロセスであることを理解することが重要です。最初に作成し後で呼び出すことです。

実際には、私たちが使ってきたalert()関数はすでに事前に作成されています。それはちょうどあなたのブラウザのどこかに存在します。

とにかく、すでに14分で多くのことを学習しました!
それでは、 次には何をやったらよいでしょうか?

次のステップ 大勝利!

JavaScriptを学ぶ

私たちここでは基本のみをカバーしています。しかし、心配しないでください!オンラインで入手できるたくさんのリソースがあります!

私がお勧めするいくつかの無料のリソースは以下のとおりです:

あなたがビデオチュートリアルを好むなら、これらをチェックしてください。Udemy courses:

あなたが急いでいる場合は、この短いコースを試してみてください!

HTMLとCSSを学ぶ

JavaScriptは、Webページを作るものの3分の1に過ぎません!あなたは、HTMLCSSも知る必要があります 。

幸いにも、私はあなたが参照できる2つの無料のリファレンスを作成したので、各言語が提供するすべてを学ぶことができます!

私のCSSフレームワークを学ぶ

私はBulma -- 私の作った Flexbox に基づいたオープンソースのCSSフレームワーク -- で、このページを設計しました。 チェックしてください!

私の本を読んでください

I wrote a 44-page PDF called "CSS in 44 minutes" which teaches how to build your own personal webpage from scratch with HTML5 and CSS3. 44ページのCSS in 44 minutes(44分でCSS) 」というPDFを書いて、 HTML5やCSS3を使って自分の個人用ウェブページを最初から作り上げる方法を教えています。

ボーナスとして、本書にはJavaScriptに関する小さなも含まれています。ここでは、関数、条件文、オブジェクト、文字列について説明し、CSSとのやりとり方法についても説明します。

私は今、あと1つしか残っていることがないと思います…

共有し、サポートしてください! 😍

読んでくれてありがとう!

@jgthmsが作りました
(日本語訳 岡田洋)